1 line
20 KiB
Plaintext
1 line
20 KiB
Plaintext
{"version":3,"file":"EllipsoidTangentPlane-f1a69a20.js","sources":["../../../../Source/Core/EllipsoidTangentPlane.js"],"sourcesContent":["import AxisAlignedBoundingBox from \"./AxisAlignedBoundingBox.js\";\nimport Cartesian2 from \"./Cartesian2.js\";\nimport Cartesian3 from \"./Cartesian3.js\";\nimport Cartesian4 from \"./Cartesian4.js\";\nimport Check from \"./Check.js\";\nimport defaultValue from \"./defaultValue.js\";\nimport defined from \"./defined.js\";\nimport DeveloperError from \"./DeveloperError.js\";\nimport Ellipsoid from \"./Ellipsoid.js\";\nimport IntersectionTests from \"./IntersectionTests.js\";\nimport Matrix4 from \"./Matrix4.js\";\nimport Plane from \"./Plane.js\";\nimport Ray from \"./Ray.js\";\nimport Transforms from \"./Transforms.js\";\n\nconst scratchCart4 = new Cartesian4();\n/**\n * A plane tangent to the provided ellipsoid at the provided origin.\n * If origin is not on the surface of the ellipsoid, it's surface projection will be used.\n * If origin is at the center of the ellipsoid, an exception will be thrown.\n * @alias EllipsoidTangentPlane\n * @constructor\n *\n * @param {Cartesian3} origin The point on the surface of the ellipsoid where the tangent plane touches.\n * @param {Ellipsoid} [ellipsoid=Ellipsoid.WGS84] The ellipsoid to use.\n *\n * @exception {DeveloperError} origin must not be at the center of the ellipsoid.\n */\nfunction EllipsoidTangentPlane(origin, ellipsoid) {\n //>>includeStart('debug', pragmas.debug);\n Check.defined(\"origin\", origin);\n //>>includeEnd('debug');\n\n ellipsoid = defaultValue(ellipsoid, Ellipsoid.WGS84);\n origin = ellipsoid.scaleToGeodeticSurface(origin);\n\n //>>includeStart('debug', pragmas.debug);\n if (!defined(origin)) {\n throw new DeveloperError(\n \"origin must not be at the center of the ellipsoid.\"\n );\n }\n //>>includeEnd('debug');\n\n const eastNorthUp = Transforms.eastNorthUpToFixedFrame(origin, ellipsoid);\n this._ellipsoid = ellipsoid;\n this._origin = origin;\n this._xAxis = Cartesian3.fromCartesian4(\n Matrix4.getColumn(eastNorthUp, 0, scratchCart4)\n );\n this._yAxis = Cartesian3.fromCartesian4(\n Matrix4.getColumn(eastNorthUp, 1, scratchCart4)\n );\n\n const normal = Cartesian3.fromCartesian4(\n Matrix4.getColumn(eastNorthUp, 2, scratchCart4)\n );\n this._plane = Plane.fromPointNormal(origin, normal);\n}\n\nObject.defineProperties(EllipsoidTangentPlane.prototype, {\n /**\n * Gets the ellipsoid.\n * @memberof EllipsoidTangentPlane.prototype\n * @type {Ellipsoid}\n */\n ellipsoid: {\n get: function () {\n return this._ellipsoid;\n },\n },\n\n /**\n * Gets the origin.\n * @memberof EllipsoidTangentPlane.prototype\n * @type {Cartesian3}\n */\n origin: {\n get: function () {\n return this._origin;\n },\n },\n\n /**\n * Gets the plane which is tangent to the ellipsoid.\n * @memberof EllipsoidTangentPlane.prototype\n * @readonly\n * @type {Plane}\n */\n plane: {\n get: function () {\n return this._plane;\n },\n },\n\n /**\n * Gets the local X-axis (east) of the tangent plane.\n * @memberof EllipsoidTangentPlane.prototype\n * @readonly\n * @type {Cartesian3}\n */\n xAxis: {\n get: function () {\n return this._xAxis;\n },\n },\n\n /**\n * Gets the local Y-axis (north) of the tangent plane.\n * @memberof EllipsoidTangentPlane.prototype\n * @readonly\n * @type {Cartesian3}\n */\n yAxis: {\n get: function () {\n return this._yAxis;\n },\n },\n\n /**\n * Gets the local Z-axis (up) of the tangent plane.\n * @memberof EllipsoidTangentPlane.prototype\n * @readonly\n * @type {Cartesian3}\n */\n zAxis: {\n get: function () {\n return this._plane.normal;\n },\n },\n});\n\nconst tmp = new AxisAlignedBoundingBox();\n/**\n * Creates a new instance from the provided ellipsoid and the center\n * point of the provided Cartesians.\n *\n * @param {Cartesian3[]} cartesians The list of positions surrounding the center point.\n * @param {Ellipsoid} [ellipsoid=Ellipsoid.WGS84] The ellipsoid to use.\n * @returns {EllipsoidTangentPlane} The new instance of EllipsoidTangentPlane.\n */\nEllipsoidTangentPlane.fromPoints = function (cartesians, ellipsoid) {\n //>>includeStart('debug', pragmas.debug);\n Check.defined(\"cartesians\", cartesians);\n //>>includeEnd('debug');\n\n const box = AxisAlignedBoundingBox.fromPoints(cartesians, tmp);\n return new EllipsoidTangentPlane(box.center, ellipsoid);\n};\n\nconst scratchProjectPointOntoPlaneRay = new Ray();\nconst scratchProjectPointOntoPlaneCartesian3 = new Cartesian3();\n\n/**\n * Computes the projection of the provided 3D position onto the 2D plane, radially outward from the {@link EllipsoidTangentPlane.ellipsoid} coordinate system origin.\n *\n * @param {Cartesian3} cartesian The point to project.\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 none was provided. Undefined if there is no intersection point\n */\nEllipsoidTangentPlane.prototype.projectPointOntoPlane = function (\n cartesian,\n result\n) {\n //>>includeStart('debug', pragmas.debug);\n Check.defined(\"cartesian\", cartesian);\n //>>includeEnd('debug');\n\n const ray = scratchProjectPointOntoPlaneRay;\n ray.origin = cartesian;\n Cartesian3.normalize(cartesian, ray.direction);\n\n let intersectionPoint = IntersectionTests.rayPlane(\n ray,\n this._plane,\n scratchProjectPointOntoPlaneCartesian3\n );\n if (!defined(intersectionPoint)) {\n Cartesian3.negate(ray.direction, ray.direction);\n intersectionPoint = IntersectionTests.rayPlane(\n ray,\n this._plane,\n scratchProjectPointOntoPlaneCartesian3\n );\n }\n\n if (defined(intersectionPoint)) {\n const v = Cartesian3.subtract(\n intersectionPoint,\n this._origin,\n intersectionPoint\n );\n const x = Cartesian3.dot(this._xAxis, v);\n const y = Cartesian3.dot(this._yAxis, v);\n\n if (!defined(result)) {\n return new Cartesian2(x, y);\n }\n result.x = x;\n result.y = y;\n return result;\n }\n return undefined;\n};\n\n/**\n * Computes the projection of the provided 3D positions onto the 2D plane (where possible), radially outward from the global origin.\n * The resulting array may be shorter than the input array - if a single projection is impossible it will not be included.\n *\n * @see EllipsoidTangentPlane.projectPointOntoPlane\n *\n * @param {Cartesian3[]} cartesians The array of points to project.\n * @param {Cartesian2[]} [result] The array of Cartesian2 instances onto which to store results.\n * @returns {Cartesian2[]} The modified result parameter or a new array of Cartesian2 instances if none was provided.\n */\nEllipsoidTangentPlane.prototype.projectPointsOntoPlane = function (\n cartesians,\n result\n) {\n //>>includeStart('debug', pragmas.debug);\n Check.defined(\"cartesians\", cartesians);\n //>>includeEnd('debug');\n\n if (!defined(result)) {\n result = [];\n }\n\n let count = 0;\n const length = cartesians.length;\n for (let i = 0; i < length; i++) {\n const p = this.projectPointOntoPlane(cartesians[i], result[count]);\n if (defined(p)) {\n result[count] = p;\n count++;\n }\n }\n result.length = count;\n return result;\n};\n\n/**\n * Computes the projection of the provided 3D position onto the 2D plane, along the plane normal.\n *\n * @param {Cartesian3} cartesian The point to project.\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 none was provided.\n */\nEllipsoidTangentPlane.prototype.projectPointToNearestOnPlane = function (\n cartesian,\n result\n) {\n //>>includeStart('debug', pragmas.debug);\n Check.defined(\"cartesian\", cartesian);\n //>>includeEnd('debug');\n\n if (!defined(result)) {\n result = new Cartesian2();\n }\n\n const ray = scratchProjectPointOntoPlaneRay;\n ray.origin = cartesian;\n Cartesian3.clone(this._plane.normal, ray.direction);\n\n let intersectionPoint = IntersectionTests.rayPlane(\n ray,\n this._plane,\n scratchProjectPointOntoPlaneCartesian3\n );\n if (!defined(intersectionPoint)) {\n Cartesian3.negate(ray.direction, ray.direction);\n intersectionPoint = IntersectionTests.rayPlane(\n ray,\n this._plane,\n scratchProjectPointOntoPlaneCartesian3\n );\n }\n\n const v = Cartesian3.subtract(\n intersectionPoint,\n this._origin,\n intersectionPoint\n );\n const x = Cartesian3.dot(this._xAxis, v);\n const y = Cartesian3.dot(this._yAxis, v);\n\n result.x = x;\n result.y = y;\n return result;\n};\n\n/**\n * Computes the projection of the provided 3D positions onto the 2D plane, along the plane normal.\n *\n * @see EllipsoidTangentPlane.projectPointToNearestOnPlane\n *\n * @param {Cartesian3[]} cartesians The array of points to project.\n * @param {Cartesian2[]} [result] The array of Cartesian2 instances onto which to store results.\n * @returns {Cartesian2[]} The modified result parameter or a new array of Cartesian2 instances if none was provided. This will have the same length as <code>cartesians</code>.\n */\nEllipsoidTangentPlane.prototype.projectPointsToNearestOnPlane = function (\n cartesians,\n result\n) {\n //>>includeStart('debug', pragmas.debug);\n Check.defined(\"cartesians\", cartesians);\n //>>includeEnd('debug');\n\n if (!defined(result)) {\n result = [];\n }\n\n const length = cartesians.length;\n result.length = length;\n for (let i = 0; i < length; i++) {\n result[i] = this.projectPointToNearestOnPlane(cartesians[i], result[i]);\n }\n return result;\n};\n\nconst projectPointsOntoEllipsoidScratch = new Cartesian3();\n/**\n * Computes the projection of the provided 2D position onto the 3D ellipsoid.\n *\n * @param {Cartesian2} cartesian The points to project.\n * @param {Cartesian3} [result] The Cartesian3 instance to store result.\n * @returns {Cartesian3} The modified result parameter or a new Cartesian3 instance if none was provided.\n */\nEllipsoidTangentPlane.prototype.projectPointOntoEllipsoid = function (\n cartesian,\n result\n) {\n //>>includeStart('debug', pragmas.debug);\n Check.defined(\"cartesian\", cartesian);\n //>>includeEnd('debug');\n\n if (!defined(result)) {\n result = new Cartesian3();\n }\n\n const ellipsoid = this._ellipsoid;\n const origin = this._origin;\n const xAxis = this._xAxis;\n const yAxis = this._yAxis;\n const tmp = projectPointsOntoEllipsoidScratch;\n\n Cartesian3.multiplyByScalar(xAxis, cartesian.x, tmp);\n result = Cartesian3.add(origin, tmp, result);\n Cartesian3.multiplyByScalar(yAxis, cartesian.y, tmp);\n Cartesian3.add(result, tmp, result);\n ellipsoid.scaleToGeocentricSurface(result, result);\n\n return result;\n};\n\n/**\n * Computes the projection of the provided 2D positions onto the 3D ellipsoid.\n *\n * @param {Cartesian2[]} cartesians The array of points to project.\n * @param {Cartesian3[]} [result] The array of Cartesian3 instances onto which to store results.\n * @returns {Cartesian3[]} The modified result parameter or a new array of Cartesian3 instances if none was provided.\n */\nEllipsoidTangentPlane.prototype.projectPointsOntoEllipsoid = function (\n cartesians,\n result\n) {\n //>>includeStart('debug', pragmas.debug);\n Check.defined(\"cartesians\", cartesians);\n //>>includeEnd('debug');\n\n const length = cartesians.length;\n if (!defined(result)) {\n result = new Array(length);\n } else {\n result.length = length;\n }\n\n for (let i = 0; i < length; ++i) {\n result[i] = this.projectPointOntoEllipsoid(cartesians[i], result[i]);\n }\n\n return result;\n};\nexport default EllipsoidTangentPlane;\n"],"names":["Cartesian4","Check","defaultValue","Ellipsoid","defined","DeveloperError","Transforms","Cartesian3","Matrix4","Plane","AxisAlignedBoundingBox","Ray","IntersectionTests","Cartesian2"],"mappings":"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"} |