|
- import {geoProjection as projection} from "d3-geo";
- import {mollweideBromleyTheta} from "./mollweide.js";
- import {abs, cos, epsilon, pi, quarterPi, sin, sqrt2} from "./math.js";
-
- var k = 2.00276,
- w = 1.11072;
-
- export function boggsRaw(lambda, phi) {
- var theta = mollweideBromleyTheta(pi, phi);
- return [k * lambda / (1 / cos(phi) + w / cos(theta)), (phi + sqrt2 * sin(theta)) / k];
- }
-
- boggsRaw.invert = function(x, y) {
- var ky = k * y, theta = y < 0 ? -quarterPi : quarterPi, i = 25, delta, phi;
- do {
- phi = ky - sqrt2 * sin(theta);
- theta -= delta = (sin(2 * theta) + 2 * theta - pi * sin(phi)) / (2 * cos(2 * theta) + 2 + pi * cos(phi) * sqrt2 * cos(theta));
- } while (abs(delta) > epsilon && --i > 0);
- phi = ky - sqrt2 * sin(theta);
- return [x * (1 / cos(phi) + w / cos(theta)) / k, phi];
- };
-
- export default function() {
- return projection(boggsRaw)
- .scale(160.857);
- }
|