Oblique Equal Earth

An equal-area world map you re-centre by rotating the globe, not by zooming. It opens on the familiar north-up view and then turns, settling on an oblique orientation with Africa in the middle and upside down. North-at-the-top is a convention about five centuries old, not a property of the planet — and the curved grid in the final view is the projection's own frame, tilted away from the Earth's.

What you are looking at

The Equal Earth projection is equal-area — every country covers screen space in proportion to its true size, so the Mercator distortion that inflates the high latitudes is gone. Because d3.geoEqualEarth().rotate() transforms spherical coordinates before projecting, rotating produces a genuinely oblique Equal Earth rather than a panned one: the projection's zero-distortion line moves with you, so whichever region you swing to the centre is the region drawn most faithfully. Watch the graticule — when the parallels stop being horizontal lines, you are looking at an oblique aspect.

Dragging composes quaternions rather than adding degrees to Euler angles. That is what lets the map travel past a pole instead of jamming against it, keeps horizontal dragging following the cursor even when the world is upside down, and lets a jump between preset views sweep the short arc in orientation space.

Country fills are chosen at build time by colouring the border graph, so no two neighbouring countries share a colour.

Putting this map on your own page

The map is a self-contained custom element. Build it with npm run build:embed, serve equal-earth.js and the data/ directory, then drop this into your page (run=false here, so the sample below is shown rather than executed):

<script type="module" src="/equal-earth.js"></script>
<equal-earth-map data-base="/equal-earth-data" theme="auto"></equal-earth-map>

Everything renders inside a shadow root, so the map cannot disturb your styles and your styles cannot disturb the map.