d3-geo-projection
Version:
Extended geographic projections for d3-geo.
30 lines (26 loc) • 669 B
JavaScript
import {geoProjection as projection} from "d3-geo";
import {acos, asin, cos, sign, sin, tan, sqrt, sqrt1_2} from "./math.js";
export function littrowRaw(lambda, phi) {
return [
sin(lambda) / cos(phi),
tan(phi) * cos(lambda)
];
}
littrowRaw.invert = function(x, y) {
var x2 = x * x,
y2 = y * y,
y2_1 = y2 + 1,
x2_y2_1 = x2 + y2_1,
cosPhi = x
? sqrt1_2 * sqrt((x2_y2_1 - sqrt(x2_y2_1 * x2_y2_1 - 4 * x2)) / x2)
: 1 / sqrt(y2_1);
return [
asin(x * cosPhi),
sign(y) * acos(cosPhi)
];
};
export default function() {
return projection(littrowRaw)
.scale(144.049)
.clipAngle(90 - 1e-3);
}