You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
34 lines
844 B
34 lines
844 B
import {geoProjectionMutator as projectionMutator} from "d3-geo";
|
|
import {atan2, cos, halfPi, sin, sqrt} from "./math.js";
|
|
|
|
export function bottomleyRaw(sinPsi) {
|
|
|
|
function forward(lambda, phi) {
|
|
var rho = halfPi - phi,
|
|
eta = rho ? lambda * sinPsi * sin(rho) / rho : rho;
|
|
return [rho * sin(eta) / sinPsi, halfPi - rho * cos(eta)];
|
|
}
|
|
|
|
forward.invert = function(x, y) {
|
|
var x1 = x * sinPsi,
|
|
y1 = halfPi - y,
|
|
rho = sqrt(x1 * x1 + y1 * y1),
|
|
eta = atan2(x1, y1);
|
|
return [(rho ? rho / sin(rho) : 1) * eta / sinPsi, halfPi - rho];
|
|
};
|
|
|
|
return forward;
|
|
}
|
|
|
|
export default function() {
|
|
var sinPsi = 0.5,
|
|
m = projectionMutator(bottomleyRaw),
|
|
p = m(sinPsi);
|
|
|
|
p.fraction = function(_) {
|
|
return arguments.length ? m(sinPsi = +_) : sinPsi;
|
|
};
|
|
|
|
return p
|
|
.scale(158.837);
|
|
}
|
|
|