viewof points = {
const context = DOM.context2d(width, height);
const path = d3.geoPath(projection, context);
path.pointRadius(90 * Math.pow(N, -0.5));
context.fillStyle = context.strokeStyle = "steelblue";
context.beginPath();
path({ type: "Sphere" });
context.stroke();
const points = [];
for (let p of SphereDiskSampleNPoints(N)) {
p = stereo_inverse(p);
points.push(p);
context.beginPath();
path({ type: "Point", coordinates: p });
context.fill();
if (Math.random() < 20 / N) yield context.canvas;
}
context.canvas.value = points;
yield context.canvas;
}