var jellyfish = [];
function setup() {
createCanvas(480, 480);
// create an initial collection of jellyfish
for (var i = 0; i < 10; i++){
var rx = random(width);
var ry = random(height);
jellyfish[i] = makeJellyfish(rx, ry);
}
frameRate(30);
}
function draw() {
background("lightblue");
updateJellyfish();
removeJellyfish();
addNewJellyfish();
}
function updateJellyfish(){
// Update the jellyfish's positions, and display them
for (var i = 0; i < jellyfish.length; i++){
jellyfish[i].move();
jellyfish[i].display();
}
}
function removeJellyfish(){
var jellyfishToKeep = [];
for (var i = 0; i < jellyfish.length; i++){
if (jellyfish[i].y + jellyfish[i].size > 0) {
jellyfishToKeep.push(jellyfish[i]);
}
}
jellyfish = jellyfishToKeep; // surviving jellyfish
}
// HOW TO ADD SMOOTHLY!!!
function addNewJellyfish() {
var newJellyfishLikelihood = 0.015;
if (random(0, 1) < newJellyfishLikelihood) {
jellyfish.push(makeJellyfish(random(width), height));
}
}
// update position of jellyfish every frame
function jellyfishMove() {
this.y += this.speed;
}
// draw jellyfish
function jellyfishDisplay() {
fill(this.rr, this.rg, this.rb);
noStroke();
arc(this.x, this.y, this.size, this.size, PI, 2 * PI, CHORD);
push();
translate(this.x, this.y);
noFill();
stroke(255);
strokeWeight(2);
bezier(0, 0, -20, 40, 20, 30, 0, 70);
bezier(-10, 0, -30, 40, 10, 30, -10, 70);
bezier(-20, 0, -40, 40, 0, 30, -20, 70);
bezier(10, 0, -10, 40, 30, 30, 10, 70);
bezier(20, 0, 0, 40, 40, 30, 20, 70);
pop();
}
function makeJellyfish(startingX, startingY) {
var jf = {x: startingX,
y: startingY,
rr: random(0, 200),
rg: random(0, 100),
rb: random(0, 255),
size: random(50, 100),
speed: -1.0,
move: jellyfishMove,
display: jellyfishDisplay}
return jf;
}
When I read about this project, the first “landscape” I thought of was sea animals passing by in a submarine or in an aquarium. As a result, I wanted to create something to imitate the perspective of someone traveling under water, like being in a submarine. I chose to draw jellyfish and to view them from a bird’s eye view (imagine being in a submarine with glass on the floor/bottom). In addition, I chose to randomize the size and colors of the jellyfish. Here are a few sketches of how I decided on perspective/shape.