// index.ts import { convertLength, degreesToRadians, earthRadius, point } from "@turf/helpers"; import { getCoord } from "@turf/invariant"; function rhumbDestination(origin, distance, bearing, options = {}) { const wasNegativeDistance = distance < 0; let distanceInMeters = convertLength( Math.abs(distance), options.units, "meters" ); if (wasNegativeDistance) distanceInMeters = -Math.abs(distanceInMeters); const coords = getCoord(origin); const destination = calculateRhumbDestination( coords, distanceInMeters, bearing ); destination[0] += destination[0] - coords[0] > 180 ? -360 : coords[0] - destination[0] > 180 ? 360 : 0; return point(destination, options.properties); } function calculateRhumbDestination(origin, distance, bearing, radius) { radius = radius === void 0 ? earthRadius : Number(radius); const delta = distance / radius; const lambda1 = origin[0] * Math.PI / 180; const phi1 = degreesToRadians(origin[1]); const theta = degreesToRadians(bearing); const DeltaPhi = delta * Math.cos(theta); let phi2 = phi1 + DeltaPhi; if (Math.abs(phi2) > Math.PI / 2) { phi2 = phi2 > 0 ? Math.PI - phi2 : -Math.PI - phi2; } const DeltaPsi = Math.log( Math.tan(phi2 / 2 + Math.PI / 4) / Math.tan(phi1 / 2 + Math.PI / 4) ); const q = Math.abs(DeltaPsi) > 1e-11 ? DeltaPhi / DeltaPsi : Math.cos(phi1); const DeltaLambda = delta * Math.sin(theta) / q; const lambda2 = lambda1 + DeltaLambda; return [ (lambda2 * 180 / Math.PI + 540) % 360 - 180, phi2 * 180 / Math.PI ]; } var turf_rhumb_destination_default = rhumbDestination; export { turf_rhumb_destination_default as default, rhumbDestination }; //# sourceMappingURL=index.js.map