inverseNadCvt.js 625 B

123456789101112131415161718192021222324252627282930
  1. var nad_intr = require('./nad_intr');
  2. var adjust_lon = require('./adjust_lon');
  3. module.exports = function(t, val, tb, ct) {
  4. if (isNaN(t.x)) {
  5. return val;
  6. }
  7. t.x = tb.x + t.x;
  8. t.y = tb.y - t.y;
  9. var i = 9,
  10. tol = 1e-12;
  11. var dif, del;
  12. do {
  13. del = nad_intr(t, ct);
  14. if (isNaN(del.x)) {
  15. break;
  16. }
  17. dif = {
  18. "x": t.x - del.x - tb.x,
  19. "y": t.y + del.y - tb.y
  20. };
  21. t.x -= dif.x;
  22. t.y -= dif.y;
  23. } while (i-- && Math.abs(dif.x) > tol && Math.abs(dif.y) > tol);
  24. if (i < 0) {
  25. return val;
  26. }
  27. val.x = adjust_lon(t.x + ct.ll[0]);
  28. val.y = t.y + ct.ll[1];
  29. return val;
  30. };