index.cjs 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. "use strict";Object.defineProperty(exports, "__esModule", {value: true});// index.ts
  2. var _helpers = require('@turf/helpers');
  3. var _invariant = require('@turf/invariant');
  4. function rhumbDistance(from, to, options = {}) {
  5. const origin = _invariant.getCoord.call(void 0, from);
  6. const destination = _invariant.getCoord.call(void 0, to);
  7. destination[0] += destination[0] - origin[0] > 180 ? -360 : origin[0] - destination[0] > 180 ? 360 : 0;
  8. const distanceInMeters = calculateRhumbDistance(origin, destination);
  9. const distance = _helpers.convertLength.call(void 0, distanceInMeters, "meters", options.units);
  10. return distance;
  11. }
  12. function calculateRhumbDistance(origin, destination, radius) {
  13. radius = radius === void 0 ? _helpers.earthRadius : Number(radius);
  14. const R = radius;
  15. const phi1 = origin[1] * Math.PI / 180;
  16. const phi2 = destination[1] * Math.PI / 180;
  17. const DeltaPhi = phi2 - phi1;
  18. let DeltaLambda = Math.abs(destination[0] - origin[0]) * Math.PI / 180;
  19. if (DeltaLambda > Math.PI) {
  20. DeltaLambda -= 2 * Math.PI;
  21. }
  22. const DeltaPsi = Math.log(
  23. Math.tan(phi2 / 2 + Math.PI / 4) / Math.tan(phi1 / 2 + Math.PI / 4)
  24. );
  25. const q = Math.abs(DeltaPsi) > 1e-11 ? DeltaPhi / DeltaPsi : Math.cos(phi1);
  26. const delta = Math.sqrt(
  27. DeltaPhi * DeltaPhi + q * q * DeltaLambda * DeltaLambda
  28. );
  29. const dist = delta * R;
  30. return dist;
  31. }
  32. var turf_rhumb_distance_default = rhumbDistance;
  33. exports.default = turf_rhumb_distance_default; exports.rhumbDistance = rhumbDistance;
  34. //# sourceMappingURL=index.cjs.map