function* Chart(projection, render) {
const context = DOM.context2d(width, height);
const path = d3.geoPath(projection.fitExtent([[1, 1], [width - 1, height - 1]], sphere).precision(0.2), context);
context.canvas.style.maxWidth = "100%";
let state;
while (true) {
const t = performance.now();
projection.rotate([vx * t, vy * t]);
context.clearRect(0, 0, width, height);
context.save();
state = render(context, path, state);
context.restore();
yield context.canvas;
}
}