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.
 
 
 

34 lines
916 B

  1. import {geoProjection as projection} from "d3-geo";
  2. import {abs, epsilon} from "./math.js";
  3. export function ginzburg8Raw(lambda, phi) {
  4. var lambda2 = lambda * lambda,
  5. phi2 = phi * phi;
  6. return [
  7. lambda * (1 - 0.162388 * phi2) * (0.87 - 0.000952426 * lambda2 * lambda2),
  8. phi * (1 + phi2 / 12)
  9. ];
  10. }
  11. ginzburg8Raw.invert = function(x, y) {
  12. var lambda = x,
  13. phi = y,
  14. i = 50, delta;
  15. do {
  16. var phi2 = phi * phi;
  17. phi -= delta = (phi * (1 + phi2 / 12) - y) / (1 + phi2 / 4);
  18. } while (abs(delta) > epsilon && --i > 0);
  19. i = 50;
  20. x /= 1 -0.162388 * phi2;
  21. do {
  22. var lambda4 = (lambda4 = lambda * lambda) * lambda4;
  23. lambda -= delta = (lambda * (0.87 - 0.000952426 * lambda4) - x) / (0.87 - 0.00476213 * lambda4);
  24. } while (abs(delta) > epsilon && --i > 0);
  25. return [lambda, phi];
  26. };
  27. export default function() {
  28. return projection(ginzburg8Raw)
  29. .scale(131.747);
  30. }