1 line
43 KiB
Plaintext
1 line
43 KiB
Plaintext
{"version":3,"file":"EllipsoidRhumbLine-d09d563f.js","sources":["../../../../Source/Core/EllipsoidRhumbLine.js"],"sourcesContent":["import Cartesian3 from \"./Cartesian3.js\";\nimport Cartographic from \"./Cartographic.js\";\nimport Check from \"./Check.js\";\nimport defaultValue from \"./defaultValue.js\";\nimport defined from \"./defined.js\";\nimport DeveloperError from \"./DeveloperError.js\";\nimport Ellipsoid from \"./Ellipsoid.js\";\nimport CesiumMath from \"./Math.js\";\n\nfunction calculateM(ellipticity, major, latitude) {\n if (ellipticity === 0.0) {\n // sphere\n return major * latitude;\n }\n\n const e2 = ellipticity * ellipticity;\n const e4 = e2 * e2;\n const e6 = e4 * e2;\n const e8 = e6 * e2;\n const e10 = e8 * e2;\n const e12 = e10 * e2;\n const phi = latitude;\n const sin2Phi = Math.sin(2 * phi);\n const sin4Phi = Math.sin(4 * phi);\n const sin6Phi = Math.sin(6 * phi);\n const sin8Phi = Math.sin(8 * phi);\n const sin10Phi = Math.sin(10 * phi);\n const sin12Phi = Math.sin(12 * phi);\n\n return (\n major *\n ((1 -\n e2 / 4 -\n (3 * e4) / 64 -\n (5 * e6) / 256 -\n (175 * e8) / 16384 -\n (441 * e10) / 65536 -\n (4851 * e12) / 1048576) *\n phi -\n ((3 * e2) / 8 +\n (3 * e4) / 32 +\n (45 * e6) / 1024 +\n (105 * e8) / 4096 +\n (2205 * e10) / 131072 +\n (6237 * e12) / 524288) *\n sin2Phi +\n ((15 * e4) / 256 +\n (45 * e6) / 1024 +\n (525 * e8) / 16384 +\n (1575 * e10) / 65536 +\n (155925 * e12) / 8388608) *\n sin4Phi -\n ((35 * e6) / 3072 +\n (175 * e8) / 12288 +\n (3675 * e10) / 262144 +\n (13475 * e12) / 1048576) *\n sin6Phi +\n ((315 * e8) / 131072 + (2205 * e10) / 524288 + (43659 * e12) / 8388608) *\n sin8Phi -\n ((693 * e10) / 1310720 + (6237 * e12) / 5242880) * sin10Phi +\n ((1001 * e12) / 8388608) * sin12Phi)\n );\n}\n\nfunction calculateInverseM(M, ellipticity, major) {\n const d = M / major;\n\n if (ellipticity === 0.0) {\n // sphere\n return d;\n }\n\n const d2 = d * d;\n const d3 = d2 * d;\n const d4 = d3 * d;\n const e = ellipticity;\n const e2 = e * e;\n const e4 = e2 * e2;\n const e6 = e4 * e2;\n const e8 = e6 * e2;\n const e10 = e8 * e2;\n const e12 = e10 * e2;\n const sin2D = Math.sin(2 * d);\n const cos2D = Math.cos(2 * d);\n const sin4D = Math.sin(4 * d);\n const cos4D = Math.cos(4 * d);\n const sin6D = Math.sin(6 * d);\n const cos6D = Math.cos(6 * d);\n const sin8D = Math.sin(8 * d);\n const cos8D = Math.cos(8 * d);\n const sin10D = Math.sin(10 * d);\n const cos10D = Math.cos(10 * d);\n const sin12D = Math.sin(12 * d);\n\n return (\n d +\n (d * e2) / 4 +\n (7 * d * e4) / 64 +\n (15 * d * e6) / 256 +\n (579 * d * e8) / 16384 +\n (1515 * d * e10) / 65536 +\n (16837 * d * e12) / 1048576 +\n ((3 * d * e4) / 16 +\n (45 * d * e6) / 256 -\n (d * (32 * d2 - 561) * e8) / 4096 -\n (d * (232 * d2 - 1677) * e10) / 16384 +\n (d * (399985 - 90560 * d2 + 512 * d4) * e12) / 5242880) *\n cos2D +\n ((21 * d * e6) / 256 +\n (483 * d * e8) / 4096 -\n (d * (224 * d2 - 1969) * e10) / 16384 -\n (d * (33152 * d2 - 112599) * e12) / 1048576) *\n cos4D +\n ((151 * d * e8) / 4096 +\n (4681 * d * e10) / 65536 +\n (1479 * d * e12) / 16384 -\n (453 * d3 * e12) / 32768) *\n cos6D +\n ((1097 * d * e10) / 65536 + (42783 * d * e12) / 1048576) * cos8D +\n ((8011 * d * e12) / 1048576) * cos10D +\n ((3 * e2) / 8 +\n (3 * e4) / 16 +\n (213 * e6) / 2048 -\n (3 * d2 * e6) / 64 +\n (255 * e8) / 4096 -\n (33 * d2 * e8) / 512 +\n (20861 * e10) / 524288 -\n (33 * d2 * e10) / 512 +\n (d4 * e10) / 1024 +\n (28273 * e12) / 1048576 -\n (471 * d2 * e12) / 8192 +\n (9 * d4 * e12) / 4096) *\n sin2D +\n ((21 * e4) / 256 +\n (21 * e6) / 256 +\n (533 * e8) / 8192 -\n (21 * d2 * e8) / 512 +\n (197 * e10) / 4096 -\n (315 * d2 * e10) / 4096 +\n (584039 * e12) / 16777216 -\n (12517 * d2 * e12) / 131072 +\n (7 * d4 * e12) / 2048) *\n sin4D +\n ((151 * e6) / 6144 +\n (151 * e8) / 4096 +\n (5019 * e10) / 131072 -\n (453 * d2 * e10) / 16384 +\n (26965 * e12) / 786432 -\n (8607 * d2 * e12) / 131072) *\n sin6D +\n ((1097 * e8) / 131072 +\n (1097 * e10) / 65536 +\n (225797 * e12) / 10485760 -\n (1097 * d2 * e12) / 65536) *\n sin8D +\n ((8011 * e10) / 2621440 + (8011 * e12) / 1048576) * sin10D +\n ((293393 * e12) / 251658240) * sin12D\n );\n}\n\nfunction calculateSigma(ellipticity, latitude) {\n if (ellipticity === 0.0) {\n // sphere\n return Math.log(Math.tan(0.5 * (CesiumMath.PI_OVER_TWO + latitude)));\n }\n\n const eSinL = ellipticity * Math.sin(latitude);\n return (\n Math.log(Math.tan(0.5 * (CesiumMath.PI_OVER_TWO + latitude))) -\n (ellipticity / 2.0) * Math.log((1 + eSinL) / (1 - eSinL))\n );\n}\n\nfunction calculateHeading(\n ellipsoidRhumbLine,\n firstLongitude,\n firstLatitude,\n secondLongitude,\n secondLatitude\n) {\n const sigma1 = calculateSigma(ellipsoidRhumbLine._ellipticity, firstLatitude);\n const sigma2 = calculateSigma(\n ellipsoidRhumbLine._ellipticity,\n secondLatitude\n );\n return Math.atan2(\n CesiumMath.negativePiToPi(secondLongitude - firstLongitude),\n sigma2 - sigma1\n );\n}\n\nfunction calculateArcLength(\n ellipsoidRhumbLine,\n major,\n minor,\n firstLongitude,\n firstLatitude,\n secondLongitude,\n secondLatitude\n) {\n const heading = ellipsoidRhumbLine._heading;\n const deltaLongitude = secondLongitude - firstLongitude;\n\n let distance = 0.0;\n\n //Check to see if the rhumb line has constant latitude\n //This equation will diverge if heading gets close to 90 degrees\n if (\n CesiumMath.equalsEpsilon(\n Math.abs(heading),\n CesiumMath.PI_OVER_TWO,\n CesiumMath.EPSILON8\n )\n ) {\n //If heading is close to 90 degrees\n if (major === minor) {\n distance =\n major *\n Math.cos(firstLatitude) *\n CesiumMath.negativePiToPi(deltaLongitude);\n } else {\n const sinPhi = Math.sin(firstLatitude);\n distance =\n (major *\n Math.cos(firstLatitude) *\n CesiumMath.negativePiToPi(deltaLongitude)) /\n Math.sqrt(1 - ellipsoidRhumbLine._ellipticitySquared * sinPhi * sinPhi);\n }\n } else {\n const M1 = calculateM(\n ellipsoidRhumbLine._ellipticity,\n major,\n firstLatitude\n );\n const M2 = calculateM(\n ellipsoidRhumbLine._ellipticity,\n major,\n secondLatitude\n );\n\n distance = (M2 - M1) / Math.cos(heading);\n }\n return Math.abs(distance);\n}\n\nconst scratchCart1 = new Cartesian3();\nconst scratchCart2 = new Cartesian3();\n\nfunction computeProperties(ellipsoidRhumbLine, start, end, ellipsoid) {\n const firstCartesian = Cartesian3.normalize(\n ellipsoid.cartographicToCartesian(start, scratchCart2),\n scratchCart1\n );\n const lastCartesian = Cartesian3.normalize(\n ellipsoid.cartographicToCartesian(end, scratchCart2),\n scratchCart2\n );\n\n //>>includeStart('debug', pragmas.debug);\n Check.typeOf.number.greaterThanOrEquals(\n \"value\",\n Math.abs(\n Math.abs(Cartesian3.angleBetween(firstCartesian, lastCartesian)) - Math.PI\n ),\n 0.0125\n );\n //>>includeEnd('debug');\n\n const major = ellipsoid.maximumRadius;\n const minor = ellipsoid.minimumRadius;\n const majorSquared = major * major;\n const minorSquared = minor * minor;\n ellipsoidRhumbLine._ellipticitySquared =\n (majorSquared - minorSquared) / majorSquared;\n ellipsoidRhumbLine._ellipticity = Math.sqrt(\n ellipsoidRhumbLine._ellipticitySquared\n );\n\n ellipsoidRhumbLine._start = Cartographic.clone(\n start,\n ellipsoidRhumbLine._start\n );\n ellipsoidRhumbLine._start.height = 0;\n\n ellipsoidRhumbLine._end = Cartographic.clone(end, ellipsoidRhumbLine._end);\n ellipsoidRhumbLine._end.height = 0;\n\n ellipsoidRhumbLine._heading = calculateHeading(\n ellipsoidRhumbLine,\n start.longitude,\n start.latitude,\n end.longitude,\n end.latitude\n );\n ellipsoidRhumbLine._distance = calculateArcLength(\n ellipsoidRhumbLine,\n ellipsoid.maximumRadius,\n ellipsoid.minimumRadius,\n start.longitude,\n start.latitude,\n end.longitude,\n end.latitude\n );\n}\n\nfunction interpolateUsingSurfaceDistance(\n start,\n heading,\n distance,\n major,\n ellipticity,\n result\n) {\n if (distance === 0.0) {\n return Cartographic.clone(start, result);\n }\n\n const ellipticitySquared = ellipticity * ellipticity;\n\n let longitude;\n let latitude;\n let deltaLongitude;\n\n //Check to see if the rhumb line has constant latitude\n //This won't converge if heading is close to 90 degrees\n if (\n Math.abs(CesiumMath.PI_OVER_TWO - Math.abs(heading)) > CesiumMath.EPSILON8\n ) {\n //Calculate latitude of the second point\n const M1 = calculateM(ellipticity, major, start.latitude);\n const deltaM = distance * Math.cos(heading);\n const M2 = M1 + deltaM;\n latitude = calculateInverseM(M2, ellipticity, major);\n\n //Now find the longitude of the second point\n const sigma1 = calculateSigma(ellipticity, start.latitude);\n const sigma2 = calculateSigma(ellipticity, latitude);\n deltaLongitude = Math.tan(heading) * (sigma2 - sigma1);\n longitude = CesiumMath.negativePiToPi(start.longitude + deltaLongitude);\n } else {\n //If heading is close to 90 degrees\n latitude = start.latitude;\n let localRad;\n\n if (ellipticity === 0.0) {\n // sphere\n localRad = major * Math.cos(start.latitude);\n } else {\n const sinPhi = Math.sin(start.latitude);\n localRad =\n (major * Math.cos(start.latitude)) /\n Math.sqrt(1 - ellipticitySquared * sinPhi * sinPhi);\n }\n\n deltaLongitude = distance / localRad;\n if (heading > 0.0) {\n longitude = CesiumMath.negativePiToPi(start.longitude + deltaLongitude);\n } else {\n longitude = CesiumMath.negativePiToPi(start.longitude - deltaLongitude);\n }\n }\n\n if (defined(result)) {\n result.longitude = longitude;\n result.latitude = latitude;\n result.height = 0;\n\n return result;\n }\n\n return new Cartographic(longitude, latitude, 0);\n}\n\n/**\n * Initializes a rhumb line on the ellipsoid connecting the two provided planetodetic points.\n *\n * @alias EllipsoidRhumbLine\n * @constructor\n *\n * @param {Cartographic} [start] The initial planetodetic point on the path.\n * @param {Cartographic} [end] The final planetodetic point on the path.\n * @param {Ellipsoid} [ellipsoid=Ellipsoid.WGS84] The ellipsoid on which the rhumb line lies.\n *\n * @exception {DeveloperError} angle between start and end must be at least 0.0125 radians.\n */\nfunction EllipsoidRhumbLine(start, end, ellipsoid) {\n const e = defaultValue(ellipsoid, Ellipsoid.WGS84);\n this._ellipsoid = e;\n this._start = new Cartographic();\n this._end = new Cartographic();\n\n this._heading = undefined;\n this._distance = undefined;\n this._ellipticity = undefined;\n this._ellipticitySquared = undefined;\n\n if (defined(start) && defined(end)) {\n computeProperties(this, start, end, e);\n }\n}\n\nObject.defineProperties(EllipsoidRhumbLine.prototype, {\n /**\n * Gets the ellipsoid.\n * @memberof EllipsoidRhumbLine.prototype\n * @type {Ellipsoid}\n * @readonly\n */\n ellipsoid: {\n get: function () {\n return this._ellipsoid;\n },\n },\n\n /**\n * Gets the surface distance between the start and end point\n * @memberof EllipsoidRhumbLine.prototype\n * @type {Number}\n * @readonly\n */\n surfaceDistance: {\n get: function () {\n //>>includeStart('debug', pragmas.debug);\n Check.defined(\"distance\", this._distance);\n //>>includeEnd('debug');\n\n return this._distance;\n },\n },\n\n /**\n * Gets the initial planetodetic point on the path.\n * @memberof EllipsoidRhumbLine.prototype\n * @type {Cartographic}\n * @readonly\n */\n start: {\n get: function () {\n return this._start;\n },\n },\n\n /**\n * Gets the final planetodetic point on the path.\n * @memberof EllipsoidRhumbLine.prototype\n * @type {Cartographic}\n * @readonly\n */\n end: {\n get: function () {\n return this._end;\n },\n },\n\n /**\n * Gets the heading from the start point to the end point.\n * @memberof EllipsoidRhumbLine.prototype\n * @type {Number}\n * @readonly\n */\n heading: {\n get: function () {\n //>>includeStart('debug', pragmas.debug);\n Check.defined(\"distance\", this._distance);\n //>>includeEnd('debug');\n\n return this._heading;\n },\n },\n});\n\n/**\n * Create a rhumb line using an initial position with a heading and distance.\n *\n * @param {Cartographic} start The initial planetodetic point on the path.\n * @param {Number} heading The heading in radians.\n * @param {Number} distance The rhumb line distance between the start and end point.\n * @param {Ellipsoid} [ellipsoid=Ellipsoid.WGS84] The ellipsoid on which the rhumb line lies.\n * @param {EllipsoidRhumbLine} [result] The object in which to store the result.\n * @returns {EllipsoidRhumbLine} The EllipsoidRhumbLine object.\n */\nEllipsoidRhumbLine.fromStartHeadingDistance = function (\n start,\n heading,\n distance,\n ellipsoid,\n result\n) {\n //>>includeStart('debug', pragmas.debug);\n Check.defined(\"start\", start);\n Check.defined(\"heading\", heading);\n Check.defined(\"distance\", distance);\n Check.typeOf.number.greaterThan(\"distance\", distance, 0.0);\n //>>includeEnd('debug');\n\n const e = defaultValue(ellipsoid, Ellipsoid.WGS84);\n const major = e.maximumRadius;\n const minor = e.minimumRadius;\n const majorSquared = major * major;\n const minorSquared = minor * minor;\n const ellipticity = Math.sqrt((majorSquared - minorSquared) / majorSquared);\n\n heading = CesiumMath.negativePiToPi(heading);\n const end = interpolateUsingSurfaceDistance(\n start,\n heading,\n distance,\n e.maximumRadius,\n ellipticity\n );\n\n if (\n !defined(result) ||\n (defined(ellipsoid) && !ellipsoid.equals(result.ellipsoid))\n ) {\n return new EllipsoidRhumbLine(start, end, e);\n }\n\n result.setEndPoints(start, end);\n return result;\n};\n\n/**\n * Sets the start and end points of the rhumb line.\n *\n * @param {Cartographic} start The initial planetodetic point on the path.\n * @param {Cartographic} end The final planetodetic point on the path.\n */\nEllipsoidRhumbLine.prototype.setEndPoints = function (start, end) {\n //>>includeStart('debug', pragmas.debug);\n Check.defined(\"start\", start);\n Check.defined(\"end\", end);\n //>>includeEnd('debug');\n\n computeProperties(this, start, end, this._ellipsoid);\n};\n\n/**\n * Provides the location of a point at the indicated portion along the rhumb line.\n *\n * @param {Number} fraction The portion of the distance between the initial and final points.\n * @param {Cartographic} [result] The object in which to store the result.\n * @returns {Cartographic} The location of the point along the rhumb line.\n */\nEllipsoidRhumbLine.prototype.interpolateUsingFraction = function (\n fraction,\n result\n) {\n return this.interpolateUsingSurfaceDistance(\n fraction * this._distance,\n result\n );\n};\n\n/**\n * Provides the location of a point at the indicated distance along the rhumb line.\n *\n * @param {Number} distance The distance from the inital point to the point of interest along the rhumbLine.\n * @param {Cartographic} [result] The object in which to store the result.\n * @returns {Cartographic} The location of the point along the rhumb line.\n *\n * @exception {DeveloperError} start and end must be set before calling function interpolateUsingSurfaceDistance\n */\nEllipsoidRhumbLine.prototype.interpolateUsingSurfaceDistance = function (\n distance,\n result\n) {\n //>>includeStart('debug', pragmas.debug);\n Check.typeOf.number(\"distance\", distance);\n if (!defined(this._distance) || this._distance === 0.0) {\n throw new DeveloperError(\n \"EllipsoidRhumbLine must have distinct start and end set.\"\n );\n }\n //>>includeEnd('debug');\n\n return interpolateUsingSurfaceDistance(\n this._start,\n this._heading,\n distance,\n this._ellipsoid.maximumRadius,\n this._ellipticity,\n result\n );\n};\n\n/**\n * Provides the location of a point at the indicated longitude along the rhumb line.\n * If the longitude is outside the range of start and end points, the first intersection with the longitude from the start point in the direction of the heading is returned. This follows the spiral property of a rhumb line.\n *\n * @param {Number} intersectionLongitude The longitude, in radians, at which to find the intersection point from the starting point using the heading.\n * @param {Cartographic} [result] The object in which to store the result.\n * @returns {Cartographic} The location of the intersection point along the rhumb line, undefined if there is no intersection or infinite intersections.\n *\n * @exception {DeveloperError} start and end must be set before calling function findIntersectionWithLongitude.\n */\nEllipsoidRhumbLine.prototype.findIntersectionWithLongitude = function (\n intersectionLongitude,\n result\n) {\n //>>includeStart('debug', pragmas.debug);\n Check.typeOf.number(\"intersectionLongitude\", intersectionLongitude);\n if (!defined(this._distance) || this._distance === 0.0) {\n throw new DeveloperError(\n \"EllipsoidRhumbLine must have distinct start and end set.\"\n );\n }\n //>>includeEnd('debug');\n\n const ellipticity = this._ellipticity;\n const heading = this._heading;\n const absHeading = Math.abs(heading);\n const start = this._start;\n\n intersectionLongitude = CesiumMath.negativePiToPi(intersectionLongitude);\n\n if (\n CesiumMath.equalsEpsilon(\n Math.abs(intersectionLongitude),\n Math.PI,\n CesiumMath.EPSILON14\n )\n ) {\n intersectionLongitude = CesiumMath.sign(start.longitude) * Math.PI;\n }\n\n if (!defined(result)) {\n result = new Cartographic();\n }\n\n // If heading is -PI/2 or PI/2, this is an E-W rhumb line\n // If heading is 0 or PI, this is an N-S rhumb line\n if (Math.abs(CesiumMath.PI_OVER_TWO - absHeading) <= CesiumMath.EPSILON8) {\n result.longitude = intersectionLongitude;\n result.latitude = start.latitude;\n result.height = 0;\n return result;\n } else if (\n CesiumMath.equalsEpsilon(\n Math.abs(CesiumMath.PI_OVER_TWO - absHeading),\n CesiumMath.PI_OVER_TWO,\n CesiumMath.EPSILON8\n )\n ) {\n if (\n CesiumMath.equalsEpsilon(\n intersectionLongitude,\n start.longitude,\n CesiumMath.EPSILON12\n )\n ) {\n return undefined;\n }\n\n result.longitude = intersectionLongitude;\n result.latitude =\n CesiumMath.PI_OVER_TWO *\n CesiumMath.sign(CesiumMath.PI_OVER_TWO - heading);\n result.height = 0;\n return result;\n }\n\n // Use iterative solver from Equation 9 from http://edwilliams.org/ellipsoid/ellipsoid.pdf\n const phi1 = start.latitude;\n const eSinPhi1 = ellipticity * Math.sin(phi1);\n const leftComponent =\n Math.tan(0.5 * (CesiumMath.PI_OVER_TWO + phi1)) *\n Math.exp((intersectionLongitude - start.longitude) / Math.tan(heading));\n const denominator = (1 + eSinPhi1) / (1 - eSinPhi1);\n\n let newPhi = start.latitude;\n let phi;\n do {\n phi = newPhi;\n const eSinPhi = ellipticity * Math.sin(phi);\n const numerator = (1 + eSinPhi) / (1 - eSinPhi);\n newPhi =\n 2 *\n Math.atan(\n leftComponent * Math.pow(numerator / denominator, ellipticity / 2)\n ) -\n CesiumMath.PI_OVER_TWO;\n } while (!CesiumMath.equalsEpsilon(newPhi, phi, CesiumMath.EPSILON12));\n\n result.longitude = intersectionLongitude;\n result.latitude = newPhi;\n result.height = 0;\n return result;\n};\n\n/**\n * Provides the location of a point at the indicated latitude along the rhumb line.\n * If the latitude is outside the range of start and end points, the first intersection with the latitude from that start point in the direction of the heading is returned. This follows the spiral property of a rhumb line.\n *\n * @param {Number} intersectionLatitude The latitude, in radians, at which to find the intersection point from the starting point using the heading.\n * @param {Cartographic} [result] The object in which to store the result.\n * @returns {Cartographic} The location of the intersection point along the rhumb line, undefined if there is no intersection or infinite intersections.\n *\n * @exception {DeveloperError} start and end must be set before calling function findIntersectionWithLongitude.\n */\nEllipsoidRhumbLine.prototype.findIntersectionWithLatitude = function (\n intersectionLatitude,\n result\n) {\n //>>includeStart('debug', pragmas.debug);\n Check.typeOf.number(\"intersectionLatitude\", intersectionLatitude);\n if (!defined(this._distance) || this._distance === 0.0) {\n throw new DeveloperError(\n \"EllipsoidRhumbLine must have distinct start and end set.\"\n );\n }\n //>>includeEnd('debug');\n\n const ellipticity = this._ellipticity;\n const heading = this._heading;\n const start = this._start;\n\n // If start and end have same latitude, return undefined since it's either no intersection or infinite intersections\n if (\n CesiumMath.equalsEpsilon(\n Math.abs(heading),\n CesiumMath.PI_OVER_TWO,\n CesiumMath.EPSILON8\n )\n ) {\n return;\n }\n\n // Can be solved using the same equations from interpolateUsingSurfaceDistance\n const sigma1 = calculateSigma(ellipticity, start.latitude);\n const sigma2 = calculateSigma(ellipticity, intersectionLatitude);\n const deltaLongitude = Math.tan(heading) * (sigma2 - sigma1);\n const longitude = CesiumMath.negativePiToPi(start.longitude + deltaLongitude);\n\n if (defined(result)) {\n result.longitude = longitude;\n result.latitude = intersectionLatitude;\n result.height = 0;\n\n return result;\n }\n\n return new Cartographic(longitude, intersectionLatitude, 0);\n};\nexport default EllipsoidRhumbLine;\n"],"names":["CesiumMath","Cartesian3","Check","Cartographic","defined","defaultValue","Ellipsoid","DeveloperError"],"mappings":"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"} |