|
- import {asin, atan2, cos, sin, sqrt, tan} from "./math.js";
- import parallel1 from "./parallel1.js";
-
- export function craigRaw(phi0) {
- var tanPhi0 = tan(phi0);
-
- function forward(lambda, phi) {
- return [lambda, (lambda ? lambda / sin(lambda) : 1) * (sin(phi) * cos(lambda) - tanPhi0 * cos(phi))];
- }
-
- forward.invert = tanPhi0 ? function(x, y) {
- if (x) y *= sin(x) / x;
- var cosLambda = cos(x);
- return [x, 2 * atan2(sqrt(cosLambda * cosLambda + tanPhi0 * tanPhi0 - y * y) - cosLambda, tanPhi0 - y)];
- } : function(x, y) {
- return [x, asin(x ? y * tan(x) / x : y)];
- };
-
- return forward;
- }
-
- export default function() {
- return parallel1(craigRaw)
- .scale(249.828)
- .clipAngle(90);
- }
|