35 lines
915 B
Java
35 lines
915 B
Java
|
|
import parallel1 from "./parallel1";
|
||
|
|
import {abs, cos, epsilon, halfPi, log, quarterPi, tan} from "./math";
|
||
|
|
|
||
|
|
export function loximuthalRaw(phi0) {
|
||
|
|
var cosPhi0 = cos(phi0),
|
||
|
|
tanPhi0 = tan(quarterPi + phi0 / 2);
|
||
|
|
|
||
|
|
function forward(lambda, phi) {
|
||
|
|
var y = phi - phi0,
|
||
|
|
x = abs(y) < epsilon ? lambda * cosPhi0
|
||
|
|
: abs(x = quarterPi + phi / 2) < epsilon || abs(abs(x) - halfPi) < epsilon
|
||
|
|
? 0 : lambda * y / log(tan(x) / tanPhi0);
|
||
|
|
return [x, y];
|
||
|
|
}
|
||
|
|
|
||
|
|
forward.invert = function(x, y) {
|
||
|
|
var lambda,
|
||
|
|
phi = y + phi0;
|
||
|
|
return [
|
||
|
|
abs(y) < epsilon ? x / cosPhi0
|
||
|
|
: (abs(lambda = quarterPi + phi / 2) < epsilon || abs(abs(lambda) - halfPi) < epsilon) ? 0
|
||
|
|
: x * log(tan(lambda) / tanPhi0) / y,
|
||
|
|
phi
|
||
|
|
];
|
||
|
|
};
|
||
|
|
|
||
|
|
return forward;
|
||
|
|
}
|
||
|
|
|
||
|
|
export default function() {
|
||
|
|
return parallel1(loximuthalRaw)
|
||
|
|
.parallel(40)
|
||
|
|
.scale(158.837);
|
||
|
|
}
|