You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
26 lines
717 B
26 lines
717 B
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);
|
|
}
|
|
|