
File name
Commit message
Commit date
File name
Commit message
Commit date
File name
Commit message
Commit date
File name
Commit message
Commit date
File name
Commit message
Commit date
import {abs, atan, atan2, cos, epsilon, halfPi, log, pi, pow, sign, sin, sqrt, tan} from "../math.js";
import {conicProjection} from "./conic.js";
import {mercatorRaw} from "./mercator.js";
function tany(y) {
return tan((halfPi + y) / 2);
}
export function conicConformalRaw(y0, y1) {
var cy0 = cos(y0),
n = y0 === y1 ? sin(y0) : log(cy0 / cos(y1)) / log(tany(y1) / tany(y0)),
f = cy0 * pow(tany(y0), n) / n;
if (!n) return mercatorRaw;
function project(x, y) {
if (f > 0) { if (y < -halfPi + epsilon) y = -halfPi + epsilon; }
else { if (y > halfPi - epsilon) y = halfPi - epsilon; }
var r = f / pow(tany(y), n);
return [r * sin(n * x), f - r * cos(n * x)];
}
project.invert = function(x, y) {
var fy = f - y, r = sign(n) * sqrt(x * x + fy * fy),
l = atan2(x, abs(fy)) * sign(fy);
if (fy * n < 0)
l -= pi * sign(x) * sign(fy);
return [l / n, 2 * atan(pow(f / r, 1 / n)) - halfPi];
};
return project;
}
export default function() {
return conicProjection(conicConformalRaw)
.scale(109.5)
.parallels([30, 30]);
}