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.
24 lines
651 B
24 lines
651 B
import {halfPi, pi} from "./math.js";
|
|
|
|
export default function(project) {
|
|
var dx = project(halfPi, 0)[0] - project(-halfPi, 0)[0];
|
|
|
|
function projectSquare(lambda, phi) {
|
|
var s = lambda > 0 ? -0.5 : 0.5,
|
|
point = project(lambda + s * pi, phi);
|
|
point[0] -= s * dx;
|
|
return point;
|
|
}
|
|
|
|
if (project.invert) projectSquare.invert = function(x, y) {
|
|
var s = x > 0 ? -0.5 : 0.5,
|
|
location = project.invert(x + s * dx, y),
|
|
lambda = location[0] - s * pi;
|
|
if (lambda < -pi) lambda += 2 * pi;
|
|
else if (lambda > pi) lambda -= 2 * pi;
|
|
location[0] = lambda;
|
|
return location;
|
|
};
|
|
|
|
return projectSquare;
|
|
}
|
|
|