{
const W = 540;
const N = 200;
const r = Math.PI * 2 / N;
let x = 0;
let y = 0;
let t = 0;
const ctx = DOM.context2d(W, W);
while (true) {
ctx.fillStyle = 'black';
ctx.fillRect(0, 0, W, W);
for (let i=0; i<N; i++) {
for (let j=0; j<N; j++) {
[x, y] = [
Math.sin(y + i) + Math.sin(x + (r * i + t)),
Math.cos(y + i) + Math.cos(x + (r * i + t)),
];
ctx.fillStyle = `rgb(${i}, ${j}, 99)`;
ctx.fillRect(
x * N / 2 + W / 2,
y * N / 2 + W / 2,
2,
2,
);
}
}
t += 0.01;
yield ctx.canvas;
}
}