{"version":3,"file":"EllipsoidGeodesic-ed024f16.js","sources":["../../../../Source/Core/EllipsoidGeodesic.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 Ellipsoid from \"./Ellipsoid.js\";\nimport CesiumMath from \"./Math.js\";\n\nfunction setConstants(ellipsoidGeodesic) {\n const uSquared = ellipsoidGeodesic._uSquared;\n const a = ellipsoidGeodesic._ellipsoid.maximumRadius;\n const b = ellipsoidGeodesic._ellipsoid.minimumRadius;\n const f = (a - b) / a;\n\n const cosineHeading = Math.cos(ellipsoidGeodesic._startHeading);\n const sineHeading = Math.sin(ellipsoidGeodesic._startHeading);\n\n const tanU = (1 - f) * Math.tan(ellipsoidGeodesic._start.latitude);\n\n const cosineU = 1.0 / Math.sqrt(1.0 + tanU * tanU);\n const sineU = cosineU * tanU;\n\n const sigma = Math.atan2(tanU, cosineHeading);\n\n const sineAlpha = cosineU * sineHeading;\n const sineSquaredAlpha = sineAlpha * sineAlpha;\n\n const cosineSquaredAlpha = 1.0 - sineSquaredAlpha;\n const cosineAlpha = Math.sqrt(cosineSquaredAlpha);\n\n const u2Over4 = uSquared / 4.0;\n const u4Over16 = u2Over4 * u2Over4;\n const u6Over64 = u4Over16 * u2Over4;\n const u8Over256 = u4Over16 * u4Over16;\n\n const a0 =\n 1.0 +\n u2Over4 -\n (3.0 * u4Over16) / 4.0 +\n (5.0 * u6Over64) / 4.0 -\n (175.0 * u8Over256) / 64.0;\n const a1 = 1.0 - u2Over4 + (15.0 * u4Over16) / 8.0 - (35.0 * u6Over64) / 8.0;\n const a2 = 1.0 - 3.0 * u2Over4 + (35.0 * u4Over16) / 4.0;\n const a3 = 1.0 - 5.0 * u2Over4;\n\n const distanceRatio =\n a0 * sigma -\n (a1 * Math.sin(2.0 * sigma) * u2Over4) / 2.0 -\n (a2 * Math.sin(4.0 * sigma) * u4Over16) / 16.0 -\n (a3 * Math.sin(6.0 * sigma) * u6Over64) / 48.0 -\n (Math.sin(8.0 * sigma) * 5.0 * u8Over256) / 512;\n\n const constants = ellipsoidGeodesic._constants;\n\n constants.a = a;\n constants.b = b;\n constants.f = f;\n constants.cosineHeading = cosineHeading;\n constants.sineHeading = sineHeading;\n constants.tanU = tanU;\n constants.cosineU = cosineU;\n constants.sineU = sineU;\n constants.sigma = sigma;\n constants.sineAlpha = sineAlpha;\n constants.sineSquaredAlpha = sineSquaredAlpha;\n constants.cosineSquaredAlpha = cosineSquaredAlpha;\n constants.cosineAlpha = cosineAlpha;\n constants.u2Over4 = u2Over4;\n constants.u4Over16 = u4Over16;\n constants.u6Over64 = u6Over64;\n constants.u8Over256 = u8Over256;\n constants.a0 = a0;\n constants.a1 = a1;\n constants.a2 = a2;\n constants.a3 = a3;\n constants.distanceRatio = distanceRatio;\n}\n\nfunction computeC(f, cosineSquaredAlpha) {\n return (\n (f * cosineSquaredAlpha * (4.0 + f * (4.0 - 3.0 * cosineSquaredAlpha))) /\n 16.0\n );\n}\n\nfunction computeDeltaLambda(\n f,\n sineAlpha,\n cosineSquaredAlpha,\n sigma,\n sineSigma,\n cosineSigma,\n cosineTwiceSigmaMidpoint\n) {\n const C = computeC(f, cosineSquaredAlpha);\n\n return (\n (1.0 - C) *\n f *\n sineAlpha *\n (sigma +\n C *\n sineSigma *\n (cosineTwiceSigmaMidpoint +\n C *\n cosineSigma *\n (2.0 * cosineTwiceSigmaMidpoint * cosineTwiceSigmaMidpoint - 1.0)))\n );\n}\n\nfunction vincentyInverseFormula(\n ellipsoidGeodesic,\n major,\n minor,\n firstLongitude,\n firstLatitude,\n secondLongitude,\n secondLatitude\n) {\n const eff = (major - minor) / major;\n const l = secondLongitude - firstLongitude;\n\n const u1 = Math.atan((1 - eff) * Math.tan(firstLatitude));\n const u2 = Math.atan((1 - eff) * Math.tan(secondLatitude));\n\n const cosineU1 = Math.cos(u1);\n const sineU1 = Math.sin(u1);\n const cosineU2 = Math.cos(u2);\n const sineU2 = Math.sin(u2);\n\n const cc = cosineU1 * cosineU2;\n const cs = cosineU1 * sineU2;\n const ss = sineU1 * sineU2;\n const sc = sineU1 * cosineU2;\n\n let lambda = l;\n let lambdaDot = CesiumMath.TWO_PI;\n\n let cosineLambda = Math.cos(lambda);\n let sineLambda = Math.sin(lambda);\n\n let sigma;\n let cosineSigma;\n let sineSigma;\n let cosineSquaredAlpha;\n let cosineTwiceSigmaMidpoint;\n\n do {\n cosineLambda = Math.cos(lambda);\n sineLambda = Math.sin(lambda);\n\n const temp = cs - sc * cosineLambda;\n sineSigma = Math.sqrt(\n cosineU2 * cosineU2 * sineLambda * sineLambda + temp * temp\n );\n cosineSigma = ss + cc * cosineLambda;\n\n sigma = Math.atan2(sineSigma, cosineSigma);\n\n let sineAlpha;\n\n if (sineSigma === 0.0) {\n sineAlpha = 0.0;\n cosineSquaredAlpha = 1.0;\n } else {\n sineAlpha = (cc * sineLambda) / sineSigma;\n cosineSquaredAlpha = 1.0 - sineAlpha * sineAlpha;\n }\n\n lambdaDot = lambda;\n\n cosineTwiceSigmaMidpoint = cosineSigma - (2.0 * ss) / cosineSquaredAlpha;\n\n if (!isFinite(cosineTwiceSigmaMidpoint)) {\n cosineTwiceSigmaMidpoint = 0.0;\n }\n\n lambda =\n l +\n computeDeltaLambda(\n eff,\n sineAlpha,\n cosineSquaredAlpha,\n sigma,\n sineSigma,\n cosineSigma,\n cosineTwiceSigmaMidpoint\n );\n } while (Math.abs(lambda - lambdaDot) > CesiumMath.EPSILON12);\n\n const uSquared =\n (cosineSquaredAlpha * (major * major - minor * minor)) / (minor * minor);\n const A =\n 1.0 +\n (uSquared *\n (4096.0 + uSquared * (uSquared * (320.0 - 175.0 * uSquared) - 768.0))) /\n 16384.0;\n const B =\n (uSquared *\n (256.0 + uSquared * (uSquared * (74.0 - 47.0 * uSquared) - 128.0))) /\n 1024.0;\n\n const cosineSquaredTwiceSigmaMidpoint =\n cosineTwiceSigmaMidpoint * cosineTwiceSigmaMidpoint;\n const deltaSigma =\n B *\n sineSigma *\n (cosineTwiceSigmaMidpoint +\n (B *\n (cosineSigma * (2.0 * cosineSquaredTwiceSigmaMidpoint - 1.0) -\n (B *\n cosineTwiceSigmaMidpoint *\n (4.0 * sineSigma * sineSigma - 3.0) *\n (4.0 * cosineSquaredTwiceSigmaMidpoint - 3.0)) /\n 6.0)) /\n 4.0);\n\n const distance = minor * A * (sigma - deltaSigma);\n\n const startHeading = Math.atan2(\n cosineU2 * sineLambda,\n cs - sc * cosineLambda\n );\n const endHeading = Math.atan2(cosineU1 * sineLambda, cs * cosineLambda - sc);\n\n ellipsoidGeodesic._distance = distance;\n ellipsoidGeodesic._startHeading = startHeading;\n ellipsoidGeodesic._endHeading = endHeading;\n ellipsoidGeodesic._uSquared = uSquared;\n}\n\nconst scratchCart1 = new Cartesian3();\nconst scratchCart2 = new Cartesian3();\nfunction computeProperties(ellipsoidGeodesic, 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 vincentyInverseFormula(\n ellipsoidGeodesic,\n ellipsoid.maximumRadius,\n ellipsoid.minimumRadius,\n start.longitude,\n start.latitude,\n end.longitude,\n end.latitude\n );\n\n ellipsoidGeodesic._start = Cartographic.clone(\n start,\n ellipsoidGeodesic._start\n );\n ellipsoidGeodesic._end = Cartographic.clone(end, ellipsoidGeodesic._end);\n ellipsoidGeodesic._start.height = 0;\n ellipsoidGeodesic._end.height = 0;\n\n setConstants(ellipsoidGeodesic);\n}\n\n/**\n * Initializes a geodesic on the ellipsoid connecting the two provided planetodetic points.\n *\n * @alias EllipsoidGeodesic\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 geodesic lies.\n */\nfunction EllipsoidGeodesic(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._constants = {};\n this._startHeading = undefined;\n this._endHeading = undefined;\n this._distance = undefined;\n this._uSquared = undefined;\n\n if (defined(start) && defined(end)) {\n computeProperties(this, start, end, e);\n }\n}\n\nObject.defineProperties(EllipsoidGeodesic.prototype, {\n /**\n * Gets the ellipsoid.\n * @memberof EllipsoidGeodesic.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 EllipsoidGeodesic.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 EllipsoidGeodesic.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 EllipsoidGeodesic.prototype\n * @type {Cartographic}\n * @readonly\n */\n end: {\n get: function () {\n return this._end;\n },\n },\n\n /**\n * Gets the heading at the initial point.\n * @memberof EllipsoidGeodesic.prototype\n * @type {Number}\n * @readonly\n */\n startHeading: {\n get: function () {\n //>>includeStart('debug', pragmas.debug);\n Check.defined(\"distance\", this._distance);\n //>>includeEnd('debug');\n\n return this._startHeading;\n },\n },\n\n /**\n * Gets the heading at the final point.\n * @memberof EllipsoidGeodesic.prototype\n * @type {Number}\n * @readonly\n */\n endHeading: {\n get: function () {\n //>>includeStart('debug', pragmas.debug);\n Check.defined(\"distance\", this._distance);\n //>>includeEnd('debug');\n\n return this._endHeading;\n },\n },\n});\n\n/**\n * Sets the start and end points of the geodesic\n *\n * @param {Cartographic} start The initial planetodetic point on the path.\n * @param {Cartographic} end The final planetodetic point on the path.\n */\nEllipsoidGeodesic.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 geodesic.\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 geodesic.\n */\nEllipsoidGeodesic.prototype.interpolateUsingFraction = function (\n fraction,\n result\n) {\n return this.interpolateUsingSurfaceDistance(\n this._distance * fraction,\n result\n );\n};\n\n/**\n * Provides the location of a point at the indicated distance along the geodesic.\n *\n * @param {Number} distance The distance from the inital point to the point of interest along the geodesic\n * @param {Cartographic} [result] The object in which to store the result.\n * @returns {Cartographic} The location of the point along the geodesic.\n *\n * @exception {DeveloperError} start and end must be set before calling function interpolateUsingSurfaceDistance\n */\nEllipsoidGeodesic.prototype.interpolateUsingSurfaceDistance = function (\n distance,\n result\n) {\n //>>includeStart('debug', pragmas.debug);\n Check.defined(\"distance\", this._distance);\n //>>includeEnd('debug');\n\n const constants = this._constants;\n\n const s = constants.distanceRatio + distance / constants.b;\n\n const cosine2S = Math.cos(2.0 * s);\n const cosine4S = Math.cos(4.0 * s);\n const cosine6S = Math.cos(6.0 * s);\n const sine2S = Math.sin(2.0 * s);\n const sine4S = Math.sin(4.0 * s);\n const sine6S = Math.sin(6.0 * s);\n const sine8S = Math.sin(8.0 * s);\n\n const s2 = s * s;\n const s3 = s * s2;\n\n const u8Over256 = constants.u8Over256;\n const u2Over4 = constants.u2Over4;\n const u6Over64 = constants.u6Over64;\n const u4Over16 = constants.u4Over16;\n let sigma =\n (2.0 * s3 * u8Over256 * cosine2S) / 3.0 +\n s *\n (1.0 -\n u2Over4 +\n (7.0 * u4Over16) / 4.0 -\n (15.0 * u6Over64) / 4.0 +\n (579.0 * u8Over256) / 64.0 -\n (u4Over16 - (15.0 * u6Over64) / 4.0 + (187.0 * u8Over256) / 16.0) *\n cosine2S -\n ((5.0 * u6Over64) / 4.0 - (115.0 * u8Over256) / 16.0) * cosine4S -\n (29.0 * u8Over256 * cosine6S) / 16.0) +\n (u2Over4 / 2.0 -\n u4Over16 +\n (71.0 * u6Over64) / 32.0 -\n (85.0 * u8Over256) / 16.0) *\n sine2S +\n ((5.0 * u4Over16) / 16.0 -\n (5.0 * u6Over64) / 4.0 +\n (383.0 * u8Over256) / 96.0) *\n sine4S -\n s2 *\n ((u6Over64 - (11.0 * u8Over256) / 2.0) * sine2S +\n (5.0 * u8Over256 * sine4S) / 2.0) +\n ((29.0 * u6Over64) / 96.0 - (29.0 * u8Over256) / 16.0) * sine6S +\n (539.0 * u8Over256 * sine8S) / 1536.0;\n\n const theta = Math.asin(Math.sin(sigma) * constants.cosineAlpha);\n const latitude = Math.atan((constants.a / constants.b) * Math.tan(theta));\n\n // Redefine in terms of relative argument of latitude.\n sigma = sigma - constants.sigma;\n\n const cosineTwiceSigmaMidpoint = Math.cos(2.0 * constants.sigma + sigma);\n\n const sineSigma = Math.sin(sigma);\n const cosineSigma = Math.cos(sigma);\n\n const cc = constants.cosineU * cosineSigma;\n const ss = constants.sineU * sineSigma;\n\n const lambda = Math.atan2(\n sineSigma * constants.sineHeading,\n cc - ss * constants.cosineHeading\n );\n\n const l =\n lambda -\n computeDeltaLambda(\n constants.f,\n constants.sineAlpha,\n constants.cosineSquaredAlpha,\n sigma,\n sineSigma,\n cosineSigma,\n cosineTwiceSigmaMidpoint\n );\n\n if (defined(result)) {\n result.longitude = this._start.longitude + l;\n result.latitude = latitude;\n result.height = 0.0;\n return result;\n }\n\n return new Cartographic(this._start.longitude + l, latitude, 0.0);\n};\nexport default EllipsoidGeodesic;\n"],"names":["CesiumMath","Cartesian3","Check","Cartographic","defaultValue","Ellipsoid","defined"],"mappings":"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"}