canvas = {
const size = width / 1.5;
const context = DOM.context2d(size, size);
const planet = [size / 4, 0];
const moon = [planet[0] * moonRadius, 0];
let counter = 0;
const speedFactor = 2e-3;
context.fillStyle = "#302010";
context.fillRect(0, 0, size, size);
context.lineWidth = 2;
let pmx = undefined, pmy = undefined;
while (true) {
context.fillStyle = "#302010";
context.globalAlpha = 0.01;
context.save();
if (counter % 60 == 0) {
context.fillRect(0, 0, size, size);
}
context.globalAlpha = 1;
context.fillStyle = '#F5EBB0';
context.strokeStyle = '#7F4B61';
counter += 1;
context.translate(size/2, size/2);
context.beginPath();
context.arc(0, 0, 4, 0, 2 * Math.PI)
context.fill()
context.beginPath();
context.arc(0, 0, planet[0], planet[1] - 0.8 + counter * speedFactor * speedPlanet, planet[1] + counter * speedFactor * speedPlanet);
context.stroke()
context.strokeStyle = '#ACB852';
const [px, py] = toCartesian(planet[0], planet[1] + counter * speedFactor * speedPlanet);
const [_mx, _my] = toCartesian(moon[0], planet[1] + counter * speedFactor * speedMoon);
const mx = px + _mx;
const my= py + _my;
pmx = pmx === undefined ? mx : pmx;
pmy = pmy === undefined ? my : pmy;
console.log([pmx, pmy, mx, my])
context.beginPath();
context.moveTo(pmx, pmy);
context.lineTo(mx, my);
context.stroke();
context.restore()
pmx = mx;
pmy = my;
if (counter % 10 == 0) {
yield context.canvas;
}
}
}