d3-jsnext
Version:
d3, but futuristic
39 lines (31 loc) • 996 B
JavaScript
import { d3_geo_conic } from './conic';
import { d3_sgn, ε } from '../math/trigonometry';
import { d3_geo_equirectangular } from './equirectangular';
import { abs } from '../math/abs';
import { d3$geo } from './geo';
var d3$geo$conicEquidistant;
function d3_geo_conicEquidistant(φ0, φ1) {
var cosφ0 = Math.cos(φ0),
n = φ0 === φ1 ? Math.sin(φ0) : (cosφ0 - Math.cos(φ1)) / (φ1 - φ0),
G = cosφ0 / n + φ0;
if (abs(n) < ε) return d3_geo_equirectangular;
function forward(λ, φ) {
var ρ = G - φ;
return [
ρ * Math.sin(n * λ),
G - ρ * Math.cos(n * λ)
];
}
forward.invert = function(x, y) {
var ρ0_y = G - y;
return [
Math.atan2(x, ρ0_y) / n,
G - d3_sgn(n) * Math.sqrt(x * x + ρ0_y * ρ0_y)
];
};
return forward;
}
(d3$geo$conicEquidistant = function() {
return d3_geo_conic(d3_geo_conicEquidistant);
}).raw = d3_geo_conicEquidistant;
export { d3$geo$conicEquidistant, d3_geo_conicEquidistant };