{"version":3,"sources":["/home/runner/work/turf/turf/packages/turf-rhumb-distance/dist/cjs/index.cjs","../../index.ts"],"names":[],"mappings":"AAAA;ACCA,wCAAyD;AACzD,4CAAyB;AAuBzB,SAAS,aAAA,CACP,IAAA,EACA,EAAA,EACA,QAAA,EAEI,CAAC,CAAA,EACG;AACR,EAAA,MAAM,OAAA,EAAS,iCAAA,IAAa,CAAA;AAC5B,EAAA,MAAM,YAAA,EAAc,iCAAA,EAAW,CAAA;AAI/B,EAAA,WAAA,CAAY,CAAC,EAAA,GACX,WAAA,CAAY,CAAC,EAAA,EAAI,MAAA,CAAO,CAAC,EAAA,EAAI,IAAA,EACzB,CAAA,IAAA,EACA,MAAA,CAAO,CAAC,EAAA,EAAI,WAAA,CAAY,CAAC,EAAA,EAAI,IAAA,EAC3B,IAAA,EACA,CAAA;AACR,EAAA,MAAM,iBAAA,EAAmB,sBAAA,CAAuB,MAAA,EAAQ,WAAW,CAAA;AACnE,EAAA,MAAM,SAAA,EAAW,oCAAA,gBAAc,EAAkB,QAAA,EAAU,OAAA,CAAQ,KAAK,CAAA;AACxE,EAAA,OAAO,QAAA;AACT;AAiBA,SAAS,sBAAA,CACP,MAAA,EACA,WAAA,EACA,MAAA,EACA;AAQA,EAAA,OAAA,EAAS,OAAA,IAAW,KAAA,EAAA,EAAY,qBAAA,EAAc,MAAA,CAAO,MAAM,CAAA;AAG3D,EAAA,MAAM,EAAA,EAAI,MAAA;AACV,EAAA,MAAM,KAAA,EAAQ,MAAA,CAAO,CAAC,EAAA,EAAI,IAAA,CAAK,GAAA,EAAM,GAAA;AACrC,EAAA,MAAM,KAAA,EAAQ,WAAA,CAAY,CAAC,EAAA,EAAI,IAAA,CAAK,GAAA,EAAM,GAAA;AAC1C,EAAA,MAAM,SAAA,EAAW,KAAA,EAAO,IAAA;AACxB,EAAA,IAAI,YAAA,EAAe,IAAA,CAAK,GAAA,CAAI,WAAA,CAAY,CAAC,EAAA,EAAI,MAAA,CAAO,CAAC,CAAC,EAAA,EAAI,IAAA,CAAK,GAAA,EAAM,GAAA;AAErE,EAAA,GAAA,CAAI,YAAA,EAAc,IAAA,CAAK,EAAA,EAAI;AACzB,IAAA,YAAA,GAAe,EAAA,EAAI,IAAA,CAAK,EAAA;AAAA,EAC1B;AAIA,EAAA,MAAM,SAAA,EAAW,IAAA,CAAK,GAAA;AAAA,IACpB,IAAA,CAAK,GAAA,CAAI,KAAA,EAAO,EAAA,EAAI,IAAA,CAAK,GAAA,EAAK,CAAC,EAAA,EAAI,IAAA,CAAK,GAAA,CAAI,KAAA,EAAO,EAAA,EAAI,IAAA,CAAK,GAAA,EAAK,CAAC;AAAA,EACpE,CAAA;AACA,EAAA,MAAM,EAAA,EAAI,IAAA,CAAK,GAAA,CAAI,QAAQ,EAAA,EAAI,MAAA,EAAS,SAAA,EAAW,SAAA,EAAW,IAAA,CAAK,GAAA,CAAI,IAAI,CAAA;AAG3E,EAAA,MAAM,MAAA,EAAQ,IAAA,CAAK,IAAA;AAAA,IACjB,SAAA,EAAW,SAAA,EAAW,EAAA,EAAI,EAAA,EAAI,YAAA,EAAc;AAAA,EAC9C,CAAA;AACA,EAAA,MAAM,KAAA,EAAO,MAAA,EAAQ,CAAA;AAErB,EAAA,OAAO,IAAA;AACT;AAGA,IAAO,cAAA,EAAQ,aAAA;ADzEf;AACE;AACA;AACF,uEAAC","file":"/home/runner/work/turf/turf/packages/turf-rhumb-distance/dist/cjs/index.cjs","sourcesContent":[null,"// https://en.wikipedia.org/wiki/Rhumb_line\nimport { convertLength, Coord, earthRadius, Units } from \"@turf/helpers\";\nimport { getCoord } from \"@turf/invariant\";\n\n/**\n * Calculates the distance along a rhumb line between two {@link Point|points} in {@link https://turfjs.org/docs/api/types/Units Units}\n *\n * @function\n * @param {Coord} from origin point\n * @param {Coord} to destination point\n * @param {Object} [options] Optional parameters\n * @param {Units} [options.units='kilometers'] Supports all valid Turf {@link https://turfjs.org/docs/api/types/Units Units}\n * @returns {number} distance between the two points\n * @example\n * var from = turf.point([-75.343, 39.984]);\n * var to = turf.point([-75.534, 39.123]);\n * var options = {units: 'miles'};\n *\n * var distance = turf.rhumbDistance(from, to, options);\n *\n * //addToMap\n * var addToMap = [from, to];\n * from.properties.distance = distance;\n * to.properties.distance = distance;\n */\nfunction rhumbDistance(\n  from: Coord,\n  to: Coord,\n  options: {\n    units?: Units;\n  } = {}\n): number {\n  const origin = getCoord(from);\n  const destination = getCoord(to);\n\n  // compensate the crossing of the 180th meridian (https://macwright.org/2016/09/26/the-180th-meridian.html)\n  // solution from https://github.com/mapbox/mapbox-gl-js/issues/3250#issuecomment-294887678\n  destination[0] +=\n    destination[0] - origin[0] > 180\n      ? -360\n      : origin[0] - destination[0] > 180\n        ? 360\n        : 0;\n  const distanceInMeters = calculateRhumbDistance(origin, destination);\n  const distance = convertLength(distanceInMeters, \"meters\", options.units);\n  return distance;\n}\n\n/**\n * Returns the distance travelling from ‘this’ point to destination point along a rhumb line.\n * Adapted from Geodesy: https://github.com/chrisveness/geodesy/blob/master/latlon-spherical.js\n *\n * @private\n * @param   {Array<number>} origin point.\n * @param   {Array<number>} destination point.\n * @param   {number} [radius=6371e3] - (Mean) radius of earth (defaults to radius in metres).\n * @returns {number} Distance in km between this point and destination point (same units as radius).\n *\n * @example\n *     var p1 = new LatLon(51.127, 1.338);\n *     var p2 = new LatLon(50.964, 1.853);\n *     var d = p1.distanceTo(p2); // 40.31 km\n */\nfunction calculateRhumbDistance(\n  origin: number[],\n  destination: number[],\n  radius?: number\n) {\n  // φ => phi\n  // λ => lambda\n  // ψ => psi\n  // Δ => Delta\n  // δ => delta\n  // θ => theta\n\n  radius = radius === undefined ? earthRadius : Number(radius);\n  // see www.edwilliams.org/avform.htm#Rhumb\n\n  const R = radius;\n  const phi1 = (origin[1] * Math.PI) / 180;\n  const phi2 = (destination[1] * Math.PI) / 180;\n  const DeltaPhi = phi2 - phi1;\n  let DeltaLambda = (Math.abs(destination[0] - origin[0]) * Math.PI) / 180;\n  // if dLon over 180° take shorter rhumb line across the anti-meridian:\n  if (DeltaLambda > Math.PI) {\n    DeltaLambda -= 2 * Math.PI;\n  }\n\n  // on Mercator projection, longitude distances shrink by latitude; q is the 'stretch factor'\n  // q becomes ill-conditioned along E-W line (0/0); use empirical tolerance to avoid it\n  const DeltaPsi = Math.log(\n    Math.tan(phi2 / 2 + Math.PI / 4) / Math.tan(phi1 / 2 + Math.PI / 4)\n  );\n  const q = Math.abs(DeltaPsi) > 10e-12 ? DeltaPhi / DeltaPsi : Math.cos(phi1);\n\n  // distance is pythagoras on 'stretched' Mercator projection\n  const delta = Math.sqrt(\n    DeltaPhi * DeltaPhi + q * q * DeltaLambda * DeltaLambda\n  ); // angular distance in radians\n  const dist = delta * R;\n\n  return dist;\n}\n\nexport { rhumbDistance };\nexport default rhumbDistance;\n"]}