import {geoProjection as projection} from "d3-geo"; import {abs, cos, epsilon, tan} from "./math.js"; export function nellHammerRaw(lambda, phi) { return [ lambda * (1 + cos(phi)) / 2, 2 * (phi - tan(phi / 2)) ]; } nellHammerRaw.invert = function(x, y) { var p = y / 2; for (var i = 0, delta = Infinity; i < 10 && abs(delta) > epsilon; ++i) { var c = cos(y / 2); y -= delta = (y - tan(y / 2) - p) / (1 - 0.5 / (c * c)); } return [ 2 * x / (1 + cos(y)), y ]; }; export default function() { return projection(nellHammerRaw) .scale(152.63); }