import {geoProjection as projection} from "d3-geo"; import {abs, epsilon} from "./math.js"; export function ginzburg8Raw(lambda, phi) { var lambda2 = lambda * lambda, phi2 = phi * phi; return [ lambda * (1 - 0.162388 * phi2) * (0.87 - 0.000952426 * lambda2 * lambda2), phi * (1 + phi2 / 12) ]; } ginzburg8Raw.invert = function(x, y) { var lambda = x, phi = y, i = 50, delta; do { var phi2 = phi * phi; phi -= delta = (phi * (1 + phi2 / 12) - y) / (1 + phi2 / 4); } while (abs(delta) > epsilon && --i > 0); i = 50; x /= 1 -0.162388 * phi2; do { var lambda4 = (lambda4 = lambda * lambda) * lambda4; lambda -= delta = (lambda * (0.87 - 0.000952426 * lambda4) - x) / (0.87 - 0.00476213 * lambda4); } while (abs(delta) > epsilon && --i > 0); return [lambda, phi]; }; export default function() { return projection(ginzburg8Raw) .scale(131.747); }