source: node_modules/d3-geo/src/projection/equalEarth.js@ e4c61dd

Last change on this file since e4c61dd was e4c61dd, checked in by istevanoska <ilinastevanoska@…>, 6 months ago

Prototype 1.1

  • Property mode set to 100644
File size: 1.0 KB
Line 
1import projection from "./index.js";
2import {abs, asin, cos, epsilon2, sin, sqrt} from "../math.js";
3
4var A1 = 1.340264,
5 A2 = -0.081106,
6 A3 = 0.000893,
7 A4 = 0.003796,
8 M = sqrt(3) / 2,
9 iterations = 12;
10
11export function equalEarthRaw(lambda, phi) {
12 var l = asin(M * sin(phi)), l2 = l * l, l6 = l2 * l2 * l2;
13 return [
14 lambda * cos(l) / (M * (A1 + 3 * A2 * l2 + l6 * (7 * A3 + 9 * A4 * l2))),
15 l * (A1 + A2 * l2 + l6 * (A3 + A4 * l2))
16 ];
17}
18
19equalEarthRaw.invert = function(x, y) {
20 var l = y, l2 = l * l, l6 = l2 * l2 * l2;
21 for (var i = 0, delta, fy, fpy; i < iterations; ++i) {
22 fy = l * (A1 + A2 * l2 + l6 * (A3 + A4 * l2)) - y;
23 fpy = A1 + 3 * A2 * l2 + l6 * (7 * A3 + 9 * A4 * l2);
24 l -= delta = fy / fpy, l2 = l * l, l6 = l2 * l2 * l2;
25 if (abs(delta) < epsilon2) break;
26 }
27 return [
28 M * x * (A1 + 3 * A2 * l2 + l6 * (7 * A3 + 9 * A4 * l2)) / cos(l),
29 asin(sin(l) / M)
30 ];
31};
32
33export default function() {
34 return projection(equalEarthRaw)
35 .scale(177.158);
36}
Note: See TracBrowser for help on using the repository browser.