{
const context = DOM.context2d(height, height);
context.translate(height / 2, height / 2);
context.beginPath();
context.arc(0, 0, height / 2 - 1, 0, 2 * Math.PI);
context.stroke();
context.beginPath();
context.arc(0, 0, height / 2 - 2, 0, 2 * Math.PI);
context.stroke();
context.fillStyle = "#ccc";
context.fill();
context.clip();
context.lineWidth = 0.1;
const random = d3.randomNormal();
do {
context.fillStyle = "#ffffff07";
context.fillRect(-height / 2, -height / 2, height, height);
context.fillStyle = "black";
for (let i = 0; i < points.length / 2; i++) {
points[2 * i] += random();
points[2 * i + 1] += random() + 0.05;
if (points[2 * i] ** 2 + points[2 * i + 1] ** 2 > (height / 2 - 2) ** 2) {
points[2 * i] *= 0.99;
points[2 * i + 1] *= 0.99;
}
}
context.beginPath();
voronoi.update().render(context);
context.stroke();
yield context.canvas;
} while (true);
}