xxxxxxxxxx
66
let points = [];
function setup() {
createCanvas(windowWidth, windowHeight);
background(255,255,255);
drawTree(width/2,height/2,-PI/2,50,5,PI/10);
points.sort((a, b) => a[4] - b[4]);
points.reverse() ;
}
function draw() {
for(let p of points){
for(let i = 5; i <= p[4]; i--){
turtle = new Turtle(p[0],p[1],p[2],p[3]);
}
}
}
class Turtle {
constructor(x, y, targetX,targetY) {
this.lineOrigin = createVector(x, y);
this.pos = createVector(x, y);
this.target = createVector(targetX,targetY);
let direction = p5.Vector.sub(this.target, this.pos);
this.angle = degrees(atan2(direction.y, direction.x));
this.alive = true;
}
forward(steps) {
let newpos = p5.Vector.fromAngle(radians(this.angle)).setMag(steps).add(this.pos);
line(this.lineOrigin.x, this.lineOrigin.y, newpos.x, newpos.y);
this.pos = newpos;
let d = dist(this.pos.x,this.pos.y,this.target.x,this.target.y);
console.log(d )
if(d <= 5){
console.log('h')
this.alive = false;
}
}
}
function drawTree(x1,y1,direction,length,depth,angle) {
if (depth !== 0){
let x2 = x1 + length * cos(direction);
let y2 = y1 + length * sin(direction);
stroke(0,0,0)
strokeWeight(0.5*depth);
line(x1,y1,x2,y2);
let p = [x1,y1,x2,y2,depth];
append(points,p);
drawTree(x2,y2,direction-angle,length,depth-1,angle);
drawTree(x2,y2,direction+angle,length,depth-1,angle);
}
}