let shape = [];
var arrayLength = 60;
function setup() {
createCanvas(1000, 600);
fill(0);
for (var i= 0; i < arrayLength; i++) {
shape[i] = new myShape((i*0.02) + 0.02);
}
}
function draw() {
background(255);
for (var i= 0; i < shape.length; i++) {
shape[i].update();
}
}
class myShape {
constructor(_speed) {
this.pos = createVector(0,0);
this.targetPos = createVector(0,0);
this.mousePos = createVector(width/2, height/2);
this.speed = _speed;
}
update() {
this.mousePos.set(mouseX, mouseY);
this.targetPos.set(this.mousePos);
this.targetPos.sub(this.pos); // find the vector between mouse position and ellipse position
this.targetPos.mult(this.speed); // each step in the animation will move this percentage of the distance to the target position
this.pos.add(this.targetPos);
pushMatrix();
translate(this.pos.x, this.pos.y);
rotate(calcAngle(this.pos, this.mousePos));
triangle(0,0,-5,20,5,20);
popMatrix();
}
calcAngle(p1, p2)
{
return -atan2(p1.x - p2.x,p1.y - p2.y);
}
}
|