conicEquidistant.js 771 B

1234567891011121314151617181920212223242526272829
  1. import {abs, atan2, cos, epsilon, sign, sin, sqrt} from "../math";
  2. import {conicProjection} from "./conic";
  3. import {equirectangularRaw} from "./equirectangular";
  4. export function conicEquidistantRaw(y0, y1) {
  5. var cy0 = cos(y0),
  6. n = y0 === y1 ? sin(y0) : (cy0 - cos(y1)) / (y1 - y0),
  7. g = cy0 / n + y0;
  8. if (abs(n) < epsilon) return equirectangularRaw;
  9. function project(x, y) {
  10. var gy = g - y, nx = n * x;
  11. return [gy * sin(nx), g - gy * cos(nx)];
  12. }
  13. project.invert = function(x, y) {
  14. var gy = g - y;
  15. return [atan2(x, abs(gy)) / n * sign(gy), g - sign(n) * sqrt(x * x + gy * gy)];
  16. };
  17. return project;
  18. }
  19. export default function() {
  20. return conicProjection(conicEquidistantRaw)
  21. .scale(131.154)
  22. .center([0, 13.9389]);
  23. }