{
const offscreenContext = DOM.context2d(width, height, 1);
const offscreenPath = d3.geoPath(projection, offscreenContext);
const context = DOM.context2d(width, height);
const path = d3.geoPath(projection, context);
offscreenContext.beginPath();
offscreenPath(topojson.feature(world, world.objects.land));
for (let j = 0, y = j * dy; y < height + r; y += dy, ++j) {
for (let x = (j & 1) * dx / 2; x < width + dx / 2; x += dx) {
if (offscreenContext.isPointInPath(x, y)) {
context.beginPath();
hexagonPath(context, x, y, r);
context.fill();
}
}
yield context.canvas;
}
}