const playerColor = [255,255,0,128];
const grassColor = [98, 120, 66];
const grassDistance = 20;
this.root = createVector(x, height);
this.joints = Array(jointCount)
let colour = color([...grassColor, alpha]);
return { angle: 0, angularVel: 0, color: colour };
let pos = this.root.copy();
let totalAngle = -PI / 2;
for (let i of this.joints) {
if (pos.dist(player) < playerRadius) {
let sampleL = pos.copy().add(createVector(jointLength, 0).rotate(totalAngle - F));
let sampleR = pos.copy().add(createVector(jointLength, 0).rotate(totalAngle + F));
let d = map(pos.dist(player), 0, 100, 5, 1);
i.angle += F * d * (sampleL.dist(player) > sampleR.dist(player)?-1:1);
pos.add(createVector(jointLength, 0).rotate(totalAngle));
let pos = this.root.copy();
let totalAngle = -PI / 2;
for (let i of this.joints) {
i.angularVel -= sin(i.angle) / 200;
pos.add(createVector(jointLength, 0).rotate(totalAngle));
line(old.x, old.y, pos.x, pos.y);
ellipse(pos.x, pos.y, beanRadius);
for (let x = 20; x < width; x += grassDistance) {
strings.push(new String(x));
player = createVector(mouseX, mouseY);
ellipse(player.x, player.y, playerRadius);