Cartesian2-33d2657c.js.map 227 KB

1
  1. {"version":3,"file":"Cartesian2-33d2657c.js","sources":["../../../../Source/Core/Cartesian3.js","../../../../Source/Core/scaleToGeodeticSurface.js","../../../../Source/Core/Cartographic.js","../../../../Source/Core/Ellipsoid.js","../../../../Source/Core/Rectangle.js","../../../../Source/Core/Cartesian2.js"],"sourcesContent":["import Check from \"./Check.js\";\nimport defaultValue from \"./defaultValue.js\";\nimport defined from \"./defined.js\";\nimport DeveloperError from \"./DeveloperError.js\";\nimport CesiumMath from \"./Math.js\";\n\n/**\n * A 3D Cartesian point.\n * @alias Cartesian3\n * @constructor\n *\n * @param {Number} [x=0.0] The X component.\n * @param {Number} [y=0.0] The Y component.\n * @param {Number} [z=0.0] The Z component.\n *\n * @see Cartesian2\n * @see Cartesian4\n * @see Packable\n */\nfunction Cartesian3(x, y, z) {\n /**\n * The X component.\n * @type {Number}\n * @default 0.0\n */\n this.x = defaultValue(x, 0.0);\n\n /**\n * The Y component.\n * @type {Number}\n * @default 0.0\n */\n this.y = defaultValue(y, 0.0);\n\n /**\n * The Z component.\n * @type {Number}\n * @default 0.0\n */\n this.z = defaultValue(z, 0.0);\n}\n\n/**\n * Converts the provided Spherical into Cartesian3 coordinates.\n *\n * @param {Spherical} spherical The Spherical to be converted to Cartesian3.\n * @param {Cartesian3} [result] The object onto which to store the result.\n * @returns {Cartesian3} The modified result parameter or a new Cartesian3 instance if one was not provided.\n */\nCartesian3.fromSpherical = function (spherical, result) {\n //>>includeStart('debug', pragmas.debug);\n Check.typeOf.object(\"spherical\", spherical);\n //>>includeEnd('debug');\n\n if (!defined(result)) {\n result = new Cartesian3();\n }\n\n var clock = spherical.clock;\n var cone = spherical.cone;\n var magnitude = defaultValue(spherical.magnitude, 1.0);\n var radial = magnitude * Math.sin(cone);\n result.x = radial * Math.cos(clock);\n result.y = radial * Math.sin(clock);\n result.z = magnitude * Math.cos(cone);\n return result;\n};\n\n/**\n * Creates a Cartesian3 instance from x, y and z coordinates.\n *\n * @param {Number} x The x coordinate.\n * @param {Number} y The y coordinate.\n * @param {Number} z The z coordinate.\n * @param {Cartesian3} [result] The object onto which to store the result.\n * @returns {Cartesian3} The modified result parameter or a new Cartesian3 instance if one was not provided.\n */\nCartesian3.fromElements = function (x, y, z, result) {\n if (!defined(result)) {\n return new Cartesian3(x, y, z);\n }\n\n result.x = x;\n result.y = y;\n result.z = z;\n return result;\n};\n\n/**\n * Duplicates a Cartesian3 instance.\n *\n * @param {Cartesian3} cartesian The Cartesian to duplicate.\n * @param {Cartesian3} [result] The object onto which to store the result.\n * @returns {Cartesian3} The modified result parameter or a new Cartesian3 instance if one was not provided. (Returns undefined if cartesian is undefined)\n */\nCartesian3.clone = function (cartesian, result) {\n if (!defined(cartesian)) {\n return undefined;\n }\n if (!defined(result)) {\n return new Cartesian3(cartesian.x, cartesian.y, cartesian.z);\n }\n\n result.x = cartesian.x;\n result.y = cartesian.y;\n result.z = cartesian.z;\n return result;\n};\n\n/**\n * Creates a Cartesian3 instance from an existing Cartesian4. This simply takes the\n * x, y, and z properties of the Cartesian4 and drops w.\n * @function\n *\n * @param {Cartesian4} cartesian The Cartesian4 instance to create a Cartesian3 instance from.\n * @param {Cartesian3} [result] The object onto which to store the result.\n * @returns {Cartesian3} The modified result parameter or a new Cartesian3 instance if one was not provided.\n */\nCartesian3.fromCartesian4 = Cartesian3.clone;\n\n/**\n * The number of elements used to pack the object into an array.\n * @type {Number}\n */\nCartesian3.packedLength = 3;\n\n/**\n * Stores the provided instance into the provided array.\n *\n * @param {Cartesian3} value The value to pack.\n * @param {Number[]} array The array to pack into.\n * @param {Number} [startingIndex=0] The index into the array at which to start packing the elements.\n *\n * @returns {Number[]} The array that was packed into\n */\nCartesian3.pack = function (value, array, startingIndex) {\n //>>includeStart('debug', pragmas.debug);\n Check.typeOf.object(\"value\", value);\n Check.defined(\"array\", array);\n //>>includeEnd('debug');\n\n startingIndex = defaultValue(startingIndex, 0);\n\n array[startingIndex++] = value.x;\n array[startingIndex++] = value.y;\n array[startingIndex] = value.z;\n\n return array;\n};\n\n/**\n * Retrieves an instance from a packed array.\n *\n * @param {Number[]} array The packed array.\n * @param {Number} [startingIndex=0] The starting index of the element to be unpacked.\n * @param {Cartesian3} [result] The object into which to store the result.\n * @returns {Cartesian3} The modified result parameter or a new Cartesian3 instance if one was not provided.\n */\nCartesian3.unpack = function (array, startingIndex, result) {\n //>>includeStart('debug', pragmas.debug);\n Check.defined(\"array\", array);\n //>>includeEnd('debug');\n\n startingIndex = defaultValue(startingIndex, 0);\n\n if (!defined(result)) {\n result = new Cartesian3();\n }\n result.x = array[startingIndex++];\n result.y = array[startingIndex++];\n result.z = array[startingIndex];\n return result;\n};\n\n/**\n * Flattens an array of Cartesian3s into an array of components.\n *\n * @param {Cartesian3[]} array The array of cartesians to pack.\n * @param {Number[]} [result] The array onto which to store the result. If this is a typed array, it must have array.length * 3 components, else a {@link DeveloperError} will be thrown. If it is a regular array, it will be resized to have (array.length * 3) elements.\n * @returns {Number[]} The packed array.\n */\nCartesian3.packArray = function (array, result) {\n //>>includeStart('debug', pragmas.debug);\n Check.defined(\"array\", array);\n //>>includeEnd('debug');\n\n var length = array.length;\n var resultLength = length * 3;\n if (!defined(result)) {\n result = new Array(resultLength);\n } else if (!Array.isArray(result) && result.length !== resultLength) {\n throw new DeveloperError(\n \"If result is a typed array, it must have exactly array.length * 3 elements\"\n );\n } else if (result.length !== resultLength) {\n result.length = resultLength;\n }\n\n for (var i = 0; i < length; ++i) {\n Cartesian3.pack(array[i], result, i * 3);\n }\n return result;\n};\n\n/**\n * Unpacks an array of cartesian components into an array of Cartesian3s.\n *\n * @param {Number[]} array The array of components to unpack.\n * @param {Cartesian3[]} [result] The array onto which to store the result.\n * @returns {Cartesian3[]} The unpacked array.\n */\nCartesian3.unpackArray = function (array, result) {\n //>>includeStart('debug', pragmas.debug);\n Check.defined(\"array\", array);\n Check.typeOf.number.greaterThanOrEquals(\"array.length\", array.length, 3);\n if (array.length % 3 !== 0) {\n throw new DeveloperError(\"array length must be a multiple of 3.\");\n }\n //>>includeEnd('debug');\n\n var length = array.length;\n if (!defined(result)) {\n result = new Array(length / 3);\n } else {\n result.length = length / 3;\n }\n\n for (var i = 0; i < length; i += 3) {\n var index = i / 3;\n result[index] = Cartesian3.unpack(array, i, result[index]);\n }\n return result;\n};\n\n/**\n * Creates a Cartesian3 from three consecutive elements in an array.\n * @function\n *\n * @param {Number[]} array The array whose three consecutive elements correspond to the x, y, and z components, respectively.\n * @param {Number} [startingIndex=0] The offset into the array of the first element, which corresponds to the x component.\n * @param {Cartesian3} [result] The object onto which to store the result.\n * @returns {Cartesian3} The modified result parameter or a new Cartesian3 instance if one was not provided.\n *\n * @example\n * // Create a Cartesian3 with (1.0, 2.0, 3.0)\n * var v = [1.0, 2.0, 3.0];\n * var p = Cesium.Cartesian3.fromArray(v);\n *\n * // Create a Cartesian3 with (1.0, 2.0, 3.0) using an offset into an array\n * var v2 = [0.0, 0.0, 1.0, 2.0, 3.0];\n * var p2 = Cesium.Cartesian3.fromArray(v2, 2);\n */\nCartesian3.fromArray = Cartesian3.unpack;\n\n/**\n * Computes the value of the maximum component for the supplied Cartesian.\n *\n * @param {Cartesian3} cartesian The cartesian to use.\n * @returns {Number} The value of the maximum component.\n */\nCartesian3.maximumComponent = function (cartesian) {\n //>>includeStart('debug', pragmas.debug);\n Check.typeOf.object(\"cartesian\", cartesian);\n //>>includeEnd('debug');\n\n return Math.max(cartesian.x, cartesian.y, cartesian.z);\n};\n\n/**\n * Computes the value of the minimum component for the supplied Cartesian.\n *\n * @param {Cartesian3} cartesian The cartesian to use.\n * @returns {Number} The value of the minimum component.\n */\nCartesian3.minimumComponent = function (cartesian) {\n //>>includeStart('debug', pragmas.debug);\n Check.typeOf.object(\"cartesian\", cartesian);\n //>>includeEnd('debug');\n\n return Math.min(cartesian.x, cartesian.y, cartesian.z);\n};\n\n/**\n * Compares two Cartesians and computes a Cartesian which contains the minimum components of the supplied Cartesians.\n *\n * @param {Cartesian3} first A cartesian to compare.\n * @param {Cartesian3} second A cartesian to compare.\n * @param {Cartesian3} result The object into which to store the result.\n * @returns {Cartesian3} A cartesian with the minimum components.\n */\nCartesian3.minimumByComponent = function (first, second, result) {\n //>>includeStart('debug', pragmas.debug);\n Check.typeOf.object(\"first\", first);\n Check.typeOf.object(\"second\", second);\n Check.typeOf.object(\"result\", result);\n //>>includeEnd('debug');\n\n result.x = Math.min(first.x, second.x);\n result.y = Math.min(first.y, second.y);\n result.z = Math.min(first.z, second.z);\n\n return result;\n};\n\n/**\n * Compares two Cartesians and computes a Cartesian which contains the maximum components of the supplied Cartesians.\n *\n * @param {Cartesian3} first A cartesian to compare.\n * @param {Cartesian3} second A cartesian to compare.\n * @param {Cartesian3} result The object into which to store the result.\n * @returns {Cartesian3} A cartesian with the maximum components.\n */\nCartesian3.maximumByComponent = function (first, second, result) {\n //>>includeStart('debug', pragmas.debug);\n Check.typeOf.object(\"first\", first);\n Check.typeOf.object(\"second\", second);\n Check.typeOf.object(\"result\", result);\n //>>includeEnd('debug');\n\n result.x = Math.max(first.x, second.x);\n result.y = Math.max(first.y, second.y);\n result.z = Math.max(first.z, second.z);\n return result;\n};\n\n/**\n * Computes the provided Cartesian's squared magnitude.\n *\n * @param {Cartesian3} cartesian The Cartesian instance whose squared magnitude is to be computed.\n * @returns {Number} The squared magnitude.\n */\nCartesian3.magnitudeSquared = function (cartesian) {\n //>>includeStart('debug', pragmas.debug);\n Check.typeOf.object(\"cartesian\", cartesian);\n //>>includeEnd('debug');\n\n return (\n cartesian.x * cartesian.x +\n cartesian.y * cartesian.y +\n cartesian.z * cartesian.z\n );\n};\n\n/**\n * Computes the Cartesian's magnitude (length).\n *\n * @param {Cartesian3} cartesian The Cartesian instance whose magnitude is to be computed.\n * @returns {Number} The magnitude.\n */\nCartesian3.magnitude = function (cartesian) {\n return Math.sqrt(Cartesian3.magnitudeSquared(cartesian));\n};\n\nvar distanceScratch = new Cartesian3();\n\n/**\n * Computes the distance between two points.\n *\n * @param {Cartesian3} left The first point to compute the distance from.\n * @param {Cartesian3} right The second point to compute the distance to.\n * @returns {Number} The distance between two points.\n *\n * @example\n * // Returns 1.0\n * var d = Cesium.Cartesian3.distance(new Cesium.Cartesian3(1.0, 0.0, 0.0), new Cesium.Cartesian3(2.0, 0.0, 0.0));\n */\nCartesian3.distance = function (left, right) {\n //>>includeStart('debug', pragmas.debug);\n Check.typeOf.object(\"left\", left);\n Check.typeOf.object(\"right\", right);\n //>>includeEnd('debug');\n\n Cartesian3.subtract(left, right, distanceScratch);\n return Cartesian3.magnitude(distanceScratch);\n};\n\n/**\n * Computes the squared distance between two points. Comparing squared distances\n * using this function is more efficient than comparing distances using {@link Cartesian3#distance}.\n *\n * @param {Cartesian3} left The first point to compute the distance from.\n * @param {Cartesian3} right The second point to compute the distance to.\n * @returns {Number} The distance between two points.\n *\n * @example\n * // Returns 4.0, not 2.0\n * var d = Cesium.Cartesian3.distanceSquared(new Cesium.Cartesian3(1.0, 0.0, 0.0), new Cesium.Cartesian3(3.0, 0.0, 0.0));\n */\nCartesian3.distanceSquared = function (left, right) {\n //>>includeStart('debug', pragmas.debug);\n Check.typeOf.object(\"left\", left);\n Check.typeOf.object(\"right\", right);\n //>>includeEnd('debug');\n\n Cartesian3.subtract(left, right, distanceScratch);\n return Cartesian3.magnitudeSquared(distanceScratch);\n};\n\n/**\n * Computes the normalized form of the supplied Cartesian.\n *\n * @param {Cartesian3} cartesian The Cartesian to be normalized.\n * @param {Cartesian3} result The object onto which to store the result.\n * @returns {Cartesian3} The modified result parameter.\n */\nCartesian3.normalize = function (cartesian, result) {\n //>>includeStart('debug', pragmas.debug);\n Check.typeOf.object(\"cartesian\", cartesian);\n Check.typeOf.object(\"result\", result);\n //>>includeEnd('debug');\n\n var magnitude = Cartesian3.magnitude(cartesian);\n\n result.x = cartesian.x / magnitude;\n result.y = cartesian.y / magnitude;\n result.z = cartesian.z / magnitude;\n\n //>>includeStart('debug', pragmas.debug);\n if (isNaN(result.x) || isNaN(result.y) || isNaN(result.z)) {\n throw new DeveloperError(\"normalized result is not a number\");\n }\n //>>includeEnd('debug');\n\n return result;\n};\n\n/**\n * Computes the dot (scalar) product of two Cartesians.\n *\n * @param {Cartesian3} left The first Cartesian.\n * @param {Cartesian3} right The second Cartesian.\n * @returns {Number} The dot product.\n */\nCartesian3.dot = function (left, right) {\n //>>includeStart('debug', pragmas.debug);\n Check.typeOf.object(\"left\", left);\n Check.typeOf.object(\"right\", right);\n //>>includeEnd('debug');\n\n return left.x * right.x + left.y * right.y + left.z * right.z;\n};\n\n/**\n * Computes the componentwise product of two Cartesians.\n *\n * @param {Cartesian3} left The first Cartesian.\n * @param {Cartesian3} right The second Cartesian.\n * @param {Cartesian3} result The object onto which to store the result.\n * @returns {Cartesian3} The modified result parameter.\n */\nCartesian3.multiplyComponents = function (left, right, result) {\n //>>includeStart('debug', pragmas.debug);\n Check.typeOf.object(\"left\", left);\n Check.typeOf.object(\"right\", right);\n Check.typeOf.object(\"result\", result);\n //>>includeEnd('debug');\n\n result.x = left.x * right.x;\n result.y = left.y * right.y;\n result.z = left.z * right.z;\n return result;\n};\n\n/**\n * Computes the componentwise quotient of two Cartesians.\n *\n * @param {Cartesian3} left The first Cartesian.\n * @param {Cartesian3} right The second Cartesian.\n * @param {Cartesian3} result The object onto which to store the result.\n * @returns {Cartesian3} The modified result parameter.\n */\nCartesian3.divideComponents = function (left, right, result) {\n //>>includeStart('debug', pragmas.debug);\n Check.typeOf.object(\"left\", left);\n Check.typeOf.object(\"right\", right);\n Check.typeOf.object(\"result\", result);\n //>>includeEnd('debug');\n\n result.x = left.x / right.x;\n result.y = left.y / right.y;\n result.z = left.z / right.z;\n return result;\n};\n\n/**\n * Computes the componentwise sum of two Cartesians.\n *\n * @param {Cartesian3} left The first Cartesian.\n * @param {Cartesian3} right The second Cartesian.\n * @param {Cartesian3} result The object onto which to store the result.\n * @returns {Cartesian3} The modified result parameter.\n */\nCartesian3.add = function (left, right, result) {\n //>>includeStart('debug', pragmas.debug);\n Check.typeOf.object(\"left\", left);\n Check.typeOf.object(\"right\", right);\n Check.typeOf.object(\"result\", result);\n //>>includeEnd('debug');\n\n result.x = left.x + right.x;\n result.y = left.y + right.y;\n result.z = left.z + right.z;\n return result;\n};\n\n/**\n * Computes the componentwise difference of two Cartesians.\n *\n * @param {Cartesian3} left The first Cartesian.\n * @param {Cartesian3} right The second Cartesian.\n * @param {Cartesian3} result The object onto which to store the result.\n * @returns {Cartesian3} The modified result parameter.\n */\nCartesian3.subtract = function (left, right, result) {\n //>>includeStart('debug', pragmas.debug);\n Check.typeOf.object(\"left\", left);\n Check.typeOf.object(\"right\", right);\n Check.typeOf.object(\"result\", result);\n //>>includeEnd('debug');\n\n result.x = left.x - right.x;\n result.y = left.y - right.y;\n result.z = left.z - right.z;\n return result;\n};\n\n/**\n * Multiplies the provided Cartesian componentwise by the provided scalar.\n *\n * @param {Cartesian3} cartesian The Cartesian to be scaled.\n * @param {Number} scalar The scalar to multiply with.\n * @param {Cartesian3} result The object onto which to store the result.\n * @returns {Cartesian3} The modified result parameter.\n */\nCartesian3.multiplyByScalar = function (cartesian, scalar, result) {\n //>>includeStart('debug', pragmas.debug);\n Check.typeOf.object(\"cartesian\", cartesian);\n Check.typeOf.number(\"scalar\", scalar);\n Check.typeOf.object(\"result\", result);\n //>>includeEnd('debug');\n\n result.x = cartesian.x * scalar;\n result.y = cartesian.y * scalar;\n result.z = cartesian.z * scalar;\n return result;\n};\n\n/**\n * Divides the provided Cartesian componentwise by the provided scalar.\n *\n * @param {Cartesian3} cartesian The Cartesian to be divided.\n * @param {Number} scalar The scalar to divide by.\n * @param {Cartesian3} result The object onto which to store the result.\n * @returns {Cartesian3} The modified result parameter.\n */\nCartesian3.divideByScalar = function (cartesian, scalar, result) {\n //>>includeStart('debug', pragmas.debug);\n Check.typeOf.object(\"cartesian\", cartesian);\n Check.typeOf.number(\"scalar\", scalar);\n Check.typeOf.object(\"result\", result);\n //>>includeEnd('debug');\n\n result.x = cartesian.x / scalar;\n result.y = cartesian.y / scalar;\n result.z = cartesian.z / scalar;\n return result;\n};\n\n/**\n * Negates the provided Cartesian.\n *\n * @param {Cartesian3} cartesian The Cartesian to be negated.\n * @param {Cartesian3} result The object onto which to store the result.\n * @returns {Cartesian3} The modified result parameter.\n */\nCartesian3.negate = function (cartesian, result) {\n //>>includeStart('debug', pragmas.debug);\n Check.typeOf.object(\"cartesian\", cartesian);\n Check.typeOf.object(\"result\", result);\n //>>includeEnd('debug');\n\n result.x = -cartesian.x;\n result.y = -cartesian.y;\n result.z = -cartesian.z;\n return result;\n};\n\n/**\n * Computes the absolute value of the provided Cartesian.\n *\n * @param {Cartesian3} cartesian The Cartesian whose absolute value is to be computed.\n * @param {Cartesian3} result The object onto which to store the result.\n * @returns {Cartesian3} The modified result parameter.\n */\nCartesian3.abs = function (cartesian, result) {\n //>>includeStart('debug', pragmas.debug);\n Check.typeOf.object(\"cartesian\", cartesian);\n Check.typeOf.object(\"result\", result);\n //>>includeEnd('debug');\n\n result.x = Math.abs(cartesian.x);\n result.y = Math.abs(cartesian.y);\n result.z = Math.abs(cartesian.z);\n return result;\n};\n\nvar lerpScratch = new Cartesian3();\n/**\n * Computes the linear interpolation or extrapolation at t using the provided cartesians.\n *\n * @param {Cartesian3} start The value corresponding to t at 0.0.\n * @param {Cartesian3} end The value corresponding to t at 1.0.\n * @param {Number} t The point along t at which to interpolate.\n * @param {Cartesian3} result The object onto which to store the result.\n * @returns {Cartesian3} The modified result parameter.\n */\nCartesian3.lerp = function (start, end, t, result) {\n //>>includeStart('debug', pragmas.debug);\n Check.typeOf.object(\"start\", start);\n Check.typeOf.object(\"end\", end);\n Check.typeOf.number(\"t\", t);\n Check.typeOf.object(\"result\", result);\n //>>includeEnd('debug');\n\n Cartesian3.multiplyByScalar(end, t, lerpScratch);\n result = Cartesian3.multiplyByScalar(start, 1.0 - t, result);\n return Cartesian3.add(lerpScratch, result, result);\n};\n\nvar angleBetweenScratch = new Cartesian3();\nvar angleBetweenScratch2 = new Cartesian3();\n/**\n * Returns the angle, in radians, between the provided Cartesians.\n *\n * @param {Cartesian3} left The first Cartesian.\n * @param {Cartesian3} right The second Cartesian.\n * @returns {Number} The angle between the Cartesians.\n */\nCartesian3.angleBetween = function (left, right) {\n //>>includeStart('debug', pragmas.debug);\n Check.typeOf.object(\"left\", left);\n Check.typeOf.object(\"right\", right);\n //>>includeEnd('debug');\n\n Cartesian3.normalize(left, angleBetweenScratch);\n Cartesian3.normalize(right, angleBetweenScratch2);\n var cosine = Cartesian3.dot(angleBetweenScratch, angleBetweenScratch2);\n var sine = Cartesian3.magnitude(\n Cartesian3.cross(\n angleBetweenScratch,\n angleBetweenScratch2,\n angleBetweenScratch\n )\n );\n return Math.atan2(sine, cosine);\n};\n\nvar mostOrthogonalAxisScratch = new Cartesian3();\n/**\n * Returns the axis that is most orthogonal to the provided Cartesian.\n *\n * @param {Cartesian3} cartesian The Cartesian on which to find the most orthogonal axis.\n * @param {Cartesian3} result The object onto which to store the result.\n * @returns {Cartesian3} The most orthogonal axis.\n */\nCartesian3.mostOrthogonalAxis = function (cartesian, result) {\n //>>includeStart('debug', pragmas.debug);\n Check.typeOf.object(\"cartesian\", cartesian);\n Check.typeOf.object(\"result\", result);\n //>>includeEnd('debug');\n\n var f = Cartesian3.normalize(cartesian, mostOrthogonalAxisScratch);\n Cartesian3.abs(f, f);\n\n if (f.x <= f.y) {\n if (f.x <= f.z) {\n result = Cartesian3.clone(Cartesian3.UNIT_X, result);\n } else {\n result = Cartesian3.clone(Cartesian3.UNIT_Z, result);\n }\n } else if (f.y <= f.z) {\n result = Cartesian3.clone(Cartesian3.UNIT_Y, result);\n } else {\n result = Cartesian3.clone(Cartesian3.UNIT_Z, result);\n }\n\n return result;\n};\n\n/**\n * Projects vector a onto vector b\n * @param {Cartesian3} a The vector that needs projecting\n * @param {Cartesian3} b The vector to project onto\n * @param {Cartesian3} result The result cartesian\n * @returns {Cartesian3} The modified result parameter\n */\nCartesian3.projectVector = function (a, b, result) {\n //>>includeStart('debug', pragmas.debug);\n Check.defined(\"a\", a);\n Check.defined(\"b\", b);\n Check.defined(\"result\", result);\n //>>includeEnd('debug');\n\n var scalar = Cartesian3.dot(a, b) / Cartesian3.dot(b, b);\n return Cartesian3.multiplyByScalar(b, scalar, result);\n};\n\n/**\n * Compares the provided Cartesians componentwise and returns\n * <code>true</code> if they are equal, <code>false</code> otherwise.\n *\n * @param {Cartesian3} [left] The first Cartesian.\n * @param {Cartesian3} [right] The second Cartesian.\n * @returns {Boolean} <code>true</code> if left and right are equal, <code>false</code> otherwise.\n */\nCartesian3.equals = function (left, right) {\n return (\n left === right ||\n (defined(left) &&\n defined(right) &&\n left.x === right.x &&\n left.y === right.y &&\n left.z === right.z)\n );\n};\n\n/**\n * @private\n */\nCartesian3.equalsArray = function (cartesian, array, offset) {\n return (\n cartesian.x === array[offset] &&\n cartesian.y === array[offset + 1] &&\n cartesian.z === array[offset + 2]\n );\n};\n\n/**\n * Compares the provided Cartesians componentwise and returns\n * <code>true</code> if they pass an absolute or relative tolerance test,\n * <code>false</code> otherwise.\n *\n * @param {Cartesian3} [left] The first Cartesian.\n * @param {Cartesian3} [right] The second Cartesian.\n * @param {Number} [relativeEpsilon=0] The relative epsilon tolerance to use for equality testing.\n * @param {Number} [absoluteEpsilon=relativeEpsilon] The absolute epsilon tolerance to use for equality testing.\n * @returns {Boolean} <code>true</code> if left and right are within the provided epsilon, <code>false</code> otherwise.\n */\nCartesian3.equalsEpsilon = function (\n left,\n right,\n relativeEpsilon,\n absoluteEpsilon\n) {\n return (\n left === right ||\n (defined(left) &&\n defined(right) &&\n CesiumMath.equalsEpsilon(\n left.x,\n right.x,\n relativeEpsilon,\n absoluteEpsilon\n ) &&\n CesiumMath.equalsEpsilon(\n left.y,\n right.y,\n relativeEpsilon,\n absoluteEpsilon\n ) &&\n CesiumMath.equalsEpsilon(\n left.z,\n right.z,\n relativeEpsilon,\n absoluteEpsilon\n ))\n );\n};\n\n/**\n * Computes the cross (outer) product of two Cartesians.\n *\n * @param {Cartesian3} left The first Cartesian.\n * @param {Cartesian3} right The second Cartesian.\n * @param {Cartesian3} result The object onto which to store the result.\n * @returns {Cartesian3} The cross product.\n */\nCartesian3.cross = function (left, right, result) {\n //>>includeStart('debug', pragmas.debug);\n Check.typeOf.object(\"left\", left);\n Check.typeOf.object(\"right\", right);\n Check.typeOf.object(\"result\", result);\n //>>includeEnd('debug');\n\n var leftX = left.x;\n var leftY = left.y;\n var leftZ = left.z;\n var rightX = right.x;\n var rightY = right.y;\n var rightZ = right.z;\n\n var x = leftY * rightZ - leftZ * rightY;\n var y = leftZ * rightX - leftX * rightZ;\n var z = leftX * rightY - leftY * rightX;\n\n result.x = x;\n result.y = y;\n result.z = z;\n return result;\n};\n\n/**\n * Computes the midpoint between the right and left Cartesian.\n * @param {Cartesian3} left The first Cartesian.\n * @param {Cartesian3} right The second Cartesian.\n * @param {Cartesian3} result The object onto which to store the result.\n * @returns {Cartesian3} The midpoint.\n */\nCartesian3.midpoint = function (left, right, result) {\n //>>includeStart('debug', pragmas.debug);\n Check.typeOf.object(\"left\", left);\n Check.typeOf.object(\"right\", right);\n Check.typeOf.object(\"result\", result);\n //>>includeEnd('debug');\n\n result.x = (left.x + right.x) * 0.5;\n result.y = (left.y + right.y) * 0.5;\n result.z = (left.z + right.z) * 0.5;\n\n return result;\n};\n\n/**\n * Returns a Cartesian3 position from longitude and latitude values given in degrees.\n *\n * @param {Number} longitude The longitude, in degrees\n * @param {Number} latitude The latitude, in degrees\n * @param {Number} [height=0.0] The height, in meters, above the ellipsoid.\n * @param {Ellipsoid} [ellipsoid=Ellipsoid.WGS84] The ellipsoid on which the position lies.\n * @param {Cartesian3} [result] The object onto which to store the result.\n * @returns {Cartesian3} The position\n *\n * @example\n * var position = Cesium.Cartesian3.fromDegrees(-115.0, 37.0);\n */\nCartesian3.fromDegrees = function (\n longitude,\n latitude,\n height,\n ellipsoid,\n result\n) {\n //>>includeStart('debug', pragmas.debug);\n Check.typeOf.number(\"longitude\", longitude);\n Check.typeOf.number(\"latitude\", latitude);\n //>>includeEnd('debug');\n\n longitude = CesiumMath.toRadians(longitude);\n latitude = CesiumMath.toRadians(latitude);\n return Cartesian3.fromRadians(longitude, latitude, height, ellipsoid, result);\n};\n\nvar scratchN = new Cartesian3();\nvar scratchK = new Cartesian3();\nvar wgs84RadiiSquared = new Cartesian3(\n 6378137.0 * 6378137.0,\n 6378137.0 * 6378137.0,\n 6356752.3142451793 * 6356752.3142451793\n);\n\n/**\n * Returns a Cartesian3 position from longitude and latitude values given in radians.\n *\n * @param {Number} longitude The longitude, in radians\n * @param {Number} latitude The latitude, in radians\n * @param {Number} [height=0.0] The height, in meters, above the ellipsoid.\n * @param {Ellipsoid} [ellipsoid=Ellipsoid.WGS84] The ellipsoid on which the position lies.\n * @param {Cartesian3} [result] The object onto which to store the result.\n * @returns {Cartesian3} The position\n *\n * @example\n * var position = Cesium.Cartesian3.fromRadians(-2.007, 0.645);\n */\nCartesian3.fromRadians = function (\n longitude,\n latitude,\n height,\n ellipsoid,\n result\n) {\n //>>includeStart('debug', pragmas.debug);\n Check.typeOf.number(\"longitude\", longitude);\n Check.typeOf.number(\"latitude\", latitude);\n //>>includeEnd('debug');\n\n height = defaultValue(height, 0.0);\n var radiiSquared = defined(ellipsoid)\n ? ellipsoid.radiiSquared\n : wgs84RadiiSquared;\n\n var cosLatitude = Math.cos(latitude);\n scratchN.x = cosLatitude * Math.cos(longitude);\n scratchN.y = cosLatitude * Math.sin(longitude);\n scratchN.z = Math.sin(latitude);\n scratchN = Cartesian3.normalize(scratchN, scratchN);\n\n Cartesian3.multiplyComponents(radiiSquared, scratchN, scratchK);\n var gamma = Math.sqrt(Cartesian3.dot(scratchN, scratchK));\n scratchK = Cartesian3.divideByScalar(scratchK, gamma, scratchK);\n scratchN = Cartesian3.multiplyByScalar(scratchN, height, scratchN);\n\n if (!defined(result)) {\n result = new Cartesian3();\n }\n return Cartesian3.add(scratchK, scratchN, result);\n};\n\n/**\n * Returns an array of Cartesian3 positions given an array of longitude and latitude values given in degrees.\n *\n * @param {Number[]} coordinates A list of longitude and latitude values. Values alternate [longitude, latitude, longitude, latitude...].\n * @param {Ellipsoid} [ellipsoid=Ellipsoid.WGS84] The ellipsoid on which the coordinates lie.\n * @param {Cartesian3[]} [result] An array of Cartesian3 objects to store the result.\n * @returns {Cartesian3[]} The array of positions.\n *\n * @example\n * var positions = Cesium.Cartesian3.fromDegreesArray([-115.0, 37.0, -107.0, 33.0]);\n */\nCartesian3.fromDegreesArray = function (coordinates, ellipsoid, result) {\n //>>includeStart('debug', pragmas.debug);\n Check.defined(\"coordinates\", coordinates);\n if (coordinates.length < 2 || coordinates.length % 2 !== 0) {\n throw new DeveloperError(\n \"the number of coordinates must be a multiple of 2 and at least 2\"\n );\n }\n //>>includeEnd('debug');\n\n var length = coordinates.length;\n if (!defined(result)) {\n result = new Array(length / 2);\n } else {\n result.length = length / 2;\n }\n\n for (var i = 0; i < length; i += 2) {\n var longitude = coordinates[i];\n var latitude = coordinates[i + 1];\n var index = i / 2;\n result[index] = Cartesian3.fromDegrees(\n longitude,\n latitude,\n 0,\n ellipsoid,\n result[index]\n );\n }\n\n return result;\n};\n\n/**\n * Returns an array of Cartesian3 positions given an array of longitude and latitude values given in radians.\n *\n * @param {Number[]} coordinates A list of longitude and latitude values. Values alternate [longitude, latitude, longitude, latitude...].\n * @param {Ellipsoid} [ellipsoid=Ellipsoid.WGS84] The ellipsoid on which the coordinates lie.\n * @param {Cartesian3[]} [result] An array of Cartesian3 objects to store the result.\n * @returns {Cartesian3[]} The array of positions.\n *\n * @example\n * var positions = Cesium.Cartesian3.fromRadiansArray([-2.007, 0.645, -1.867, .575]);\n */\nCartesian3.fromRadiansArray = function (coordinates, ellipsoid, result) {\n //>>includeStart('debug', pragmas.debug);\n Check.defined(\"coordinates\", coordinates);\n if (coordinates.length < 2 || coordinates.length % 2 !== 0) {\n throw new DeveloperError(\n \"the number of coordinates must be a multiple of 2 and at least 2\"\n );\n }\n //>>includeEnd('debug');\n\n var length = coordinates.length;\n if (!defined(result)) {\n result = new Array(length / 2);\n } else {\n result.length = length / 2;\n }\n\n for (var i = 0; i < length; i += 2) {\n var longitude = coordinates[i];\n var latitude = coordinates[i + 1];\n var index = i / 2;\n result[index] = Cartesian3.fromRadians(\n longitude,\n latitude,\n 0,\n ellipsoid,\n result[index]\n );\n }\n\n return result;\n};\n\n/**\n * Returns an array of Cartesian3 positions given an array of longitude, latitude and height values where longitude and latitude are given in degrees.\n *\n * @param {Number[]} coordinates A list of longitude, latitude and height values. Values alternate [longitude, latitude, height, longitude, latitude, height...].\n * @param {Ellipsoid} [ellipsoid=Ellipsoid.WGS84] The ellipsoid on which the position lies.\n * @param {Cartesian3[]} [result] An array of Cartesian3 objects to store the result.\n * @returns {Cartesian3[]} The array of positions.\n *\n * @example\n * var positions = Cesium.Cartesian3.fromDegreesArrayHeights([-115.0, 37.0, 100000.0, -107.0, 33.0, 150000.0]);\n */\nCartesian3.fromDegreesArrayHeights = function (coordinates, ellipsoid, result) {\n //>>includeStart('debug', pragmas.debug);\n Check.defined(\"coordinates\", coordinates);\n if (coordinates.length < 3 || coordinates.length % 3 !== 0) {\n throw new DeveloperError(\n \"the number of coordinates must be a multiple of 3 and at least 3\"\n );\n }\n //>>includeEnd('debug');\n\n var length = coordinates.length;\n if (!defined(result)) {\n result = new Array(length / 3);\n } else {\n result.length = length / 3;\n }\n\n for (var i = 0; i < length; i += 3) {\n var longitude = coordinates[i];\n var latitude = coordinates[i + 1];\n var height = coordinates[i + 2];\n var index = i / 3;\n result[index] = Cartesian3.fromDegrees(\n longitude,\n latitude,\n height,\n ellipsoid,\n result[index]\n );\n }\n\n return result;\n};\n\n/**\n * Returns an array of Cartesian3 positions given an array of longitude, latitude and height values where longitude and latitude are given in radians.\n *\n * @param {Number[]} coordinates A list of longitude, latitude and height values. Values alternate [longitude, latitude, height, longitude, latitude, height...].\n * @param {Ellipsoid} [ellipsoid=Ellipsoid.WGS84] The ellipsoid on which the position lies.\n * @param {Cartesian3[]} [result] An array of Cartesian3 objects to store the result.\n * @returns {Cartesian3[]} The array of positions.\n *\n * @example\n * var positions = Cesium.Cartesian3.fromRadiansArrayHeights([-2.007, 0.645, 100000.0, -1.867, .575, 150000.0]);\n */\nCartesian3.fromRadiansArrayHeights = function (coordinates, ellipsoid, result) {\n //>>includeStart('debug', pragmas.debug);\n Check.defined(\"coordinates\", coordinates);\n if (coordinates.length < 3 || coordinates.length % 3 !== 0) {\n throw new DeveloperError(\n \"the number of coordinates must be a multiple of 3 and at least 3\"\n );\n }\n //>>includeEnd('debug');\n\n var length = coordinates.length;\n if (!defined(result)) {\n result = new Array(length / 3);\n } else {\n result.length = length / 3;\n }\n\n for (var i = 0; i < length; i += 3) {\n var longitude = coordinates[i];\n var latitude = coordinates[i + 1];\n var height = coordinates[i + 2];\n var index = i / 3;\n result[index] = Cartesian3.fromRadians(\n longitude,\n latitude,\n height,\n ellipsoid,\n result[index]\n );\n }\n\n return result;\n};\n\n/**\n * An immutable Cartesian3 instance initialized to (0.0, 0.0, 0.0).\n *\n * @type {Cartesian3}\n * @constant\n */\nCartesian3.ZERO = Object.freeze(new Cartesian3(0.0, 0.0, 0.0));\n\n/**\n * An immutable Cartesian3 instance initialized to (1.0, 0.0, 0.0).\n *\n * @type {Cartesian3}\n * @constant\n */\nCartesian3.UNIT_X = Object.freeze(new Cartesian3(1.0, 0.0, 0.0));\n\n/**\n * An immutable Cartesian3 instance initialized to (0.0, 1.0, 0.0).\n *\n * @type {Cartesian3}\n * @constant\n */\nCartesian3.UNIT_Y = Object.freeze(new Cartesian3(0.0, 1.0, 0.0));\n\n/**\n * An immutable Cartesian3 instance initialized to (0.0, 0.0, 1.0).\n *\n * @type {Cartesian3}\n * @constant\n */\nCartesian3.UNIT_Z = Object.freeze(new Cartesian3(0.0, 0.0, 1.0));\n\n/**\n * Duplicates this Cartesian3 instance.\n *\n * @param {Cartesian3} [result] The object onto which to store the result.\n * @returns {Cartesian3} The modified result parameter or a new Cartesian3 instance if one was not provided.\n */\nCartesian3.prototype.clone = function (result) {\n return Cartesian3.clone(this, result);\n};\n\n/**\n * Compares this Cartesian against the provided Cartesian componentwise and returns\n * <code>true</code> if they are equal, <code>false</code> otherwise.\n *\n * @param {Cartesian3} [right] The right hand side Cartesian.\n * @returns {Boolean} <code>true</code> if they are equal, <code>false</code> otherwise.\n */\nCartesian3.prototype.equals = function (right) {\n return Cartesian3.equals(this, right);\n};\n\n/**\n * Compares this Cartesian against the provided Cartesian componentwise and returns\n * <code>true</code> if they pass an absolute or relative tolerance test,\n * <code>false</code> otherwise.\n *\n * @param {Cartesian3} [right] The right hand side Cartesian.\n * @param {Number} [relativeEpsilon=0] The relative epsilon tolerance to use for equality testing.\n * @param {Number} [absoluteEpsilon=relativeEpsilon] The absolute epsilon tolerance to use for equality testing.\n * @returns {Boolean} <code>true</code> if they are within the provided epsilon, <code>false</code> otherwise.\n */\nCartesian3.prototype.equalsEpsilon = function (\n right,\n relativeEpsilon,\n absoluteEpsilon\n) {\n return Cartesian3.equalsEpsilon(\n this,\n right,\n relativeEpsilon,\n absoluteEpsilon\n );\n};\n\n/**\n * Creates a string representing this Cartesian in the format '(x, y, z)'.\n *\n * @returns {String} A string representing this Cartesian in the format '(x, y, z)'.\n */\nCartesian3.prototype.toString = function () {\n return \"(\" + this.x + \", \" + this.y + \", \" + this.z + \")\";\n};\nexport default Cartesian3;\n","import Cartesian3 from \"./Cartesian3.js\";\nimport defined from \"./defined.js\";\nimport DeveloperError from \"./DeveloperError.js\";\nimport CesiumMath from \"./Math.js\";\n\nvar scaleToGeodeticSurfaceIntersection = new Cartesian3();\nvar scaleToGeodeticSurfaceGradient = new Cartesian3();\n\n/**\n * Scales the provided Cartesian position along the geodetic surface normal\n * so that it is on the surface of this ellipsoid. If the position is\n * at the center of the ellipsoid, this function returns undefined.\n *\n * @param {Cartesian3} cartesian The Cartesian position to scale.\n * @param {Cartesian3} oneOverRadii One over radii of the ellipsoid.\n * @param {Cartesian3} oneOverRadiiSquared One over radii squared of the ellipsoid.\n * @param {Number} centerToleranceSquared Tolerance for closeness to the center.\n * @param {Cartesian3} [result] The object onto which to store the result.\n * @returns {Cartesian3} The modified result parameter, a new Cartesian3 instance if none was provided, or undefined if the position is at the center.\n *\n * @function scaleToGeodeticSurface\n *\n * @private\n */\nfunction scaleToGeodeticSurface(\n cartesian,\n oneOverRadii,\n oneOverRadiiSquared,\n centerToleranceSquared,\n result\n) {\n //>>includeStart('debug', pragmas.debug);\n if (!defined(cartesian)) {\n throw new DeveloperError(\"cartesian is required.\");\n }\n if (!defined(oneOverRadii)) {\n throw new DeveloperError(\"oneOverRadii is required.\");\n }\n if (!defined(oneOverRadiiSquared)) {\n throw new DeveloperError(\"oneOverRadiiSquared is required.\");\n }\n if (!defined(centerToleranceSquared)) {\n throw new DeveloperError(\"centerToleranceSquared is required.\");\n }\n //>>includeEnd('debug');\n\n var positionX = cartesian.x;\n var positionY = cartesian.y;\n var positionZ = cartesian.z;\n\n var oneOverRadiiX = oneOverRadii.x;\n var oneOverRadiiY = oneOverRadii.y;\n var oneOverRadiiZ = oneOverRadii.z;\n\n var x2 = positionX * positionX * oneOverRadiiX * oneOverRadiiX;\n var y2 = positionY * positionY * oneOverRadiiY * oneOverRadiiY;\n var z2 = positionZ * positionZ * oneOverRadiiZ * oneOverRadiiZ;\n\n // Compute the squared ellipsoid norm.\n var squaredNorm = x2 + y2 + z2;\n var ratio = Math.sqrt(1.0 / squaredNorm);\n\n // As an initial approximation, assume that the radial intersection is the projection point.\n var intersection = Cartesian3.multiplyByScalar(\n cartesian,\n ratio,\n scaleToGeodeticSurfaceIntersection\n );\n\n // If the position is near the center, the iteration will not converge.\n if (squaredNorm < centerToleranceSquared) {\n return !isFinite(ratio)\n ? undefined\n : Cartesian3.clone(intersection, result);\n }\n\n var oneOverRadiiSquaredX = oneOverRadiiSquared.x;\n var oneOverRadiiSquaredY = oneOverRadiiSquared.y;\n var oneOverRadiiSquaredZ = oneOverRadiiSquared.z;\n\n // Use the gradient at the intersection point in place of the true unit normal.\n // The difference in magnitude will be absorbed in the multiplier.\n var gradient = scaleToGeodeticSurfaceGradient;\n gradient.x = intersection.x * oneOverRadiiSquaredX * 2.0;\n gradient.y = intersection.y * oneOverRadiiSquaredY * 2.0;\n gradient.z = intersection.z * oneOverRadiiSquaredZ * 2.0;\n\n // Compute the initial guess at the normal vector multiplier, lambda.\n var lambda =\n ((1.0 - ratio) * Cartesian3.magnitude(cartesian)) /\n (0.5 * Cartesian3.magnitude(gradient));\n var correction = 0.0;\n\n var func;\n var denominator;\n var xMultiplier;\n var yMultiplier;\n var zMultiplier;\n var xMultiplier2;\n var yMultiplier2;\n var zMultiplier2;\n var xMultiplier3;\n var yMultiplier3;\n var zMultiplier3;\n\n do {\n lambda -= correction;\n\n xMultiplier = 1.0 / (1.0 + lambda * oneOverRadiiSquaredX);\n yMultiplier = 1.0 / (1.0 + lambda * oneOverRadiiSquaredY);\n zMultiplier = 1.0 / (1.0 + lambda * oneOverRadiiSquaredZ);\n\n xMultiplier2 = xMultiplier * xMultiplier;\n yMultiplier2 = yMultiplier * yMultiplier;\n zMultiplier2 = zMultiplier * zMultiplier;\n\n xMultiplier3 = xMultiplier2 * xMultiplier;\n yMultiplier3 = yMultiplier2 * yMultiplier;\n zMultiplier3 = zMultiplier2 * zMultiplier;\n\n func = x2 * xMultiplier2 + y2 * yMultiplier2 + z2 * zMultiplier2 - 1.0;\n\n // \"denominator\" here refers to the use of this expression in the velocity and acceleration\n // computations in the sections to follow.\n denominator =\n x2 * xMultiplier3 * oneOverRadiiSquaredX +\n y2 * yMultiplier3 * oneOverRadiiSquaredY +\n z2 * zMultiplier3 * oneOverRadiiSquaredZ;\n\n var derivative = -2.0 * denominator;\n\n correction = func / derivative;\n } while (Math.abs(func) > CesiumMath.EPSILON12);\n\n if (!defined(result)) {\n return new Cartesian3(\n positionX * xMultiplier,\n positionY * yMultiplier,\n positionZ * zMultiplier\n );\n }\n result.x = positionX * xMultiplier;\n result.y = positionY * yMultiplier;\n result.z = positionZ * zMultiplier;\n return result;\n}\nexport default scaleToGeodeticSurface;\n","import Cartesian3 from \"./Cartesian3.js\";\nimport Check from \"./Check.js\";\nimport defaultValue from \"./defaultValue.js\";\nimport defined from \"./defined.js\";\nimport CesiumMath from \"./Math.js\";\nimport scaleToGeodeticSurface from \"./scaleToGeodeticSurface.js\";\n\n/**\n * A position defined by longitude, latitude, and height.\n * @alias Cartographic\n * @constructor\n *\n * @param {Number} [longitude=0.0] The longitude, in radians.\n * @param {Number} [latitude=0.0] The latitude, in radians.\n * @param {Number} [height=0.0] The height, in meters, above the ellipsoid.\n *\n * @see Ellipsoid\n */\nfunction Cartographic(longitude, latitude, height) {\n /**\n * The longitude, in radians.\n * @type {Number}\n * @default 0.0\n */\n this.longitude = defaultValue(longitude, 0.0);\n\n /**\n * The latitude, in radians.\n * @type {Number}\n * @default 0.0\n */\n this.latitude = defaultValue(latitude, 0.0);\n\n /**\n * The height, in meters, above the ellipsoid.\n * @type {Number}\n * @default 0.0\n */\n this.height = defaultValue(height, 0.0);\n}\n\n/**\n * Creates a new Cartographic instance from longitude and latitude\n * specified in radians.\n *\n * @param {Number} longitude The longitude, in radians.\n * @param {Number} latitude The latitude, in radians.\n * @param {Number} [height=0.0] The height, in meters, above the ellipsoid.\n * @param {Cartographic} [result] The object onto which to store the result.\n * @returns {Cartographic} The modified result parameter or a new Cartographic instance if one was not provided.\n */\nCartographic.fromRadians = function (longitude, latitude, height, result) {\n //>>includeStart('debug', pragmas.debug);\n Check.typeOf.number(\"longitude\", longitude);\n Check.typeOf.number(\"latitude\", latitude);\n //>>includeEnd('debug');\n\n height = defaultValue(height, 0.0);\n\n if (!defined(result)) {\n return new Cartographic(longitude, latitude, height);\n }\n\n result.longitude = longitude;\n result.latitude = latitude;\n result.height = height;\n return result;\n};\n\n/**\n * Creates a new Cartographic instance from longitude and latitude\n * specified in degrees. The values in the resulting object will\n * be in radians.\n *\n * @param {Number} longitude The longitude, in degrees.\n * @param {Number} latitude The latitude, in degrees.\n * @param {Number} [height=0.0] The height, in meters, above the ellipsoid.\n * @param {Cartographic} [result] The object onto which to store the result.\n * @returns {Cartographic} The modified result parameter or a new Cartographic instance if one was not provided.\n */\nCartographic.fromDegrees = function (longitude, latitude, height, result) {\n //>>includeStart('debug', pragmas.debug);\n Check.typeOf.number(\"longitude\", longitude);\n Check.typeOf.number(\"latitude\", latitude);\n //>>includeEnd('debug');\n longitude = CesiumMath.toRadians(longitude);\n latitude = CesiumMath.toRadians(latitude);\n\n return Cartographic.fromRadians(longitude, latitude, height, result);\n};\n\nvar cartesianToCartographicN = new Cartesian3();\nvar cartesianToCartographicP = new Cartesian3();\nvar cartesianToCartographicH = new Cartesian3();\nvar wgs84OneOverRadii = new Cartesian3(\n 1.0 / 6378137.0,\n 1.0 / 6378137.0,\n 1.0 / 6356752.3142451793\n);\nvar wgs84OneOverRadiiSquared = new Cartesian3(\n 1.0 / (6378137.0 * 6378137.0),\n 1.0 / (6378137.0 * 6378137.0),\n 1.0 / (6356752.3142451793 * 6356752.3142451793)\n);\nvar wgs84CenterToleranceSquared = CesiumMath.EPSILON1;\n\n/**\n * Creates a new Cartographic instance from a Cartesian position. The values in the\n * resulting object will be in radians.\n *\n * @param {Cartesian3} cartesian The Cartesian position to convert to cartographic representation.\n * @param {Ellipsoid} [ellipsoid=Ellipsoid.WGS84] The ellipsoid on which the position lies.\n * @param {Cartographic} [result] The object onto which to store the result.\n * @returns {Cartographic} The modified result parameter, new Cartographic instance if none was provided, or undefined if the cartesian is at the center of the ellipsoid.\n */\nCartographic.fromCartesian = function (cartesian, ellipsoid, result) {\n var oneOverRadii = defined(ellipsoid)\n ? ellipsoid.oneOverRadii\n : wgs84OneOverRadii;\n var oneOverRadiiSquared = defined(ellipsoid)\n ? ellipsoid.oneOverRadiiSquared\n : wgs84OneOverRadiiSquared;\n var centerToleranceSquared = defined(ellipsoid)\n ? ellipsoid._centerToleranceSquared\n : wgs84CenterToleranceSquared;\n\n //`cartesian is required.` is thrown from scaleToGeodeticSurface\n var p = scaleToGeodeticSurface(\n cartesian,\n oneOverRadii,\n oneOverRadiiSquared,\n centerToleranceSquared,\n cartesianToCartographicP\n );\n\n if (!defined(p)) {\n return undefined;\n }\n\n var n = Cartesian3.multiplyComponents(\n p,\n oneOverRadiiSquared,\n cartesianToCartographicN\n );\n n = Cartesian3.normalize(n, n);\n\n var h = Cartesian3.subtract(cartesian, p, cartesianToCartographicH);\n\n var longitude = Math.atan2(n.y, n.x);\n var latitude = Math.asin(n.z);\n var height =\n CesiumMath.sign(Cartesian3.dot(h, cartesian)) * Cartesian3.magnitude(h);\n\n if (!defined(result)) {\n return new Cartographic(longitude, latitude, height);\n }\n result.longitude = longitude;\n result.latitude = latitude;\n result.height = height;\n return result;\n};\n\n/**\n * Creates a new Cartesian3 instance from a Cartographic input. The values in the inputted\n * object should be in radians.\n *\n * @param {Cartographic} cartographic Input to be converted into a Cartesian3 output.\n * @param {Ellipsoid} [ellipsoid=Ellipsoid.WGS84] The ellipsoid on which the position lies.\n * @param {Cartesian3} [result] The object onto which to store the result.\n * @returns {Cartesian3} The position\n */\nCartographic.toCartesian = function (cartographic, ellipsoid, result) {\n //>>includeStart('debug', pragmas.debug);\n Check.defined(\"cartographic\", cartographic);\n //>>includeEnd('debug');\n\n return Cartesian3.fromRadians(\n cartographic.longitude,\n cartographic.latitude,\n cartographic.height,\n ellipsoid,\n result\n );\n};\n\n/**\n * Duplicates a Cartographic instance.\n *\n * @param {Cartographic} cartographic The cartographic to duplicate.\n * @param {Cartographic} [result] The object onto which to store the result.\n * @returns {Cartographic} The modified result parameter or a new Cartographic instance if one was not provided. (Returns undefined if cartographic is undefined)\n */\nCartographic.clone = function (cartographic, result) {\n if (!defined(cartographic)) {\n return undefined;\n }\n if (!defined(result)) {\n return new Cartographic(\n cartographic.longitude,\n cartographic.latitude,\n cartographic.height\n );\n }\n result.longitude = cartographic.longitude;\n result.latitude = cartographic.latitude;\n result.height = cartographic.height;\n return result;\n};\n\n/**\n * Compares the provided cartographics componentwise and returns\n * <code>true</code> if they are equal, <code>false</code> otherwise.\n *\n * @param {Cartographic} [left] The first cartographic.\n * @param {Cartographic} [right] The second cartographic.\n * @returns {Boolean} <code>true</code> if left and right are equal, <code>false</code> otherwise.\n */\nCartographic.equals = function (left, right) {\n return (\n left === right ||\n (defined(left) &&\n defined(right) &&\n left.longitude === right.longitude &&\n left.latitude === right.latitude &&\n left.height === right.height)\n );\n};\n\n/**\n * Compares the provided cartographics componentwise and returns\n * <code>true</code> if they are within the provided epsilon,\n * <code>false</code> otherwise.\n *\n * @param {Cartographic} [left] The first cartographic.\n * @param {Cartographic} [right] The second cartographic.\n * @param {Number} [epsilon=0] The epsilon to use for equality testing.\n * @returns {Boolean} <code>true</code> if left and right are within the provided epsilon, <code>false</code> otherwise.\n */\nCartographic.equalsEpsilon = function (left, right, epsilon) {\n epsilon = defaultValue(epsilon, 0);\n\n return (\n left === right ||\n (defined(left) &&\n defined(right) &&\n Math.abs(left.longitude - right.longitude) <= epsilon &&\n Math.abs(left.latitude - right.latitude) <= epsilon &&\n Math.abs(left.height - right.height) <= epsilon)\n );\n};\n\n/**\n * An immutable Cartographic instance initialized to (0.0, 0.0, 0.0).\n *\n * @type {Cartographic}\n * @constant\n */\nCartographic.ZERO = Object.freeze(new Cartographic(0.0, 0.0, 0.0));\n\n/**\n * Duplicates this instance.\n *\n * @param {Cartographic} [result] The object onto which to store the result.\n * @returns {Cartographic} The modified result parameter or a new Cartographic instance if one was not provided.\n */\nCartographic.prototype.clone = function (result) {\n return Cartographic.clone(this, result);\n};\n\n/**\n * Compares the provided against this cartographic componentwise and returns\n * <code>true</code> if they are equal, <code>false</code> otherwise.\n *\n * @param {Cartographic} [right] The second cartographic.\n * @returns {Boolean} <code>true</code> if left and right are equal, <code>false</code> otherwise.\n */\nCartographic.prototype.equals = function (right) {\n return Cartographic.equals(this, right);\n};\n\n/**\n * Compares the provided against this cartographic componentwise and returns\n * <code>true</code> if they are within the provided epsilon,\n * <code>false</code> otherwise.\n *\n * @param {Cartographic} [right] The second cartographic.\n * @param {Number} [epsilon=0] The epsilon to use for equality testing.\n * @returns {Boolean} <code>true</code> if left and right are within the provided epsilon, <code>false</code> otherwise.\n */\nCartographic.prototype.equalsEpsilon = function (right, epsilon) {\n return Cartographic.equalsEpsilon(this, right, epsilon);\n};\n\n/**\n * Creates a string representing this cartographic in the format '(longitude, latitude, height)'.\n *\n * @returns {String} A string representing the provided cartographic in the format '(longitude, latitude, height)'.\n */\nCartographic.prototype.toString = function () {\n return \"(\" + this.longitude + \", \" + this.latitude + \", \" + this.height + \")\";\n};\nexport default Cartographic;\n","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 CesiumMath from \"./Math.js\";\nimport scaleToGeodeticSurface from \"./scaleToGeodeticSurface.js\";\n\nfunction initialize(ellipsoid, x, y, z) {\n x = defaultValue(x, 0.0);\n y = defaultValue(y, 0.0);\n z = defaultValue(z, 0.0);\n\n //>>includeStart('debug', pragmas.debug);\n Check.typeOf.number.greaterThanOrEquals(\"x\", x, 0.0);\n Check.typeOf.number.greaterThanOrEquals(\"y\", y, 0.0);\n Check.typeOf.number.greaterThanOrEquals(\"z\", z, 0.0);\n //>>includeEnd('debug');\n\n ellipsoid._radii = new Cartesian3(x, y, z);\n\n ellipsoid._radiiSquared = new Cartesian3(x * x, y * y, z * z);\n\n ellipsoid._radiiToTheFourth = new Cartesian3(\n x * x * x * x,\n y * y * y * y,\n z * z * z * z\n );\n\n ellipsoid._oneOverRadii = new Cartesian3(\n x === 0.0 ? 0.0 : 1.0 / x,\n y === 0.0 ? 0.0 : 1.0 / y,\n z === 0.0 ? 0.0 : 1.0 / z\n );\n\n ellipsoid._oneOverRadiiSquared = new Cartesian3(\n x === 0.0 ? 0.0 : 1.0 / (x * x),\n y === 0.0 ? 0.0 : 1.0 / (y * y),\n z === 0.0 ? 0.0 : 1.0 / (z * z)\n );\n\n ellipsoid._minimumRadius = Math.min(x, y, z);\n\n ellipsoid._maximumRadius = Math.max(x, y, z);\n\n ellipsoid._centerToleranceSquared = CesiumMath.EPSILON1;\n\n if (ellipsoid._radiiSquared.z !== 0) {\n ellipsoid._squaredXOverSquaredZ =\n ellipsoid._radiiSquared.x / ellipsoid._radiiSquared.z;\n }\n}\n\n/**\n * A quadratic surface defined in Cartesian coordinates by the equation\n * <code>(x / a)^2 + (y / b)^2 + (z / c)^2 = 1</code>. Primarily used\n * by Cesium to represent the shape of planetary bodies.\n *\n * Rather than constructing this object directly, one of the provided\n * constants is normally used.\n * @alias Ellipsoid\n * @constructor\n *\n * @param {Number} [x=0] The radius in the x direction.\n * @param {Number} [y=0] The radius in the y direction.\n * @param {Number} [z=0] The radius in the z direction.\n *\n * @exception {DeveloperError} All radii components must be greater than or equal to zero.\n *\n * @see Ellipsoid.fromCartesian3\n * @see Ellipsoid.WGS84\n * @see Ellipsoid.UNIT_SPHERE\n */\nfunction Ellipsoid(x, y, z) {\n this._radii = undefined;\n this._radiiSquared = undefined;\n this._radiiToTheFourth = undefined;\n this._oneOverRadii = undefined;\n this._oneOverRadiiSquared = undefined;\n this._minimumRadius = undefined;\n this._maximumRadius = undefined;\n this._centerToleranceSquared = undefined;\n this._squaredXOverSquaredZ = undefined;\n\n initialize(this, x, y, z);\n}\n\nObject.defineProperties(Ellipsoid.prototype, {\n /**\n * Gets the radii of the ellipsoid.\n * @memberof Ellipsoid.prototype\n * @type {Cartesian3}\n * @readonly\n */\n radii: {\n get: function () {\n return this._radii;\n },\n },\n /**\n * Gets the squared radii of the ellipsoid.\n * @memberof Ellipsoid.prototype\n * @type {Cartesian3}\n * @readonly\n */\n radiiSquared: {\n get: function () {\n return this._radiiSquared;\n },\n },\n /**\n * Gets the radii of the ellipsoid raise to the fourth power.\n * @memberof Ellipsoid.prototype\n * @type {Cartesian3}\n * @readonly\n */\n radiiToTheFourth: {\n get: function () {\n return this._radiiToTheFourth;\n },\n },\n /**\n * Gets one over the radii of the ellipsoid.\n * @memberof Ellipsoid.prototype\n * @type {Cartesian3}\n * @readonly\n */\n oneOverRadii: {\n get: function () {\n return this._oneOverRadii;\n },\n },\n /**\n * Gets one over the squared radii of the ellipsoid.\n * @memberof Ellipsoid.prototype\n * @type {Cartesian3}\n * @readonly\n */\n oneOverRadiiSquared: {\n get: function () {\n return this._oneOverRadiiSquared;\n },\n },\n /**\n * Gets the minimum radius of the ellipsoid.\n * @memberof Ellipsoid.prototype\n * @type {Number}\n * @readonly\n */\n minimumRadius: {\n get: function () {\n return this._minimumRadius;\n },\n },\n /**\n * Gets the maximum radius of the ellipsoid.\n * @memberof Ellipsoid.prototype\n * @type {Number}\n * @readonly\n */\n maximumRadius: {\n get: function () {\n return this._maximumRadius;\n },\n },\n});\n\n/**\n * Duplicates an Ellipsoid instance.\n *\n * @param {Ellipsoid} ellipsoid The ellipsoid to duplicate.\n * @param {Ellipsoid} [result] The object onto which to store the result, or undefined if a new\n * instance should be created.\n * @returns {Ellipsoid} The cloned Ellipsoid. (Returns undefined if ellipsoid is undefined)\n */\nEllipsoid.clone = function (ellipsoid, result) {\n if (!defined(ellipsoid)) {\n return undefined;\n }\n var radii = ellipsoid._radii;\n\n if (!defined(result)) {\n return new Ellipsoid(radii.x, radii.y, radii.z);\n }\n\n Cartesian3.clone(radii, result._radii);\n Cartesian3.clone(ellipsoid._radiiSquared, result._radiiSquared);\n Cartesian3.clone(ellipsoid._radiiToTheFourth, result._radiiToTheFourth);\n Cartesian3.clone(ellipsoid._oneOverRadii, result._oneOverRadii);\n Cartesian3.clone(ellipsoid._oneOverRadiiSquared, result._oneOverRadiiSquared);\n result._minimumRadius = ellipsoid._minimumRadius;\n result._maximumRadius = ellipsoid._maximumRadius;\n result._centerToleranceSquared = ellipsoid._centerToleranceSquared;\n\n return result;\n};\n\n/**\n * Computes an Ellipsoid from a Cartesian specifying the radii in x, y, and z directions.\n *\n * @param {Cartesian3} [cartesian=Cartesian3.ZERO] The ellipsoid's radius in the x, y, and z directions.\n * @param {Ellipsoid} [result] The object onto which to store the result, or undefined if a new\n * instance should be created.\n * @returns {Ellipsoid} A new Ellipsoid instance.\n *\n * @exception {DeveloperError} All radii components must be greater than or equal to zero.\n *\n * @see Ellipsoid.WGS84\n * @see Ellipsoid.UNIT_SPHERE\n */\nEllipsoid.fromCartesian3 = function (cartesian, result) {\n if (!defined(result)) {\n result = new Ellipsoid();\n }\n\n if (!defined(cartesian)) {\n return result;\n }\n\n initialize(result, cartesian.x, cartesian.y, cartesian.z);\n return result;\n};\n\n/**\n * An Ellipsoid instance initialized to the WGS84 standard.\n *\n * @type {Ellipsoid}\n * @constant\n */\nEllipsoid.WGS84 = Object.freeze(\n new Ellipsoid(6378137.0, 6378137.0, 6356752.3142451793)\n);\n\n/**\n * An Ellipsoid instance initialized to radii of (1.0, 1.0, 1.0).\n *\n * @type {Ellipsoid}\n * @constant\n */\nEllipsoid.UNIT_SPHERE = Object.freeze(new Ellipsoid(1.0, 1.0, 1.0));\n\n/**\n * An Ellipsoid instance initialized to a sphere with the lunar radius.\n *\n * @type {Ellipsoid}\n * @constant\n */\nEllipsoid.MOON = Object.freeze(\n new Ellipsoid(\n CesiumMath.LUNAR_RADIUS,\n CesiumMath.LUNAR_RADIUS,\n CesiumMath.LUNAR_RADIUS\n )\n);\n\n/**\n * Duplicates an Ellipsoid instance.\n *\n * @param {Ellipsoid} [result] The object onto which to store the result, or undefined if a new\n * instance should be created.\n * @returns {Ellipsoid} The cloned Ellipsoid.\n */\nEllipsoid.prototype.clone = function (result) {\n return Ellipsoid.clone(this, result);\n};\n\n/**\n * The number of elements used to pack the object into an array.\n * @type {Number}\n */\nEllipsoid.packedLength = Cartesian3.packedLength;\n\n/**\n * Stores the provided instance into the provided array.\n *\n * @param {Ellipsoid} value The value to pack.\n * @param {Number[]} array The array to pack into.\n * @param {Number} [startingIndex=0] The index into the array at which to start packing the elements.\n *\n * @returns {Number[]} The array that was packed into\n */\nEllipsoid.pack = function (value, array, startingIndex) {\n //>>includeStart('debug', pragmas.debug);\n Check.typeOf.object(\"value\", value);\n Check.defined(\"array\", array);\n //>>includeEnd('debug');\n\n startingIndex = defaultValue(startingIndex, 0);\n\n Cartesian3.pack(value._radii, array, startingIndex);\n\n return array;\n};\n\n/**\n * Retrieves an instance from a packed array.\n *\n * @param {Number[]} array The packed array.\n * @param {Number} [startingIndex=0] The starting index of the element to be unpacked.\n * @param {Ellipsoid} [result] The object into which to store the result.\n * @returns {Ellipsoid} The modified result parameter or a new Ellipsoid instance if one was not provided.\n */\nEllipsoid.unpack = function (array, startingIndex, result) {\n //>>includeStart('debug', pragmas.debug);\n Check.defined(\"array\", array);\n //>>includeEnd('debug');\n\n startingIndex = defaultValue(startingIndex, 0);\n\n var radii = Cartesian3.unpack(array, startingIndex);\n return Ellipsoid.fromCartesian3(radii, result);\n};\n\n/**\n * Computes the unit vector directed from the center of this ellipsoid toward the provided Cartesian position.\n * @function\n *\n * @param {Cartesian3} cartesian The Cartesian for which to to determine the geocentric normal.\n * @param {Cartesian3} [result] The object onto which to store the result.\n * @returns {Cartesian3} The modified result parameter or a new Cartesian3 instance if none was provided.\n */\nEllipsoid.prototype.geocentricSurfaceNormal = Cartesian3.normalize;\n\n/**\n * Computes the normal of the plane tangent to the surface of the ellipsoid at the provided position.\n *\n * @param {Cartographic} cartographic The cartographic position for which to to determine the geodetic normal.\n * @param {Cartesian3} [result] The object onto which to store the result.\n * @returns {Cartesian3} The modified result parameter or a new Cartesian3 instance if none was provided.\n */\nEllipsoid.prototype.geodeticSurfaceNormalCartographic = function (\n cartographic,\n result\n) {\n //>>includeStart('debug', pragmas.debug);\n Check.typeOf.object(\"cartographic\", cartographic);\n //>>includeEnd('debug');\n\n var longitude = cartographic.longitude;\n var latitude = cartographic.latitude;\n var cosLatitude = Math.cos(latitude);\n\n var x = cosLatitude * Math.cos(longitude);\n var y = cosLatitude * Math.sin(longitude);\n var z = Math.sin(latitude);\n\n if (!defined(result)) {\n result = new Cartesian3();\n }\n result.x = x;\n result.y = y;\n result.z = z;\n return Cartesian3.normalize(result, result);\n};\n\n/**\n * Computes the normal of the plane tangent to the surface of the ellipsoid at the provided position.\n *\n * @param {Cartesian3} cartesian The Cartesian position for which to to determine the surface normal.\n * @param {Cartesian3} [result] The object onto which to store the result.\n * @returns {Cartesian3} The modified result parameter or a new Cartesian3 instance if none was provided.\n */\nEllipsoid.prototype.geodeticSurfaceNormal = function (cartesian, result) {\n if (\n Cartesian3.equalsEpsilon(cartesian, Cartesian3.ZERO, CesiumMath.EPSILON14)\n ) {\n return undefined;\n }\n if (!defined(result)) {\n result = new Cartesian3();\n }\n result = Cartesian3.multiplyComponents(\n cartesian,\n this._oneOverRadiiSquared,\n result\n );\n return Cartesian3.normalize(result, result);\n};\n\nvar cartographicToCartesianNormal = new Cartesian3();\nvar cartographicToCartesianK = new Cartesian3();\n\n/**\n * Converts the provided cartographic to Cartesian representation.\n *\n * @param {Cartographic} cartographic The cartographic position.\n * @param {Cartesian3} [result] The object onto which to store the result.\n * @returns {Cartesian3} The modified result parameter or a new Cartesian3 instance if none was provided.\n *\n * @example\n * //Create a Cartographic and determine it's Cartesian representation on a WGS84 ellipsoid.\n * var position = new Cesium.Cartographic(Cesium.Math.toRadians(21), Cesium.Math.toRadians(78), 5000);\n * var cartesianPosition = Cesium.Ellipsoid.WGS84.cartographicToCartesian(position);\n */\nEllipsoid.prototype.cartographicToCartesian = function (cartographic, result) {\n //`cartographic is required` is thrown from geodeticSurfaceNormalCartographic.\n var n = cartographicToCartesianNormal;\n var k = cartographicToCartesianK;\n this.geodeticSurfaceNormalCartographic(cartographic, n);\n Cartesian3.multiplyComponents(this._radiiSquared, n, k);\n var gamma = Math.sqrt(Cartesian3.dot(n, k));\n Cartesian3.divideByScalar(k, gamma, k);\n Cartesian3.multiplyByScalar(n, cartographic.height, n);\n\n if (!defined(result)) {\n result = new Cartesian3();\n }\n return Cartesian3.add(k, n, result);\n};\n\n/**\n * Converts the provided array of cartographics to an array of Cartesians.\n *\n * @param {Cartographic[]} cartographics An array of cartographic positions.\n * @param {Cartesian3[]} [result] The object onto which to store the result.\n * @returns {Cartesian3[]} The modified result parameter or a new Array instance if none was provided.\n *\n * @example\n * //Convert an array of Cartographics and determine their Cartesian representation on a WGS84 ellipsoid.\n * var positions = [new Cesium.Cartographic(Cesium.Math.toRadians(21), Cesium.Math.toRadians(78), 0),\n * new Cesium.Cartographic(Cesium.Math.toRadians(21.321), Cesium.Math.toRadians(78.123), 100),\n * new Cesium.Cartographic(Cesium.Math.toRadians(21.645), Cesium.Math.toRadians(78.456), 250)];\n * var cartesianPositions = Cesium.Ellipsoid.WGS84.cartographicArrayToCartesianArray(positions);\n */\nEllipsoid.prototype.cartographicArrayToCartesianArray = function (\n cartographics,\n result\n) {\n //>>includeStart('debug', pragmas.debug);\n Check.defined(\"cartographics\", cartographics);\n //>>includeEnd('debug')\n\n var length = cartographics.length;\n if (!defined(result)) {\n result = new Array(length);\n } else {\n result.length = length;\n }\n for (var i = 0; i < length; i++) {\n result[i] = this.cartographicToCartesian(cartographics[i], result[i]);\n }\n return result;\n};\n\nvar cartesianToCartographicN = new Cartesian3();\nvar cartesianToCartographicP = new Cartesian3();\nvar cartesianToCartographicH = new Cartesian3();\n\n/**\n * Converts the provided cartesian to cartographic representation.\n * The cartesian is undefined at the center of the ellipsoid.\n *\n * @param {Cartesian3} cartesian The Cartesian position to convert to cartographic representation.\n * @param {Cartographic} [result] The object onto which to store the result.\n * @returns {Cartographic} The modified result parameter, new Cartographic instance if none was provided, or undefined if the cartesian is at the center of the ellipsoid.\n *\n * @example\n * //Create a Cartesian and determine it's Cartographic representation on a WGS84 ellipsoid.\n * var position = new Cesium.Cartesian3(17832.12, 83234.52, 952313.73);\n * var cartographicPosition = Cesium.Ellipsoid.WGS84.cartesianToCartographic(position);\n */\nEllipsoid.prototype.cartesianToCartographic = function (cartesian, result) {\n //`cartesian is required.` is thrown from scaleToGeodeticSurface\n var p = this.scaleToGeodeticSurface(cartesian, cartesianToCartographicP);\n\n if (!defined(p)) {\n return undefined;\n }\n\n var n = this.geodeticSurfaceNormal(p, cartesianToCartographicN);\n var h = Cartesian3.subtract(cartesian, p, cartesianToCartographicH);\n\n var longitude = Math.atan2(n.y, n.x);\n var latitude = Math.asin(n.z);\n var height =\n CesiumMath.sign(Cartesian3.dot(h, cartesian)) * Cartesian3.magnitude(h);\n\n if (!defined(result)) {\n return new Cartographic(longitude, latitude, height);\n }\n result.longitude = longitude;\n result.latitude = latitude;\n result.height = height;\n return result;\n};\n\n/**\n * Converts the provided array of cartesians to an array of cartographics.\n *\n * @param {Cartesian3[]} cartesians An array of Cartesian positions.\n * @param {Cartographic[]} [result] The object onto which to store the result.\n * @returns {Cartographic[]} The modified result parameter or a new Array instance if none was provided.\n *\n * @example\n * //Create an array of Cartesians and determine their Cartographic representation on a WGS84 ellipsoid.\n * var positions = [new Cesium.Cartesian3(17832.12, 83234.52, 952313.73),\n * new Cesium.Cartesian3(17832.13, 83234.53, 952313.73),\n * new Cesium.Cartesian3(17832.14, 83234.54, 952313.73)]\n * var cartographicPositions = Cesium.Ellipsoid.WGS84.cartesianArrayToCartographicArray(positions);\n */\nEllipsoid.prototype.cartesianArrayToCartographicArray = function (\n cartesians,\n result\n) {\n //>>includeStart('debug', pragmas.debug);\n Check.defined(\"cartesians\", cartesians);\n //>>includeEnd('debug');\n\n var length = cartesians.length;\n if (!defined(result)) {\n result = new Array(length);\n } else {\n result.length = length;\n }\n for (var i = 0; i < length; ++i) {\n result[i] = this.cartesianToCartographic(cartesians[i], result[i]);\n }\n return result;\n};\n\n/**\n * Scales the provided Cartesian position along the geodetic surface normal\n * so that it is on the surface of this ellipsoid. If the position is\n * at the center of the ellipsoid, this function returns undefined.\n *\n * @param {Cartesian3} cartesian The Cartesian position to scale.\n * @param {Cartesian3} [result] The object onto which to store the result.\n * @returns {Cartesian3} The modified result parameter, a new Cartesian3 instance if none was provided, or undefined if the position is at the center.\n */\nEllipsoid.prototype.scaleToGeodeticSurface = function (cartesian, result) {\n return scaleToGeodeticSurface(\n cartesian,\n this._oneOverRadii,\n this._oneOverRadiiSquared,\n this._centerToleranceSquared,\n result\n );\n};\n\n/**\n * Scales the provided Cartesian position along the geocentric surface normal\n * so that it is on the surface of this ellipsoid.\n *\n * @param {Cartesian3} cartesian The Cartesian position to scale.\n * @param {Cartesian3} [result] The object onto which to store the result.\n * @returns {Cartesian3} The modified result parameter or a new Cartesian3 instance if none was provided.\n */\nEllipsoid.prototype.scaleToGeocentricSurface = function (cartesian, result) {\n //>>includeStart('debug', pragmas.debug);\n Check.typeOf.object(\"cartesian\", cartesian);\n //>>includeEnd('debug');\n\n if (!defined(result)) {\n result = new Cartesian3();\n }\n\n var positionX = cartesian.x;\n var positionY = cartesian.y;\n var positionZ = cartesian.z;\n var oneOverRadiiSquared = this._oneOverRadiiSquared;\n\n var beta =\n 1.0 /\n Math.sqrt(\n positionX * positionX * oneOverRadiiSquared.x +\n positionY * positionY * oneOverRadiiSquared.y +\n positionZ * positionZ * oneOverRadiiSquared.z\n );\n\n return Cartesian3.multiplyByScalar(cartesian, beta, result);\n};\n\n/**\n * Transforms a Cartesian X, Y, Z position to the ellipsoid-scaled space by multiplying\n * its components by the result of {@link Ellipsoid#oneOverRadii}.\n *\n * @param {Cartesian3} position The position to transform.\n * @param {Cartesian3} [result] The position to which to copy the result, or undefined to create and\n * return a new instance.\n * @returns {Cartesian3} The position expressed in the scaled space. The returned instance is the\n * one passed as the result parameter if it is not undefined, or a new instance of it is.\n */\nEllipsoid.prototype.transformPositionToScaledSpace = function (\n position,\n result\n) {\n if (!defined(result)) {\n result = new Cartesian3();\n }\n\n return Cartesian3.multiplyComponents(position, this._oneOverRadii, result);\n};\n\n/**\n * Transforms a Cartesian X, Y, Z position from the ellipsoid-scaled space by multiplying\n * its components by the result of {@link Ellipsoid#radii}.\n *\n * @param {Cartesian3} position The position to transform.\n * @param {Cartesian3} [result] The position to which to copy the result, or undefined to create and\n * return a new instance.\n * @returns {Cartesian3} The position expressed in the unscaled space. The returned instance is the\n * one passed as the result parameter if it is not undefined, or a new instance of it is.\n */\nEllipsoid.prototype.transformPositionFromScaledSpace = function (\n position,\n result\n) {\n if (!defined(result)) {\n result = new Cartesian3();\n }\n\n return Cartesian3.multiplyComponents(position, this._radii, result);\n};\n\n/**\n * Compares this Ellipsoid against the provided Ellipsoid componentwise and returns\n * <code>true</code> if they are equal, <code>false</code> otherwise.\n *\n * @param {Ellipsoid} [right] The other Ellipsoid.\n * @returns {Boolean} <code>true</code> if they are equal, <code>false</code> otherwise.\n */\nEllipsoid.prototype.equals = function (right) {\n return (\n this === right ||\n (defined(right) && Cartesian3.equals(this._radii, right._radii))\n );\n};\n\n/**\n * Creates a string representing this Ellipsoid in the format '(radii.x, radii.y, radii.z)'.\n *\n * @returns {String} A string representing this ellipsoid in the format '(radii.x, radii.y, radii.z)'.\n */\nEllipsoid.prototype.toString = function () {\n return this._radii.toString();\n};\n\n/**\n * Computes a point which is the intersection of the surface normal with the z-axis.\n *\n * @param {Cartesian3} position the position. must be on the surface of the ellipsoid.\n * @param {Number} [buffer = 0.0] A buffer to subtract from the ellipsoid size when checking if the point is inside the ellipsoid.\n * In earth case, with common earth datums, there is no need for this buffer since the intersection point is always (relatively) very close to the center.\n * In WGS84 datum, intersection point is at max z = +-42841.31151331382 (0.673% of z-axis).\n * Intersection point could be outside the ellipsoid if the ratio of MajorAxis / AxisOfRotation is bigger than the square root of 2\n * @param {Cartesian3} [result] The cartesian to which to copy the result, or undefined to create and\n * return a new instance.\n * @returns {Cartesian3 | undefined} the intersection point if it's inside the ellipsoid, undefined otherwise\n *\n * @exception {DeveloperError} position is required.\n * @exception {DeveloperError} Ellipsoid must be an ellipsoid of revolution (radii.x == radii.y).\n * @exception {DeveloperError} Ellipsoid.radii.z must be greater than 0.\n */\nEllipsoid.prototype.getSurfaceNormalIntersectionWithZAxis = function (\n position,\n buffer,\n result\n) {\n //>>includeStart('debug', pragmas.debug);\n Check.typeOf.object(\"position\", position);\n\n if (\n !CesiumMath.equalsEpsilon(\n this._radii.x,\n this._radii.y,\n CesiumMath.EPSILON15\n )\n ) {\n throw new DeveloperError(\n \"Ellipsoid must be an ellipsoid of revolution (radii.x == radii.y)\"\n );\n }\n\n Check.typeOf.number.greaterThan(\"Ellipsoid.radii.z\", this._radii.z, 0);\n //>>includeEnd('debug');\n\n buffer = defaultValue(buffer, 0.0);\n\n var squaredXOverSquaredZ = this._squaredXOverSquaredZ;\n\n if (!defined(result)) {\n result = new Cartesian3();\n }\n\n result.x = 0.0;\n result.y = 0.0;\n result.z = position.z * (1 - squaredXOverSquaredZ);\n\n if (Math.abs(result.z) >= this._radii.z - buffer) {\n return undefined;\n }\n\n return result;\n};\n\nvar abscissas = [\n 0.14887433898163,\n 0.43339539412925,\n 0.67940956829902,\n 0.86506336668898,\n 0.97390652851717,\n 0.0,\n];\nvar weights = [\n 0.29552422471475,\n 0.26926671930999,\n 0.21908636251598,\n 0.14945134915058,\n 0.066671344308684,\n 0.0,\n];\n\n/**\n * Compute the 10th order Gauss-Legendre Quadrature of the given definite integral.\n *\n * @param {Number} a The lower bound for the integration.\n * @param {Number} b The upper bound for the integration.\n * @param {Ellipsoid~RealValuedScalarFunction} func The function to integrate.\n * @returns {Number} The value of the integral of the given function over the given domain.\n *\n * @private\n */\nfunction gaussLegendreQuadrature(a, b, func) {\n //>>includeStart('debug', pragmas.debug);\n Check.typeOf.number(\"a\", a);\n Check.typeOf.number(\"b\", b);\n Check.typeOf.func(\"func\", func);\n //>>includeEnd('debug');\n\n // The range is half of the normal range since the five weights add to one (ten weights add to two).\n // The values of the abscissas are multiplied by two to account for this.\n var xMean = 0.5 * (b + a);\n var xRange = 0.5 * (b - a);\n\n var sum = 0.0;\n for (var i = 0; i < 5; i++) {\n var dx = xRange * abscissas[i];\n sum += weights[i] * (func(xMean + dx) + func(xMean - dx));\n }\n\n // Scale the sum to the range of x.\n sum *= xRange;\n return sum;\n}\n\n/**\n * A real valued scalar function.\n * @callback Ellipsoid~RealValuedScalarFunction\n *\n * @param {Number} x The value used to evaluate the function.\n * @returns {Number} The value of the function at x.\n *\n * @private\n */\n\n/**\n * Computes an approximation of the surface area of a rectangle on the surface of an ellipsoid using\n * Gauss-Legendre 10th order quadrature.\n *\n * @param {Rectangle} rectangle The rectangle used for computing the surface area.\n * @returns {Number} The approximate area of the rectangle on the surface of this ellipsoid.\n */\nEllipsoid.prototype.surfaceArea = function (rectangle) {\n //>>includeStart('debug', pragmas.debug);\n Check.typeOf.object(\"rectangle\", rectangle);\n //>>includeEnd('debug');\n var minLongitude = rectangle.west;\n var maxLongitude = rectangle.east;\n var minLatitude = rectangle.south;\n var maxLatitude = rectangle.north;\n\n while (maxLongitude < minLongitude) {\n maxLongitude += CesiumMath.TWO_PI;\n }\n\n var radiiSquared = this._radiiSquared;\n var a2 = radiiSquared.x;\n var b2 = radiiSquared.y;\n var c2 = radiiSquared.z;\n var a2b2 = a2 * b2;\n return gaussLegendreQuadrature(minLatitude, maxLatitude, function (lat) {\n // phi represents the angle measured from the north pole\n // sin(phi) = sin(pi / 2 - lat) = cos(lat), cos(phi) is similar\n var sinPhi = Math.cos(lat);\n var cosPhi = Math.sin(lat);\n return (\n Math.cos(lat) *\n gaussLegendreQuadrature(minLongitude, maxLongitude, function (lon) {\n var cosTheta = Math.cos(lon);\n var sinTheta = Math.sin(lon);\n return Math.sqrt(\n a2b2 * cosPhi * cosPhi +\n c2 *\n (b2 * cosTheta * cosTheta + a2 * sinTheta * sinTheta) *\n sinPhi *\n sinPhi\n );\n })\n );\n });\n};\n\nexport default Ellipsoid;\n","import 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\n/**\n * A two dimensional region specified as longitude and latitude coordinates.\n *\n * @alias Rectangle\n * @constructor\n *\n * @param {Number} [west=0.0] The westernmost longitude, in radians, in the range [-Pi, Pi].\n * @param {Number} [south=0.0] The southernmost latitude, in radians, in the range [-Pi/2, Pi/2].\n * @param {Number} [east=0.0] The easternmost longitude, in radians, in the range [-Pi, Pi].\n * @param {Number} [north=0.0] The northernmost latitude, in radians, in the range [-Pi/2, Pi/2].\n *\n * @see Packable\n */\nfunction Rectangle(west, south, east, north) {\n /**\n * The westernmost longitude in radians in the range [-Pi, Pi].\n *\n * @type {Number}\n * @default 0.0\n */\n this.west = defaultValue(west, 0.0);\n\n /**\n * The southernmost latitude in radians in the range [-Pi/2, Pi/2].\n *\n * @type {Number}\n * @default 0.0\n */\n this.south = defaultValue(south, 0.0);\n\n /**\n * The easternmost longitude in radians in the range [-Pi, Pi].\n *\n * @type {Number}\n * @default 0.0\n */\n this.east = defaultValue(east, 0.0);\n\n /**\n * The northernmost latitude in radians in the range [-Pi/2, Pi/2].\n *\n * @type {Number}\n * @default 0.0\n */\n this.north = defaultValue(north, 0.0);\n}\n\nObject.defineProperties(Rectangle.prototype, {\n /**\n * Gets the width of the rectangle in radians.\n * @memberof Rectangle.prototype\n * @type {Number}\n * @readonly\n */\n width: {\n get: function () {\n return Rectangle.computeWidth(this);\n },\n },\n\n /**\n * Gets the height of the rectangle in radians.\n * @memberof Rectangle.prototype\n * @type {Number}\n * @readonly\n */\n height: {\n get: function () {\n return Rectangle.computeHeight(this);\n },\n },\n});\n\n/**\n * The number of elements used to pack the object into an array.\n * @type {Number}\n */\nRectangle.packedLength = 4;\n\n/**\n * Stores the provided instance into the provided array.\n *\n * @param {Rectangle} value The value to pack.\n * @param {Number[]} array The array to pack into.\n * @param {Number} [startingIndex=0] The index into the array at which to start packing the elements.\n *\n * @returns {Number[]} The array that was packed into\n */\nRectangle.pack = function (value, array, startingIndex) {\n //>>includeStart('debug', pragmas.debug);\n Check.typeOf.object(\"value\", value);\n Check.defined(\"array\", array);\n //>>includeEnd('debug');\n\n startingIndex = defaultValue(startingIndex, 0);\n\n array[startingIndex++] = value.west;\n array[startingIndex++] = value.south;\n array[startingIndex++] = value.east;\n array[startingIndex] = value.north;\n\n return array;\n};\n\n/**\n * Retrieves an instance from a packed array.\n *\n * @param {Number[]} array The packed array.\n * @param {Number} [startingIndex=0] The starting index of the element to be unpacked.\n * @param {Rectangle} [result] The object into which to store the result.\n * @returns {Rectangle} The modified result parameter or a new Rectangle instance if one was not provided.\n */\nRectangle.unpack = function (array, startingIndex, result) {\n //>>includeStart('debug', pragmas.debug);\n Check.defined(\"array\", array);\n //>>includeEnd('debug');\n\n startingIndex = defaultValue(startingIndex, 0);\n\n if (!defined(result)) {\n result = new Rectangle();\n }\n\n result.west = array[startingIndex++];\n result.south = array[startingIndex++];\n result.east = array[startingIndex++];\n result.north = array[startingIndex];\n return result;\n};\n\n/**\n * Computes the width of a rectangle in radians.\n * @param {Rectangle} rectangle The rectangle to compute the width of.\n * @returns {Number} The width.\n */\nRectangle.computeWidth = function (rectangle) {\n //>>includeStart('debug', pragmas.debug);\n Check.typeOf.object(\"rectangle\", rectangle);\n //>>includeEnd('debug');\n var east = rectangle.east;\n var west = rectangle.west;\n if (east < west) {\n east += CesiumMath.TWO_PI;\n }\n return east - west;\n};\n\n/**\n * Computes the height of a rectangle in radians.\n * @param {Rectangle} rectangle The rectangle to compute the height of.\n * @returns {Number} The height.\n */\nRectangle.computeHeight = function (rectangle) {\n //>>includeStart('debug', pragmas.debug);\n Check.typeOf.object(\"rectangle\", rectangle);\n //>>includeEnd('debug');\n return rectangle.north - rectangle.south;\n};\n\n/**\n * Creates a rectangle given the boundary longitude and latitude in degrees.\n *\n * @param {Number} [west=0.0] The westernmost longitude in degrees in the range [-180.0, 180.0].\n * @param {Number} [south=0.0] The southernmost latitude in degrees in the range [-90.0, 90.0].\n * @param {Number} [east=0.0] The easternmost longitude in degrees in the range [-180.0, 180.0].\n * @param {Number} [north=0.0] The northernmost latitude in degrees in the range [-90.0, 90.0].\n * @param {Rectangle} [result] The object onto which to store the result, or undefined if a new instance should be created.\n * @returns {Rectangle} The modified result parameter or a new Rectangle instance if none was provided.\n *\n * @example\n * var rectangle = Cesium.Rectangle.fromDegrees(0.0, 20.0, 10.0, 30.0);\n */\nRectangle.fromDegrees = function (west, south, east, north, result) {\n west = CesiumMath.toRadians(defaultValue(west, 0.0));\n south = CesiumMath.toRadians(defaultValue(south, 0.0));\n east = CesiumMath.toRadians(defaultValue(east, 0.0));\n north = CesiumMath.toRadians(defaultValue(north, 0.0));\n\n if (!defined(result)) {\n return new Rectangle(west, south, east, north);\n }\n\n result.west = west;\n result.south = south;\n result.east = east;\n result.north = north;\n\n return result;\n};\n\n/**\n * Creates a rectangle given the boundary longitude and latitude in radians.\n *\n * @param {Number} [west=0.0] The westernmost longitude in radians in the range [-Math.PI, Math.PI].\n * @param {Number} [south=0.0] The southernmost latitude in radians in the range [-Math.PI/2, Math.PI/2].\n * @param {Number} [east=0.0] The easternmost longitude in radians in the range [-Math.PI, Math.PI].\n * @param {Number} [north=0.0] The northernmost latitude in radians in the range [-Math.PI/2, Math.PI/2].\n * @param {Rectangle} [result] The object onto which to store the result, or undefined if a new instance should be created.\n * @returns {Rectangle} The modified result parameter or a new Rectangle instance if none was provided.\n *\n * @example\n * var rectangle = Cesium.Rectangle.fromRadians(0.0, Math.PI/4, Math.PI/8, 3*Math.PI/4);\n */\nRectangle.fromRadians = function (west, south, east, north, result) {\n if (!defined(result)) {\n return new Rectangle(west, south, east, north);\n }\n\n result.west = defaultValue(west, 0.0);\n result.south = defaultValue(south, 0.0);\n result.east = defaultValue(east, 0.0);\n result.north = defaultValue(north, 0.0);\n\n return result;\n};\n\n/**\n * Creates the smallest possible Rectangle that encloses all positions in the provided array.\n *\n * @param {Cartographic[]} cartographics The list of Cartographic instances.\n * @param {Rectangle} [result] The object onto which to store the result, or undefined if a new instance should be created.\n * @returns {Rectangle} The modified result parameter or a new Rectangle instance if none was provided.\n */\nRectangle.fromCartographicArray = function (cartographics, result) {\n //>>includeStart('debug', pragmas.debug);\n Check.defined(\"cartographics\", cartographics);\n //>>includeEnd('debug');\n\n var west = Number.MAX_VALUE;\n var east = -Number.MAX_VALUE;\n var westOverIDL = Number.MAX_VALUE;\n var eastOverIDL = -Number.MAX_VALUE;\n var south = Number.MAX_VALUE;\n var north = -Number.MAX_VALUE;\n\n for (var i = 0, len = cartographics.length; i < len; i++) {\n var position = cartographics[i];\n west = Math.min(west, position.longitude);\n east = Math.max(east, position.longitude);\n south = Math.min(south, position.latitude);\n north = Math.max(north, position.latitude);\n\n var lonAdjusted =\n position.longitude >= 0\n ? position.longitude\n : position.longitude + CesiumMath.TWO_PI;\n westOverIDL = Math.min(westOverIDL, lonAdjusted);\n eastOverIDL = Math.max(eastOverIDL, lonAdjusted);\n }\n\n if (east - west > eastOverIDL - westOverIDL) {\n west = westOverIDL;\n east = eastOverIDL;\n\n if (east > CesiumMath.PI) {\n east = east - CesiumMath.TWO_PI;\n }\n if (west > CesiumMath.PI) {\n west = west - CesiumMath.TWO_PI;\n }\n }\n\n if (!defined(result)) {\n return new Rectangle(west, south, east, north);\n }\n\n result.west = west;\n result.south = south;\n result.east = east;\n result.north = north;\n return result;\n};\n\n/**\n * Creates the smallest possible Rectangle that encloses all positions in the provided array.\n *\n * @param {Cartesian3[]} cartesians The list of Cartesian instances.\n * @param {Ellipsoid} [ellipsoid=Ellipsoid.WGS84] The ellipsoid the cartesians are on.\n * @param {Rectangle} [result] The object onto which to store the result, or undefined if a new instance should be created.\n * @returns {Rectangle} The modified result parameter or a new Rectangle instance if none was provided.\n */\nRectangle.fromCartesianArray = function (cartesians, ellipsoid, result) {\n //>>includeStart('debug', pragmas.debug);\n Check.defined(\"cartesians\", cartesians);\n //>>includeEnd('debug');\n ellipsoid = defaultValue(ellipsoid, Ellipsoid.WGS84);\n\n var west = Number.MAX_VALUE;\n var east = -Number.MAX_VALUE;\n var westOverIDL = Number.MAX_VALUE;\n var eastOverIDL = -Number.MAX_VALUE;\n var south = Number.MAX_VALUE;\n var north = -Number.MAX_VALUE;\n\n for (var i = 0, len = cartesians.length; i < len; i++) {\n var position = ellipsoid.cartesianToCartographic(cartesians[i]);\n west = Math.min(west, position.longitude);\n east = Math.max(east, position.longitude);\n south = Math.min(south, position.latitude);\n north = Math.max(north, position.latitude);\n\n var lonAdjusted =\n position.longitude >= 0\n ? position.longitude\n : position.longitude + CesiumMath.TWO_PI;\n westOverIDL = Math.min(westOverIDL, lonAdjusted);\n eastOverIDL = Math.max(eastOverIDL, lonAdjusted);\n }\n\n if (east - west > eastOverIDL - westOverIDL) {\n west = westOverIDL;\n east = eastOverIDL;\n\n if (east > CesiumMath.PI) {\n east = east - CesiumMath.TWO_PI;\n }\n if (west > CesiumMath.PI) {\n west = west - CesiumMath.TWO_PI;\n }\n }\n\n if (!defined(result)) {\n return new Rectangle(west, south, east, north);\n }\n\n result.west = west;\n result.south = south;\n result.east = east;\n result.north = north;\n return result;\n};\n\n/**\n * Duplicates a Rectangle.\n *\n * @param {Rectangle} rectangle The rectangle to clone.\n * @param {Rectangle} [result] The object onto which to store the result, or undefined if a new instance should be created.\n * @returns {Rectangle} The modified result parameter or a new Rectangle instance if none was provided. (Returns undefined if rectangle is undefined)\n */\nRectangle.clone = function (rectangle, result) {\n if (!defined(rectangle)) {\n return undefined;\n }\n\n if (!defined(result)) {\n return new Rectangle(\n rectangle.west,\n rectangle.south,\n rectangle.east,\n rectangle.north\n );\n }\n\n result.west = rectangle.west;\n result.south = rectangle.south;\n result.east = rectangle.east;\n result.north = rectangle.north;\n return result;\n};\n\n/**\n * Compares the provided Rectangles componentwise and returns\n * <code>true</code> if they pass an absolute or relative tolerance test,\n * <code>false</code> otherwise.\n *\n * @param {Rectangle} [left] The first Rectangle.\n * @param {Rectangle} [right] The second Rectangle.\n * @param {Number} [absoluteEpsilon=0] The absolute epsilon tolerance to use for equality testing.\n * @returns {Boolean} <code>true</code> if left and right are within the provided epsilon, <code>false</code> otherwise.\n */\nRectangle.equalsEpsilon = function (left, right, absoluteEpsilon) {\n absoluteEpsilon = defaultValue(absoluteEpsilon, 0);\n\n return (\n left === right ||\n (defined(left) &&\n defined(right) &&\n Math.abs(left.west - right.west) <= absoluteEpsilon &&\n Math.abs(left.south - right.south) <= absoluteEpsilon &&\n Math.abs(left.east - right.east) <= absoluteEpsilon &&\n Math.abs(left.north - right.north) <= absoluteEpsilon)\n );\n};\n\n/**\n * Duplicates this Rectangle.\n *\n * @param {Rectangle} [result] The object onto which to store the result.\n * @returns {Rectangle} The modified result parameter or a new Rectangle instance if none was provided.\n */\nRectangle.prototype.clone = function (result) {\n return Rectangle.clone(this, result);\n};\n\n/**\n * Compares the provided Rectangle with this Rectangle componentwise and returns\n * <code>true</code> if they are equal, <code>false</code> otherwise.\n *\n * @param {Rectangle} [other] The Rectangle to compare.\n * @returns {Boolean} <code>true</code> if the Rectangles are equal, <code>false</code> otherwise.\n */\nRectangle.prototype.equals = function (other) {\n return Rectangle.equals(this, other);\n};\n\n/**\n * Compares the provided rectangles and returns <code>true</code> if they are equal,\n * <code>false</code> otherwise.\n *\n * @param {Rectangle} [left] The first Rectangle.\n * @param {Rectangle} [right] The second Rectangle.\n * @returns {Boolean} <code>true</code> if left and right are equal; otherwise <code>false</code>.\n */\nRectangle.equals = function (left, right) {\n return (\n left === right ||\n (defined(left) &&\n defined(right) &&\n left.west === right.west &&\n left.south === right.south &&\n left.east === right.east &&\n left.north === right.north)\n );\n};\n\n/**\n * Compares the provided Rectangle with this Rectangle componentwise and returns\n * <code>true</code> if they are within the provided epsilon,\n * <code>false</code> otherwise.\n *\n * @param {Rectangle} [other] The Rectangle to compare.\n * @param {Number} [epsilon=0] The epsilon to use for equality testing.\n * @returns {Boolean} <code>true</code> if the Rectangles are within the provided epsilon, <code>false</code> otherwise.\n */\nRectangle.prototype.equalsEpsilon = function (other, epsilon) {\n return Rectangle.equalsEpsilon(this, other, epsilon);\n};\n\n/**\n * Checks a Rectangle's properties and throws if they are not in valid ranges.\n *\n * @param {Rectangle} rectangle The rectangle to validate\n *\n * @exception {DeveloperError} <code>north</code> must be in the interval [<code>-Pi/2</code>, <code>Pi/2</code>].\n * @exception {DeveloperError} <code>south</code> must be in the interval [<code>-Pi/2</code>, <code>Pi/2</code>].\n * @exception {DeveloperError} <code>east</code> must be in the interval [<code>-Pi</code>, <code>Pi</code>].\n * @exception {DeveloperError} <code>west</code> must be in the interval [<code>-Pi</code>, <code>Pi</code>].\n */\nRectangle.validate = function (rectangle) {\n //>>includeStart('debug', pragmas.debug);\n Check.typeOf.object(\"rectangle\", rectangle);\n\n var north = rectangle.north;\n Check.typeOf.number.greaterThanOrEquals(\n \"north\",\n north,\n -CesiumMath.PI_OVER_TWO\n );\n Check.typeOf.number.lessThanOrEquals(\"north\", north, CesiumMath.PI_OVER_TWO);\n\n var south = rectangle.south;\n Check.typeOf.number.greaterThanOrEquals(\n \"south\",\n south,\n -CesiumMath.PI_OVER_TWO\n );\n Check.typeOf.number.lessThanOrEquals(\"south\", south, CesiumMath.PI_OVER_TWO);\n\n var west = rectangle.west;\n Check.typeOf.number.greaterThanOrEquals(\"west\", west, -Math.PI);\n Check.typeOf.number.lessThanOrEquals(\"west\", west, Math.PI);\n\n var east = rectangle.east;\n Check.typeOf.number.greaterThanOrEquals(\"east\", east, -Math.PI);\n Check.typeOf.number.lessThanOrEquals(\"east\", east, Math.PI);\n //>>includeEnd('debug');\n};\n\n/**\n * Computes the southwest corner of a rectangle.\n *\n * @param {Rectangle} rectangle The rectangle for which to find the corner\n * @param {Cartographic} [result] The object onto which to store the result.\n * @returns {Cartographic} The modified result parameter or a new Cartographic instance if none was provided.\n */\nRectangle.southwest = function (rectangle, result) {\n //>>includeStart('debug', pragmas.debug);\n Check.typeOf.object(\"rectangle\", rectangle);\n //>>includeEnd('debug');\n\n if (!defined(result)) {\n return new Cartographic(rectangle.west, rectangle.south);\n }\n result.longitude = rectangle.west;\n result.latitude = rectangle.south;\n result.height = 0.0;\n return result;\n};\n\n/**\n * Computes the northwest corner of a rectangle.\n *\n * @param {Rectangle} rectangle The rectangle for which to find the corner\n * @param {Cartographic} [result] The object onto which to store the result.\n * @returns {Cartographic} The modified result parameter or a new Cartographic instance if none was provided.\n */\nRectangle.northwest = function (rectangle, result) {\n //>>includeStart('debug', pragmas.debug);\n Check.typeOf.object(\"rectangle\", rectangle);\n //>>includeEnd('debug');\n\n if (!defined(result)) {\n return new Cartographic(rectangle.west, rectangle.north);\n }\n result.longitude = rectangle.west;\n result.latitude = rectangle.north;\n result.height = 0.0;\n return result;\n};\n\n/**\n * Computes the northeast corner of a rectangle.\n *\n * @param {Rectangle} rectangle The rectangle for which to find the corner\n * @param {Cartographic} [result] The object onto which to store the result.\n * @returns {Cartographic} The modified result parameter or a new Cartographic instance if none was provided.\n */\nRectangle.northeast = function (rectangle, result) {\n //>>includeStart('debug', pragmas.debug);\n Check.typeOf.object(\"rectangle\", rectangle);\n //>>includeEnd('debug');\n\n if (!defined(result)) {\n return new Cartographic(rectangle.east, rectangle.north);\n }\n result.longitude = rectangle.east;\n result.latitude = rectangle.north;\n result.height = 0.0;\n return result;\n};\n\n/**\n * Computes the southeast corner of a rectangle.\n *\n * @param {Rectangle} rectangle The rectangle for which to find the corner\n * @param {Cartographic} [result] The object onto which to store the result.\n * @returns {Cartographic} The modified result parameter or a new Cartographic instance if none was provided.\n */\nRectangle.southeast = function (rectangle, result) {\n //>>includeStart('debug', pragmas.debug);\n Check.typeOf.object(\"rectangle\", rectangle);\n //>>includeEnd('debug');\n\n if (!defined(result)) {\n return new Cartographic(rectangle.east, rectangle.south);\n }\n result.longitude = rectangle.east;\n result.latitude = rectangle.south;\n result.height = 0.0;\n return result;\n};\n\n/**\n * Computes the center of a rectangle.\n *\n * @param {Rectangle} rectangle The rectangle for which to find the center\n * @param {Cartographic} [result] The object onto which to store the result.\n * @returns {Cartographic} The modified result parameter or a new Cartographic instance if none was provided.\n */\nRectangle.center = function (rectangle, result) {\n //>>includeStart('debug', pragmas.debug);\n Check.typeOf.object(\"rectangle\", rectangle);\n //>>includeEnd('debug');\n\n var east = rectangle.east;\n var west = rectangle.west;\n\n if (east < west) {\n east += CesiumMath.TWO_PI;\n }\n\n var longitude = CesiumMath.negativePiToPi((west + east) * 0.5);\n var latitude = (rectangle.south + rectangle.north) * 0.5;\n\n if (!defined(result)) {\n return new Cartographic(longitude, latitude);\n }\n\n result.longitude = longitude;\n result.latitude = latitude;\n result.height = 0.0;\n return result;\n};\n\n/**\n * Computes the intersection of two rectangles. This function assumes that the rectangle's coordinates are\n * latitude and longitude in radians and produces a correct intersection, taking into account the fact that\n * the same angle can be represented with multiple values as well as the wrapping of longitude at the\n * anti-meridian. For a simple intersection that ignores these factors and can be used with projected\n * coordinates, see {@link Rectangle.simpleIntersection}.\n *\n * @param {Rectangle} rectangle On rectangle to find an intersection\n * @param {Rectangle} otherRectangle Another rectangle to find an intersection\n * @param {Rectangle} [result] The object onto which to store the result.\n * @returns {Rectangle|undefined} The modified result parameter, a new Rectangle instance if none was provided or undefined if there is no intersection.\n */\nRectangle.intersection = function (rectangle, otherRectangle, result) {\n //>>includeStart('debug', pragmas.debug);\n Check.typeOf.object(\"rectangle\", rectangle);\n Check.typeOf.object(\"otherRectangle\", otherRectangle);\n //>>includeEnd('debug');\n\n var rectangleEast = rectangle.east;\n var rectangleWest = rectangle.west;\n\n var otherRectangleEast = otherRectangle.east;\n var otherRectangleWest = otherRectangle.west;\n\n if (rectangleEast < rectangleWest && otherRectangleEast > 0.0) {\n rectangleEast += CesiumMath.TWO_PI;\n } else if (otherRectangleEast < otherRectangleWest && rectangleEast > 0.0) {\n otherRectangleEast += CesiumMath.TWO_PI;\n }\n\n if (rectangleEast < rectangleWest && otherRectangleWest < 0.0) {\n otherRectangleWest += CesiumMath.TWO_PI;\n } else if (otherRectangleEast < otherRectangleWest && rectangleWest < 0.0) {\n rectangleWest += CesiumMath.TWO_PI;\n }\n\n var west = CesiumMath.negativePiToPi(\n Math.max(rectangleWest, otherRectangleWest)\n );\n var east = CesiumMath.negativePiToPi(\n Math.min(rectangleEast, otherRectangleEast)\n );\n\n if (\n (rectangle.west < rectangle.east ||\n otherRectangle.west < otherRectangle.east) &&\n east <= west\n ) {\n return undefined;\n }\n\n var south = Math.max(rectangle.south, otherRectangle.south);\n var north = Math.min(rectangle.north, otherRectangle.north);\n\n if (south >= north) {\n return undefined;\n }\n\n if (!defined(result)) {\n return new Rectangle(west, south, east, north);\n }\n result.west = west;\n result.south = south;\n result.east = east;\n result.north = north;\n return result;\n};\n\n/**\n * Computes a simple intersection of two rectangles. Unlike {@link Rectangle.intersection}, this function\n * does not attempt to put the angular coordinates into a consistent range or to account for crossing the\n * anti-meridian. As such, it can be used for rectangles where the coordinates are not simply latitude\n * and longitude (i.e. projected coordinates).\n *\n * @param {Rectangle} rectangle On rectangle to find an intersection\n * @param {Rectangle} otherRectangle Another rectangle to find an intersection\n * @param {Rectangle} [result] The object onto which to store the result.\n * @returns {Rectangle|undefined} The modified result parameter, a new Rectangle instance if none was provided or undefined if there is no intersection.\n */\nRectangle.simpleIntersection = function (rectangle, otherRectangle, result) {\n //>>includeStart('debug', pragmas.debug);\n Check.typeOf.object(\"rectangle\", rectangle);\n Check.typeOf.object(\"otherRectangle\", otherRectangle);\n //>>includeEnd('debug');\n\n var west = Math.max(rectangle.west, otherRectangle.west);\n var south = Math.max(rectangle.south, otherRectangle.south);\n var east = Math.min(rectangle.east, otherRectangle.east);\n var north = Math.min(rectangle.north, otherRectangle.north);\n\n if (south >= north || west >= east) {\n return undefined;\n }\n\n if (!defined(result)) {\n return new Rectangle(west, south, east, north);\n }\n\n result.west = west;\n result.south = south;\n result.east = east;\n result.north = north;\n return result;\n};\n\n/**\n * Computes a rectangle that is the union of two rectangles.\n *\n * @param {Rectangle} rectangle A rectangle to enclose in rectangle.\n * @param {Rectangle} otherRectangle A rectangle to enclose in a rectangle.\n * @param {Rectangle} [result] The object onto which to store the result.\n * @returns {Rectangle} The modified result parameter or a new Rectangle instance if none was provided.\n */\nRectangle.union = function (rectangle, otherRectangle, result) {\n //>>includeStart('debug', pragmas.debug);\n Check.typeOf.object(\"rectangle\", rectangle);\n Check.typeOf.object(\"otherRectangle\", otherRectangle);\n //>>includeEnd('debug');\n\n if (!defined(result)) {\n result = new Rectangle();\n }\n\n var rectangleEast = rectangle.east;\n var rectangleWest = rectangle.west;\n\n var otherRectangleEast = otherRectangle.east;\n var otherRectangleWest = otherRectangle.west;\n\n if (rectangleEast < rectangleWest && otherRectangleEast > 0.0) {\n rectangleEast += CesiumMath.TWO_PI;\n } else if (otherRectangleEast < otherRectangleWest && rectangleEast > 0.0) {\n otherRectangleEast += CesiumMath.TWO_PI;\n }\n\n if (rectangleEast < rectangleWest && otherRectangleWest < 0.0) {\n otherRectangleWest += CesiumMath.TWO_PI;\n } else if (otherRectangleEast < otherRectangleWest && rectangleWest < 0.0) {\n rectangleWest += CesiumMath.TWO_PI;\n }\n\n var west = CesiumMath.convertLongitudeRange(\n Math.min(rectangleWest, otherRectangleWest)\n );\n var east = CesiumMath.convertLongitudeRange(\n Math.max(rectangleEast, otherRectangleEast)\n );\n\n result.west = west;\n result.south = Math.min(rectangle.south, otherRectangle.south);\n result.east = east;\n result.north = Math.max(rectangle.north, otherRectangle.north);\n\n return result;\n};\n\n/**\n * Computes a rectangle by enlarging the provided rectangle until it contains the provided cartographic.\n *\n * @param {Rectangle} rectangle A rectangle to expand.\n * @param {Cartographic} cartographic A cartographic to enclose in a rectangle.\n * @param {Rectangle} [result] The object onto which to store the result.\n * @returns {Rectangle} The modified result parameter or a new Rectangle instance if one was not provided.\n */\nRectangle.expand = function (rectangle, cartographic, result) {\n //>>includeStart('debug', pragmas.debug);\n Check.typeOf.object(\"rectangle\", rectangle);\n Check.typeOf.object(\"cartographic\", cartographic);\n //>>includeEnd('debug');\n\n if (!defined(result)) {\n result = new Rectangle();\n }\n\n result.west = Math.min(rectangle.west, cartographic.longitude);\n result.south = Math.min(rectangle.south, cartographic.latitude);\n result.east = Math.max(rectangle.east, cartographic.longitude);\n result.north = Math.max(rectangle.north, cartographic.latitude);\n\n return result;\n};\n\n/**\n * Returns true if the cartographic is on or inside the rectangle, false otherwise.\n *\n * @param {Rectangle} rectangle The rectangle\n * @param {Cartographic} cartographic The cartographic to test.\n * @returns {Boolean} true if the provided cartographic is inside the rectangle, false otherwise.\n */\nRectangle.contains = function (rectangle, cartographic) {\n //>>includeStart('debug', pragmas.debug);\n Check.typeOf.object(\"rectangle\", rectangle);\n Check.typeOf.object(\"cartographic\", cartographic);\n //>>includeEnd('debug');\n\n var longitude = cartographic.longitude;\n var latitude = cartographic.latitude;\n\n var west = rectangle.west;\n var east = rectangle.east;\n\n if (east < west) {\n east += CesiumMath.TWO_PI;\n if (longitude < 0.0) {\n longitude += CesiumMath.TWO_PI;\n }\n }\n return (\n (longitude > west ||\n CesiumMath.equalsEpsilon(longitude, west, CesiumMath.EPSILON14)) &&\n (longitude < east ||\n CesiumMath.equalsEpsilon(longitude, east, CesiumMath.EPSILON14)) &&\n latitude >= rectangle.south &&\n latitude <= rectangle.north\n );\n};\n\nvar subsampleLlaScratch = new Cartographic();\n/**\n * Samples a rectangle so that it includes a list of Cartesian points suitable for passing to\n * {@link BoundingSphere#fromPoints}. Sampling is necessary to account\n * for rectangles that cover the poles or cross the equator.\n *\n * @param {Rectangle} rectangle The rectangle to subsample.\n * @param {Ellipsoid} [ellipsoid=Ellipsoid.WGS84] The ellipsoid to use.\n * @param {Number} [surfaceHeight=0.0] The height of the rectangle above the ellipsoid.\n * @param {Cartesian3[]} [result] The array of Cartesians onto which to store the result.\n * @returns {Cartesian3[]} The modified result parameter or a new Array of Cartesians instances if none was provided.\n */\nRectangle.subsample = function (rectangle, ellipsoid, surfaceHeight, result) {\n //>>includeStart('debug', pragmas.debug);\n Check.typeOf.object(\"rectangle\", rectangle);\n //>>includeEnd('debug');\n\n ellipsoid = defaultValue(ellipsoid, Ellipsoid.WGS84);\n surfaceHeight = defaultValue(surfaceHeight, 0.0);\n\n if (!defined(result)) {\n result = [];\n }\n var length = 0;\n\n var north = rectangle.north;\n var south = rectangle.south;\n var east = rectangle.east;\n var west = rectangle.west;\n\n var lla = subsampleLlaScratch;\n lla.height = surfaceHeight;\n\n lla.longitude = west;\n lla.latitude = north;\n result[length] = ellipsoid.cartographicToCartesian(lla, result[length]);\n length++;\n\n lla.longitude = east;\n result[length] = ellipsoid.cartographicToCartesian(lla, result[length]);\n length++;\n\n lla.latitude = south;\n result[length] = ellipsoid.cartographicToCartesian(lla, result[length]);\n length++;\n\n lla.longitude = west;\n result[length] = ellipsoid.cartographicToCartesian(lla, result[length]);\n length++;\n\n if (north < 0.0) {\n lla.latitude = north;\n } else if (south > 0.0) {\n lla.latitude = south;\n } else {\n lla.latitude = 0.0;\n }\n\n for (var i = 1; i < 8; ++i) {\n lla.longitude = -Math.PI + i * CesiumMath.PI_OVER_TWO;\n if (Rectangle.contains(rectangle, lla)) {\n result[length] = ellipsoid.cartographicToCartesian(lla, result[length]);\n length++;\n }\n }\n\n if (lla.latitude === 0.0) {\n lla.longitude = west;\n result[length] = ellipsoid.cartographicToCartesian(lla, result[length]);\n length++;\n lla.longitude = east;\n result[length] = ellipsoid.cartographicToCartesian(lla, result[length]);\n length++;\n }\n result.length = length;\n return result;\n};\n\n/**\n * The largest possible rectangle.\n *\n * @type {Rectangle}\n * @constant\n */\nRectangle.MAX_VALUE = Object.freeze(\n new Rectangle(\n -Math.PI,\n -CesiumMath.PI_OVER_TWO,\n Math.PI,\n CesiumMath.PI_OVER_TWO\n )\n);\nexport default Rectangle;\n","import Check from \"./Check.js\";\nimport defaultValue from \"./defaultValue.js\";\nimport defined from \"./defined.js\";\nimport DeveloperError from \"./DeveloperError.js\";\nimport CesiumMath from \"./Math.js\";\n\n/**\n * A 2D Cartesian point.\n * @alias Cartesian2\n * @constructor\n *\n * @param {Number} [x=0.0] The X component.\n * @param {Number} [y=0.0] The Y component.\n *\n * @see Cartesian3\n * @see Cartesian4\n * @see Packable\n */\nfunction Cartesian2(x, y) {\n /**\n * The X component.\n * @type {Number}\n * @default 0.0\n */\n this.x = defaultValue(x, 0.0);\n\n /**\n * The Y component.\n * @type {Number}\n * @default 0.0\n */\n this.y = defaultValue(y, 0.0);\n}\n\n/**\n * Creates a Cartesian2 instance from x and y coordinates.\n *\n * @param {Number} x The x coordinate.\n * @param {Number} y The y coordinate.\n * @param {Cartesian2} [result] The object onto which to store the result.\n * @returns {Cartesian2} The modified result parameter or a new Cartesian2 instance if one was not provided.\n */\nCartesian2.fromElements = function (x, y, result) {\n if (!defined(result)) {\n return new Cartesian2(x, y);\n }\n\n result.x = x;\n result.y = y;\n return result;\n};\n\n/**\n * Duplicates a Cartesian2 instance.\n *\n * @param {Cartesian2} cartesian The Cartesian to duplicate.\n * @param {Cartesian2} [result] The object onto which to store the result.\n * @returns {Cartesian2} The modified result parameter or a new Cartesian2 instance if one was not provided. (Returns undefined if cartesian is undefined)\n */\nCartesian2.clone = function (cartesian, result) {\n if (!defined(cartesian)) {\n return undefined;\n }\n if (!defined(result)) {\n return new Cartesian2(cartesian.x, cartesian.y);\n }\n\n result.x = cartesian.x;\n result.y = cartesian.y;\n return result;\n};\n\n/**\n * Creates a Cartesian2 instance from an existing Cartesian3. This simply takes the\n * x and y properties of the Cartesian3 and drops z.\n * @function\n *\n * @param {Cartesian3} cartesian The Cartesian3 instance to create a Cartesian2 instance from.\n * @param {Cartesian2} [result] The object onto which to store the result.\n * @returns {Cartesian2} The modified result parameter or a new Cartesian2 instance if one was not provided.\n */\nCartesian2.fromCartesian3 = Cartesian2.clone;\n\n/**\n * Creates a Cartesian2 instance from an existing Cartesian4. This simply takes the\n * x and y properties of the Cartesian4 and drops z and w.\n * @function\n *\n * @param {Cartesian4} cartesian The Cartesian4 instance to create a Cartesian2 instance from.\n * @param {Cartesian2} [result] The object onto which to store the result.\n * @returns {Cartesian2} The modified result parameter or a new Cartesian2 instance if one was not provided.\n */\nCartesian2.fromCartesian4 = Cartesian2.clone;\n\n/**\n * The number of elements used to pack the object into an array.\n * @type {Number}\n */\nCartesian2.packedLength = 2;\n\n/**\n * Stores the provided instance into the provided array.\n *\n * @param {Cartesian2} value The value to pack.\n * @param {Number[]} array The array to pack into.\n * @param {Number} [startingIndex=0] The index into the array at which to start packing the elements.\n *\n * @returns {Number[]} The array that was packed into\n */\nCartesian2.pack = function (value, array, startingIndex) {\n //>>includeStart('debug', pragmas.debug);\n Check.typeOf.object(\"value\", value);\n Check.defined(\"array\", array);\n //>>includeEnd('debug');\n\n startingIndex = defaultValue(startingIndex, 0);\n\n array[startingIndex++] = value.x;\n array[startingIndex] = value.y;\n\n return array;\n};\n\n/**\n * Retrieves an instance from a packed array.\n *\n * @param {Number[]} array The packed array.\n * @param {Number} [startingIndex=0] The starting index of the element to be unpacked.\n * @param {Cartesian2} [result] The object into which to store the result.\n * @returns {Cartesian2} The modified result parameter or a new Cartesian2 instance if one was not provided.\n */\nCartesian2.unpack = function (array, startingIndex, result) {\n //>>includeStart('debug', pragmas.debug);\n Check.defined(\"array\", array);\n //>>includeEnd('debug');\n\n startingIndex = defaultValue(startingIndex, 0);\n\n if (!defined(result)) {\n result = new Cartesian2();\n }\n result.x = array[startingIndex++];\n result.y = array[startingIndex];\n return result;\n};\n\n/**\n * Flattens an array of Cartesian2s into and array of components.\n *\n * @param {Cartesian2[]} array The array of cartesians to pack.\n * @param {Number[]} [result] The array onto which to store the result. If this is a typed array, it must have array.length * 2 components, else a {@link DeveloperError} will be thrown. If it is a regular array, it will be resized to have (array.length * 2) elements.\n\n * @returns {Number[]} The packed array.\n */\nCartesian2.packArray = function (array, result) {\n //>>includeStart('debug', pragmas.debug);\n Check.defined(\"array\", array);\n //>>includeEnd('debug');\n\n var length = array.length;\n var resultLength = length * 2;\n if (!defined(result)) {\n result = new Array(resultLength);\n } else if (!Array.isArray(result) && result.length !== resultLength) {\n throw new DeveloperError(\n \"If result is a typed array, it must have exactly array.length * 2 elements\"\n );\n } else if (result.length !== resultLength) {\n result.length = resultLength;\n }\n\n for (var i = 0; i < length; ++i) {\n Cartesian2.pack(array[i], result, i * 2);\n }\n return result;\n};\n\n/**\n * Unpacks an array of cartesian components into and array of Cartesian2s.\n *\n * @param {Number[]} array The array of components to unpack.\n * @param {Cartesian2[]} [result] The array onto which to store the result.\n * @returns {Cartesian2[]} The unpacked array.\n */\nCartesian2.unpackArray = function (array, result) {\n //>>includeStart('debug', pragmas.debug);\n Check.defined(\"array\", array);\n Check.typeOf.number.greaterThanOrEquals(\"array.length\", array.length, 2);\n if (array.length % 2 !== 0) {\n throw new DeveloperError(\"array length must be a multiple of 2.\");\n }\n //>>includeEnd('debug');\n\n var length = array.length;\n if (!defined(result)) {\n result = new Array(length / 2);\n } else {\n result.length = length / 2;\n }\n\n for (var i = 0; i < length; i += 2) {\n var index = i / 2;\n result[index] = Cartesian2.unpack(array, i, result[index]);\n }\n return result;\n};\n\n/**\n * Creates a Cartesian2 from two consecutive elements in an array.\n * @function\n *\n * @param {Number[]} array The array whose two consecutive elements correspond to the x and y components, respectively.\n * @param {Number} [startingIndex=0] The offset into the array of the first element, which corresponds to the x component.\n * @param {Cartesian2} [result] The object onto which to store the result.\n * @returns {Cartesian2} The modified result parameter or a new Cartesian2 instance if one was not provided.\n *\n * @example\n * // Create a Cartesian2 with (1.0, 2.0)\n * var v = [1.0, 2.0];\n * var p = Cesium.Cartesian2.fromArray(v);\n *\n * // Create a Cartesian2 with (1.0, 2.0) using an offset into an array\n * var v2 = [0.0, 0.0, 1.0, 2.0];\n * var p2 = Cesium.Cartesian2.fromArray(v2, 2);\n */\nCartesian2.fromArray = Cartesian2.unpack;\n\n/**\n * Computes the value of the maximum component for the supplied Cartesian.\n *\n * @param {Cartesian2} cartesian The cartesian to use.\n * @returns {Number} The value of the maximum component.\n */\nCartesian2.maximumComponent = function (cartesian) {\n //>>includeStart('debug', pragmas.debug);\n Check.typeOf.object(\"cartesian\", cartesian);\n //>>includeEnd('debug');\n\n return Math.max(cartesian.x, cartesian.y);\n};\n\n/**\n * Computes the value of the minimum component for the supplied Cartesian.\n *\n * @param {Cartesian2} cartesian The cartesian to use.\n * @returns {Number} The value of the minimum component.\n */\nCartesian2.minimumComponent = function (cartesian) {\n //>>includeStart('debug', pragmas.debug);\n Check.typeOf.object(\"cartesian\", cartesian);\n //>>includeEnd('debug');\n\n return Math.min(cartesian.x, cartesian.y);\n};\n\n/**\n * Compares two Cartesians and computes a Cartesian which contains the minimum components of the supplied Cartesians.\n *\n * @param {Cartesian2} first A cartesian to compare.\n * @param {Cartesian2} second A cartesian to compare.\n * @param {Cartesian2} result The object into which to store the result.\n * @returns {Cartesian2} A cartesian with the minimum components.\n */\nCartesian2.minimumByComponent = function (first, second, result) {\n //>>includeStart('debug', pragmas.debug);\n Check.typeOf.object(\"first\", first);\n Check.typeOf.object(\"second\", second);\n Check.typeOf.object(\"result\", result);\n //>>includeEnd('debug');\n\n result.x = Math.min(first.x, second.x);\n result.y = Math.min(first.y, second.y);\n\n return result;\n};\n\n/**\n * Compares two Cartesians and computes a Cartesian which contains the maximum components of the supplied Cartesians.\n *\n * @param {Cartesian2} first A cartesian to compare.\n * @param {Cartesian2} second A cartesian to compare.\n * @param {Cartesian2} result The object into which to store the result.\n * @returns {Cartesian2} A cartesian with the maximum components.\n */\nCartesian2.maximumByComponent = function (first, second, result) {\n //>>includeStart('debug', pragmas.debug);\n Check.typeOf.object(\"first\", first);\n Check.typeOf.object(\"second\", second);\n Check.typeOf.object(\"result\", result);\n //>>includeEnd('debug');\n\n result.x = Math.max(first.x, second.x);\n result.y = Math.max(first.y, second.y);\n return result;\n};\n\n/**\n * Computes the provided Cartesian's squared magnitude.\n *\n * @param {Cartesian2} cartesian The Cartesian instance whose squared magnitude is to be computed.\n * @returns {Number} The squared magnitude.\n */\nCartesian2.magnitudeSquared = function (cartesian) {\n //>>includeStart('debug', pragmas.debug);\n Check.typeOf.object(\"cartesian\", cartesian);\n //>>includeEnd('debug');\n\n return cartesian.x * cartesian.x + cartesian.y * cartesian.y;\n};\n\n/**\n * Computes the Cartesian's magnitude (length).\n *\n * @param {Cartesian2} cartesian The Cartesian instance whose magnitude is to be computed.\n * @returns {Number} The magnitude.\n */\nCartesian2.magnitude = function (cartesian) {\n return Math.sqrt(Cartesian2.magnitudeSquared(cartesian));\n};\n\nvar distanceScratch = new Cartesian2();\n\n/**\n * Computes the distance between two points.\n *\n * @param {Cartesian2} left The first point to compute the distance from.\n * @param {Cartesian2} right The second point to compute the distance to.\n * @returns {Number} The distance between two points.\n *\n * @example\n * // Returns 1.0\n * var d = Cesium.Cartesian2.distance(new Cesium.Cartesian2(1.0, 0.0), new Cesium.Cartesian2(2.0, 0.0));\n */\nCartesian2.distance = function (left, right) {\n //>>includeStart('debug', pragmas.debug);\n Check.typeOf.object(\"left\", left);\n Check.typeOf.object(\"right\", right);\n //>>includeEnd('debug');\n\n Cartesian2.subtract(left, right, distanceScratch);\n return Cartesian2.magnitude(distanceScratch);\n};\n\n/**\n * Computes the squared distance between two points. Comparing squared distances\n * using this function is more efficient than comparing distances using {@link Cartesian2#distance}.\n *\n * @param {Cartesian2} left The first point to compute the distance from.\n * @param {Cartesian2} right The second point to compute the distance to.\n * @returns {Number} The distance between two points.\n *\n * @example\n * // Returns 4.0, not 2.0\n * var d = Cesium.Cartesian2.distance(new Cesium.Cartesian2(1.0, 0.0), new Cesium.Cartesian2(3.0, 0.0));\n */\nCartesian2.distanceSquared = function (left, right) {\n //>>includeStart('debug', pragmas.debug);\n Check.typeOf.object(\"left\", left);\n Check.typeOf.object(\"right\", right);\n //>>includeEnd('debug');\n\n Cartesian2.subtract(left, right, distanceScratch);\n return Cartesian2.magnitudeSquared(distanceScratch);\n};\n\n/**\n * Computes the normalized form of the supplied Cartesian.\n *\n * @param {Cartesian2} cartesian The Cartesian to be normalized.\n * @param {Cartesian2} result The object onto which to store the result.\n * @returns {Cartesian2} The modified result parameter.\n */\nCartesian2.normalize = function (cartesian, result) {\n //>>includeStart('debug', pragmas.debug);\n Check.typeOf.object(\"cartesian\", cartesian);\n Check.typeOf.object(\"result\", result);\n //>>includeEnd('debug');\n\n var magnitude = Cartesian2.magnitude(cartesian);\n\n result.x = cartesian.x / magnitude;\n result.y = cartesian.y / magnitude;\n\n //>>includeStart('debug', pragmas.debug);\n if (isNaN(result.x) || isNaN(result.y)) {\n throw new DeveloperError(\"normalized result is not a number\");\n }\n //>>includeEnd('debug');\n\n return result;\n};\n\n/**\n * Computes the dot (scalar) product of two Cartesians.\n *\n * @param {Cartesian2} left The first Cartesian.\n * @param {Cartesian2} right The second Cartesian.\n * @returns {Number} The dot product.\n */\nCartesian2.dot = function (left, right) {\n //>>includeStart('debug', pragmas.debug);\n Check.typeOf.object(\"left\", left);\n Check.typeOf.object(\"right\", right);\n //>>includeEnd('debug');\n\n return left.x * right.x + left.y * right.y;\n};\n\n/**\n * Computes the componentwise product of two Cartesians.\n *\n * @param {Cartesian2} left The first Cartesian.\n * @param {Cartesian2} right The second Cartesian.\n * @param {Cartesian2} result The object onto which to store the result.\n * @returns {Cartesian2} The modified result parameter.\n */\nCartesian2.multiplyComponents = function (left, right, result) {\n //>>includeStart('debug', pragmas.debug);\n Check.typeOf.object(\"left\", left);\n Check.typeOf.object(\"right\", right);\n Check.typeOf.object(\"result\", result);\n //>>includeEnd('debug');\n\n result.x = left.x * right.x;\n result.y = left.y * right.y;\n return result;\n};\n\n/**\n * Computes the componentwise quotient of two Cartesians.\n *\n * @param {Cartesian2} left The first Cartesian.\n * @param {Cartesian2} right The second Cartesian.\n * @param {Cartesian2} result The object onto which to store the result.\n * @returns {Cartesian2} The modified result parameter.\n */\nCartesian2.divideComponents = function (left, right, result) {\n //>>includeStart('debug', pragmas.debug);\n Check.typeOf.object(\"left\", left);\n Check.typeOf.object(\"right\", right);\n Check.typeOf.object(\"result\", result);\n //>>includeEnd('debug');\n\n result.x = left.x / right.x;\n result.y = left.y / right.y;\n return result;\n};\n\n/**\n * Computes the componentwise sum of two Cartesians.\n *\n * @param {Cartesian2} left The first Cartesian.\n * @param {Cartesian2} right The second Cartesian.\n * @param {Cartesian2} result The object onto which to store the result.\n * @returns {Cartesian2} The modified result parameter.\n */\nCartesian2.add = function (left, right, result) {\n //>>includeStart('debug', pragmas.debug);\n Check.typeOf.object(\"left\", left);\n Check.typeOf.object(\"right\", right);\n Check.typeOf.object(\"result\", result);\n //>>includeEnd('debug');\n\n result.x = left.x + right.x;\n result.y = left.y + right.y;\n return result;\n};\n\n/**\n * Computes the componentwise difference of two Cartesians.\n *\n * @param {Cartesian2} left The first Cartesian.\n * @param {Cartesian2} right The second Cartesian.\n * @param {Cartesian2} result The object onto which to store the result.\n * @returns {Cartesian2} The modified result parameter.\n */\nCartesian2.subtract = function (left, right, result) {\n //>>includeStart('debug', pragmas.debug);\n Check.typeOf.object(\"left\", left);\n Check.typeOf.object(\"right\", right);\n Check.typeOf.object(\"result\", result);\n //>>includeEnd('debug');\n\n result.x = left.x - right.x;\n result.y = left.y - right.y;\n return result;\n};\n\n/**\n * Multiplies the provided Cartesian componentwise by the provided scalar.\n *\n * @param {Cartesian2} cartesian The Cartesian to be scaled.\n * @param {Number} scalar The scalar to multiply with.\n * @param {Cartesian2} result The object onto which to store the result.\n * @returns {Cartesian2} The modified result parameter.\n */\nCartesian2.multiplyByScalar = function (cartesian, scalar, result) {\n //>>includeStart('debug', pragmas.debug);\n Check.typeOf.object(\"cartesian\", cartesian);\n Check.typeOf.number(\"scalar\", scalar);\n Check.typeOf.object(\"result\", result);\n //>>includeEnd('debug');\n\n result.x = cartesian.x * scalar;\n result.y = cartesian.y * scalar;\n return result;\n};\n\n/**\n * Divides the provided Cartesian componentwise by the provided scalar.\n *\n * @param {Cartesian2} cartesian The Cartesian to be divided.\n * @param {Number} scalar The scalar to divide by.\n * @param {Cartesian2} result The object onto which to store the result.\n * @returns {Cartesian2} The modified result parameter.\n */\nCartesian2.divideByScalar = function (cartesian, scalar, result) {\n //>>includeStart('debug', pragmas.debug);\n Check.typeOf.object(\"cartesian\", cartesian);\n Check.typeOf.number(\"scalar\", scalar);\n Check.typeOf.object(\"result\", result);\n //>>includeEnd('debug');\n\n result.x = cartesian.x / scalar;\n result.y = cartesian.y / scalar;\n return result;\n};\n\n/**\n * Negates the provided Cartesian.\n *\n * @param {Cartesian2} cartesian The Cartesian to be negated.\n * @param {Cartesian2} result The object onto which to store the result.\n * @returns {Cartesian2} The modified result parameter.\n */\nCartesian2.negate = function (cartesian, result) {\n //>>includeStart('debug', pragmas.debug);\n Check.typeOf.object(\"cartesian\", cartesian);\n Check.typeOf.object(\"result\", result);\n //>>includeEnd('debug');\n\n result.x = -cartesian.x;\n result.y = -cartesian.y;\n return result;\n};\n\n/**\n * Computes the absolute value of the provided Cartesian.\n *\n * @param {Cartesian2} cartesian The Cartesian whose absolute value is to be computed.\n * @param {Cartesian2} result The object onto which to store the result.\n * @returns {Cartesian2} The modified result parameter.\n */\nCartesian2.abs = function (cartesian, result) {\n //>>includeStart('debug', pragmas.debug);\n Check.typeOf.object(\"cartesian\", cartesian);\n Check.typeOf.object(\"result\", result);\n //>>includeEnd('debug');\n\n result.x = Math.abs(cartesian.x);\n result.y = Math.abs(cartesian.y);\n return result;\n};\n\nvar lerpScratch = new Cartesian2();\n/**\n * Computes the linear interpolation or extrapolation at t using the provided cartesians.\n *\n * @param {Cartesian2} start The value corresponding to t at 0.0.\n * @param {Cartesian2} end The value corresponding to t at 1.0.\n * @param {Number} t The point along t at which to interpolate.\n * @param {Cartesian2} result The object onto which to store the result.\n * @returns {Cartesian2} The modified result parameter.\n */\nCartesian2.lerp = function (start, end, t, result) {\n //>>includeStart('debug', pragmas.debug);\n Check.typeOf.object(\"start\", start);\n Check.typeOf.object(\"end\", end);\n Check.typeOf.number(\"t\", t);\n Check.typeOf.object(\"result\", result);\n //>>includeEnd('debug');\n\n Cartesian2.multiplyByScalar(end, t, lerpScratch);\n result = Cartesian2.multiplyByScalar(start, 1.0 - t, result);\n return Cartesian2.add(lerpScratch, result, result);\n};\n\nvar angleBetweenScratch = new Cartesian2();\nvar angleBetweenScratch2 = new Cartesian2();\n/**\n * Returns the angle, in radians, between the provided Cartesians.\n *\n * @param {Cartesian2} left The first Cartesian.\n * @param {Cartesian2} right The second Cartesian.\n * @returns {Number} The angle between the Cartesians.\n */\nCartesian2.angleBetween = function (left, right) {\n //>>includeStart('debug', pragmas.debug);\n Check.typeOf.object(\"left\", left);\n Check.typeOf.object(\"right\", right);\n //>>includeEnd('debug');\n\n Cartesian2.normalize(left, angleBetweenScratch);\n Cartesian2.normalize(right, angleBetweenScratch2);\n return CesiumMath.acosClamped(\n Cartesian2.dot(angleBetweenScratch, angleBetweenScratch2)\n );\n};\n\nvar mostOrthogonalAxisScratch = new Cartesian2();\n/**\n * Returns the axis that is most orthogonal to the provided Cartesian.\n *\n * @param {Cartesian2} cartesian The Cartesian on which to find the most orthogonal axis.\n * @param {Cartesian2} result The object onto which to store the result.\n * @returns {Cartesian2} The most orthogonal axis.\n */\nCartesian2.mostOrthogonalAxis = function (cartesian, result) {\n //>>includeStart('debug', pragmas.debug);\n Check.typeOf.object(\"cartesian\", cartesian);\n Check.typeOf.object(\"result\", result);\n //>>includeEnd('debug');\n\n var f = Cartesian2.normalize(cartesian, mostOrthogonalAxisScratch);\n Cartesian2.abs(f, f);\n\n if (f.x <= f.y) {\n result = Cartesian2.clone(Cartesian2.UNIT_X, result);\n } else {\n result = Cartesian2.clone(Cartesian2.UNIT_Y, result);\n }\n\n return result;\n};\n\n/**\n * Compares the provided Cartesians componentwise and returns\n * <code>true</code> if they are equal, <code>false</code> otherwise.\n *\n * @param {Cartesian2} [left] The first Cartesian.\n * @param {Cartesian2} [right] The second Cartesian.\n * @returns {Boolean} <code>true</code> if left and right are equal, <code>false</code> otherwise.\n */\nCartesian2.equals = function (left, right) {\n return (\n left === right ||\n (defined(left) &&\n defined(right) &&\n left.x === right.x &&\n left.y === right.y)\n );\n};\n\n/**\n * @private\n */\nCartesian2.equalsArray = function (cartesian, array, offset) {\n return cartesian.x === array[offset] && cartesian.y === array[offset + 1];\n};\n\n/**\n * Compares the provided Cartesians componentwise and returns\n * <code>true</code> if they pass an absolute or relative tolerance test,\n * <code>false</code> otherwise.\n *\n * @param {Cartesian2} [left] The first Cartesian.\n * @param {Cartesian2} [right] The second Cartesian.\n * @param {Number} [relativeEpsilon=0] The relative epsilon tolerance to use for equality testing.\n * @param {Number} [absoluteEpsilon=relativeEpsilon] The absolute epsilon tolerance to use for equality testing.\n * @returns {Boolean} <code>true</code> if left and right are within the provided epsilon, <code>false</code> otherwise.\n */\nCartesian2.equalsEpsilon = function (\n left,\n right,\n relativeEpsilon,\n absoluteEpsilon\n) {\n return (\n left === right ||\n (defined(left) &&\n defined(right) &&\n CesiumMath.equalsEpsilon(\n left.x,\n right.x,\n relativeEpsilon,\n absoluteEpsilon\n ) &&\n CesiumMath.equalsEpsilon(\n left.y,\n right.y,\n relativeEpsilon,\n absoluteEpsilon\n ))\n );\n};\n\n/**\n * An immutable Cartesian2 instance initialized to (0.0, 0.0).\n *\n * @type {Cartesian2}\n * @constant\n */\nCartesian2.ZERO = Object.freeze(new Cartesian2(0.0, 0.0));\n\n/**\n * An immutable Cartesian2 instance initialized to (1.0, 0.0).\n *\n * @type {Cartesian2}\n * @constant\n */\nCartesian2.UNIT_X = Object.freeze(new Cartesian2(1.0, 0.0));\n\n/**\n * An immutable Cartesian2 instance initialized to (0.0, 1.0).\n *\n * @type {Cartesian2}\n * @constant\n */\nCartesian2.UNIT_Y = Object.freeze(new Cartesian2(0.0, 1.0));\n\n/**\n * Duplicates this Cartesian2 instance.\n *\n * @param {Cartesian2} [result] The object onto which to store the result.\n * @returns {Cartesian2} The modified result parameter or a new Cartesian2 instance if one was not provided.\n */\nCartesian2.prototype.clone = function (result) {\n return Cartesian2.clone(this, result);\n};\n\n/**\n * Compares this Cartesian against the provided Cartesian componentwise and returns\n * <code>true</code> if they are equal, <code>false</code> otherwise.\n *\n * @param {Cartesian2} [right] The right hand side Cartesian.\n * @returns {Boolean} <code>true</code> if they are equal, <code>false</code> otherwise.\n */\nCartesian2.prototype.equals = function (right) {\n return Cartesian2.equals(this, right);\n};\n\n/**\n * Compares this Cartesian against the provided Cartesian componentwise and returns\n * <code>true</code> if they pass an absolute or relative tolerance test,\n * <code>false</code> otherwise.\n *\n * @param {Cartesian2} [right] The right hand side Cartesian.\n * @param {Number} [relativeEpsilon=0] The relative epsilon tolerance to use for equality testing.\n * @param {Number} [absoluteEpsilon=relativeEpsilon] The absolute epsilon tolerance to use for equality testing.\n * @returns {Boolean} <code>true</code> if they are within the provided epsilon, <code>false</code> otherwise.\n */\nCartesian2.prototype.equalsEpsilon = function (\n right,\n relativeEpsilon,\n absoluteEpsilon\n) {\n return Cartesian2.equalsEpsilon(\n this,\n right,\n relativeEpsilon,\n absoluteEpsilon\n );\n};\n\n/**\n * Creates a string representing this Cartesian in the format '(x, y)'.\n *\n * @returns {String} A string representing the provided Cartesian in the format '(x, y)'.\n */\nCartesian2.prototype.toString = function () {\n return \"(\" + this.x + \", \" + this.y + \")\";\n};\nexport default Cartesian2;\n"],"names":["defaultValue","Check","defined","DeveloperError","CesiumMath","cartesianToCartographicN","cartesianToCartographicP","cartesianToCartographicH","distanceScratch","lerpScratch","angleBetweenScratch","angleBetweenScratch2","mostOrthogonalAxisScratch"],"mappings":"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"}