Slightly turning turtles at random.
Log in to post a comment.
Canvas.setpenopacity(0.25); const participants = 4096; const turniness = 2; const seed = Math.random()*999; let a, b; let turtles = [...Array(participants)].map(() => new Turtle()); turtles.map((turtle, idx) => { turtle.penup(); turtle.goto(120-idx*240/participants, 180); turtle.seth(270+5*Math.sin(seed+0.6*idx+Math.sin(seed+0.5*idx))); turtle.pendown(); turtle.speed = 0.5+Math.random(); turtle.height = Math.random() > 0.5 ? 20+30*Math.random() : 50+20*Math.random(); turtle.head = Math.random() > 0.1 ? 0 : 10+30*Math.random(); turtle.headWidth = Math.random() > 0.5 ? 1+3*Math.random() : Math.random(); turtle.headAngle = Math.random() > 0.5 ? 15+15*Math.random() : 0; }) function walk(i) { turtles.map(turtle => { turtle.right(turniness*(-0.5+Math.random())); turtle.speed *= (1-Math.random()*0.01); turtle.forward(turtle.speed); if (turtle.head > 0 && turtle.y() < (20 - turtle.height + turtle.head)) { a = turtle.clone(); b = turtle.clone(); a.left(45+Math.random()*15); a.forward(turtle.headWidth); b.right(45+Math.random()*15); b.forward(turtle.headWidth); turtle.left(turtle.headAngle*(1-2*(i%2))); } }); turtles = turtles.filter(turtle => turtle.speed > 0.2 && turtle.y() > -100); return turtles.length > 0; }