xxxxxxxxxx
let startTime = 0.0;
let drawTime = 0.0;
let lastPoint;
let pg;
function setup() {
createCanvas(600,600);
background(245);
reset();
}
function reset(){
startTime = millis();
drawTime = 0.0;
pg = createGraphics(width, height);
}
/*
Cardioid.
*/
function draw() {
let r0 = 100;
let r1 = 100;
let t = ( millis() - startTime )*0.001;
let dt = t - drawTime;
background(245);
//This is the inner ball
let center = createVector(0.5*width, 0.5*height);
fill(255);
ellipse(center.x, center.y,2*r0,2*r0);
let orbit = createVector(cos(t),sin(t)).mult(r0) ;
let origin = p5.Vector.add(center, createVector(1,0).mult(r0)) ;
let p1 = p5.Vector.add(center,orbit);
let r = p5.Vector.sub(p1,origin).mag();
noFill();
ellipse(p1.x, p1.y,2*r,2*r);
line(origin.x,origin.y,p1.x,p1.y);
ellipse(p1.x, p1.y,5,5);
ellipse(origin.x, origin.y,5,5);
if(dt > TWO_PI/100) {
pg.noFill();
pg.strokeWeight(1);
pg.stroke(0,50);
pg.ellipse(p1.x, p1.y,2*r,2*r);
drawTime = t;
}
image(pg,0,0,width,height);
if (t > TWO_PI) {
reset();
}
}