Concept
For this week’s assignment, I wanted to investigate the code for the wandering behaviour that we covered in class. I found it interesting how the direction of wander isn’t completely random, rather guided in one direction for a bit and then another. When I thought of what in nature wanders, I thought of tadpoles. I wanted to create a realistic tadpole, with its realism enhanced by the wandering behaviour. Working of the code from class, I tweaked some of the numbers and added edges, so that the tadpole can’t escape the bounds of the canvas.
Code Snippet
edges() { let pushed = false; // Check each boundary, reverse direction, and add a force toward the center if needed if (this.pos.x > width - this.r) { this.pos.x = width - this.r; this.vel.x *= -1; pushed = true; } else if (this.pos.x < this.r) { this.pos.x = this.r; this.vel.x *= -1; pushed = true; } if (this.pos.y > height - this.r) { this.pos.y = height - this.r; this.vel.y *= -1; pushed = true; } else if (this.pos.y < this.r) { this.pos.y = this.r; this.vel.y *= -1; pushed = true; } // If a boundary was hit, apply a slight push toward the canvas center if (pushed) { let center = createVector(width / 2, height / 2); let directionToCenter = p5.Vector.sub(center, this.pos); directionToCenter.setMag(0.5); // Set the magnitude of the push this.applyForce(directionToCenter); } }
Embedded Sketch
Reflections
I like the visual effect of my code and I enjoyed learning more about how to modify the wandering behaviour. I struggled the most with creating the boundary for the canvas, and making sure the tadpole didn’t get stuck and keep bouncing on the boundary. With more time, I would incorporate more into the code, such as mousePressed(), to make the project more interactive and experiment more with wander.