xxxxxxxxxx
63
let r = 50;
let k = 2;
let t = 0;
let j = 0;
let graphEl = [];
function setup() {
createCanvas(400, 400);
}
function draw() {
background(220);
//Center
translate(width / 2, height / 2);
scale(1, -1);
stroke('black');
strokeWeight(1);
line(0, height/2, 0, -height/2);
line(width/2, 0, -width/2, 0);
strokeWeight(2);
noFill();
beginShape();
let i = 0;
let sumX = 0;
let sumY = 0;
let ctr = 0;
for(let t = 0; t < 3*TWO_PI; t+=0.01) {
i += j;
let x = (2*cos(k*t) + cos(2*k*t) + cos(3*k*t)) * r * cos(i);
let y = (2*cos(k*t)+ cos(2*k*t)+ cos(3*k*t)) * r * sin(i);
vertex(x,y);
sumX += x;
sumY += y;
++ctr;
}
endShape();
// Center of Mass
let massX = sumX/ctr;
let massY = sumY/ctr;
graphEl.push([massX,massY]);
strokeWeight(3);
stroke('red');
point(massX,massY);
// Plot in time
strokeWeight(2);
noFill();
beginShape();
for(let i = 0; i < graphEl.length; ++i) {
vertex(i/5-width/2+10, graphEl[i][0]+height/4);
}
endShape();
stroke('blue');
beginShape();
for(let i = 0; i < graphEl.length; ++i) {
vertex(i/5-width/2+10, graphEl[i][1]+height/4);
}
endShape();
j += 0.00005;
}