source: node_modules/d3-geo/src/projection/conicConformal.js@ a762898

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

Prototype 1.1

  • Property mode set to 100644
File size: 1.1 KB
Line 
1import {abs, atan, atan2, cos, epsilon, halfPi, log, pi, pow, sign, sin, sqrt, tan} from "../math.js";
2import {conicProjection} from "./conic.js";
3import {mercatorRaw} from "./mercator.js";
4
5function tany(y) {
6 return tan((halfPi + y) / 2);
7}
8
9export function conicConformalRaw(y0, y1) {
10 var cy0 = cos(y0),
11 n = y0 === y1 ? sin(y0) : log(cy0 / cos(y1)) / log(tany(y1) / tany(y0)),
12 f = cy0 * pow(tany(y0), n) / n;
13
14 if (!n) return mercatorRaw;
15
16 function project(x, y) {
17 if (f > 0) { if (y < -halfPi + epsilon) y = -halfPi + epsilon; }
18 else { if (y > halfPi - epsilon) y = halfPi - epsilon; }
19 var r = f / pow(tany(y), n);
20 return [r * sin(n * x), f - r * cos(n * x)];
21 }
22
23 project.invert = function(x, y) {
24 var fy = f - y, r = sign(n) * sqrt(x * x + fy * fy),
25 l = atan2(x, abs(fy)) * sign(fy);
26 if (fy * n < 0)
27 l -= pi * sign(x) * sign(fy);
28 return [l / n, 2 * atan(pow(f / r, 1 / n)) - halfPi];
29 };
30
31 return project;
32}
33
34export default function() {
35 return conicProjection(conicConformalRaw)
36 .scale(109.5)
37 .parallels([30, 30]);
38}
Note: See TracBrowser for help on using the repository browser.