{"version":3,"file":"createWallOutlineGeometry.js","sources":["../../../../Source/Core/WallOutlineGeometry.js","../../../../Source/WorkersES6/createWallOutlineGeometry.js"],"sourcesContent":["import BoundingSphere from \"./BoundingSphere.js\";\nimport Cartesian3 from \"./Cartesian3.js\";\nimport ComponentDatatype from \"./ComponentDatatype.js\";\nimport defaultValue from \"./defaultValue.js\";\nimport defined from \"./defined.js\";\nimport DeveloperError from \"./DeveloperError.js\";\nimport Ellipsoid from \"./Ellipsoid.js\";\nimport Geometry from \"./Geometry.js\";\nimport GeometryAttribute from \"./GeometryAttribute.js\";\nimport GeometryAttributes from \"./GeometryAttributes.js\";\nimport IndexDatatype from \"./IndexDatatype.js\";\nimport CesiumMath from \"./Math.js\";\nimport PrimitiveType from \"./PrimitiveType.js\";\nimport WallGeometryLibrary from \"./WallGeometryLibrary.js\";\n\nconst scratchCartesian3Position1 = new Cartesian3();\nconst scratchCartesian3Position2 = new Cartesian3();\n\n/**\n * A description of a wall outline. A wall is defined by a series of points,\n * which extrude down to the ground. Optionally, they can extrude downwards to a specified height.\n *\n * @alias WallOutlineGeometry\n * @constructor\n *\n * @param {Object} options Object with the following properties:\n * @param {Cartesian3[]} options.positions An array of Cartesian objects, which are the points of the wall.\n * @param {Number} [options.granularity=CesiumMath.RADIANS_PER_DEGREE] The distance, in radians, between each latitude and longitude. Determines the number of positions in the buffer.\n * @param {Number[]} [options.maximumHeights] An array parallel to positions
that give the maximum height of the\n * wall at positions
. If undefined, the height of each position in used.\n * @param {Number[]} [options.minimumHeights] An array parallel to positions
that give the minimum height of the\n * wall at positions
. If undefined, the height at each position is 0.0.\n * @param {Ellipsoid} [options.ellipsoid=Ellipsoid.WGS84] The ellipsoid for coordinate manipulation\n *\n * @exception {DeveloperError} positions length must be greater than or equal to 2.\n * @exception {DeveloperError} positions and maximumHeights must have the same length.\n * @exception {DeveloperError} positions and minimumHeights must have the same length.\n *\n * @see WallGeometry#createGeometry\n * @see WallGeometry#fromConstantHeight\n *\n * @example\n * // create a wall outline that spans from ground level to 10000 meters\n * const wall = new Cesium.WallOutlineGeometry({\n * positions : Cesium.Cartesian3.fromDegreesArrayHeights([\n * 19.0, 47.0, 10000.0,\n * 19.0, 48.0, 10000.0,\n * 20.0, 48.0, 10000.0,\n * 20.0, 47.0, 10000.0,\n * 19.0, 47.0, 10000.0\n * ])\n * });\n * const geometry = Cesium.WallOutlineGeometry.createGeometry(wall);\n */\nfunction WallOutlineGeometry(options) {\n options = defaultValue(options, defaultValue.EMPTY_OBJECT);\n\n const wallPositions = options.positions;\n const maximumHeights = options.maximumHeights;\n const minimumHeights = options.minimumHeights;\n\n //>>includeStart('debug', pragmas.debug);\n if (!defined(wallPositions)) {\n throw new DeveloperError(\"options.positions is required.\");\n }\n if (\n defined(maximumHeights) &&\n maximumHeights.length !== wallPositions.length\n ) {\n throw new DeveloperError(\n \"options.positions and options.maximumHeights must have the same length.\"\n );\n }\n if (\n defined(minimumHeights) &&\n minimumHeights.length !== wallPositions.length\n ) {\n throw new DeveloperError(\n \"options.positions and options.minimumHeights must have the same length.\"\n );\n }\n //>>includeEnd('debug');\n\n const granularity = defaultValue(\n options.granularity,\n CesiumMath.RADIANS_PER_DEGREE\n );\n const ellipsoid = defaultValue(options.ellipsoid, Ellipsoid.WGS84);\n\n this._positions = wallPositions;\n this._minimumHeights = minimumHeights;\n this._maximumHeights = maximumHeights;\n this._granularity = granularity;\n this._ellipsoid = Ellipsoid.clone(ellipsoid);\n this._workerName = \"createWallOutlineGeometry\";\n\n let numComponents = 1 + wallPositions.length * Cartesian3.packedLength + 2;\n if (defined(minimumHeights)) {\n numComponents += minimumHeights.length;\n }\n if (defined(maximumHeights)) {\n numComponents += maximumHeights.length;\n }\n\n /**\n * The number of elements used to pack the object into an array.\n * @type {Number}\n */\n this.packedLength = numComponents + Ellipsoid.packedLength + 1;\n}\n\n/**\n * Stores the provided instance into the provided array.\n *\n * @param {WallOutlineGeometry} 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 */\nWallOutlineGeometry.pack = function (value, array, startingIndex) {\n //>>includeStart('debug', pragmas.debug);\n if (!defined(value)) {\n throw new DeveloperError(\"value is required\");\n }\n if (!defined(array)) {\n throw new DeveloperError(\"array is required\");\n }\n //>>includeEnd('debug');\n\n startingIndex = defaultValue(startingIndex, 0);\n\n let i;\n\n const positions = value._positions;\n let length = positions.length;\n array[startingIndex++] = length;\n\n for (i = 0; i < length; ++i, startingIndex += Cartesian3.packedLength) {\n Cartesian3.pack(positions[i], array, startingIndex);\n }\n\n const minimumHeights = value._minimumHeights;\n length = defined(minimumHeights) ? minimumHeights.length : 0;\n array[startingIndex++] = length;\n\n if (defined(minimumHeights)) {\n for (i = 0; i < length; ++i) {\n array[startingIndex++] = minimumHeights[i];\n }\n }\n\n const maximumHeights = value._maximumHeights;\n length = defined(maximumHeights) ? maximumHeights.length : 0;\n array[startingIndex++] = length;\n\n if (defined(maximumHeights)) {\n for (i = 0; i < length; ++i) {\n array[startingIndex++] = maximumHeights[i];\n }\n }\n\n Ellipsoid.pack(value._ellipsoid, array, startingIndex);\n startingIndex += Ellipsoid.packedLength;\n\n array[startingIndex] = value._granularity;\n\n return array;\n};\n\nconst scratchEllipsoid = Ellipsoid.clone(Ellipsoid.UNIT_SPHERE);\nconst scratchOptions = {\n positions: undefined,\n minimumHeights: undefined,\n maximumHeights: undefined,\n ellipsoid: scratchEllipsoid,\n granularity: undefined,\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 {WallOutlineGeometry} [result] The object into which to store the result.\n * @returns {WallOutlineGeometry} The modified result parameter or a new WallOutlineGeometry instance if one was not provided.\n */\nWallOutlineGeometry.unpack = function (array, startingIndex, result) {\n //>>includeStart('debug', pragmas.debug);\n if (!defined(array)) {\n throw new DeveloperError(\"array is required\");\n }\n //>>includeEnd('debug');\n\n startingIndex = defaultValue(startingIndex, 0);\n\n let i;\n\n let length = array[startingIndex++];\n const positions = new Array(length);\n\n for (i = 0; i < length; ++i, startingIndex += Cartesian3.packedLength) {\n positions[i] = Cartesian3.unpack(array, startingIndex);\n }\n\n length = array[startingIndex++];\n let minimumHeights;\n\n if (length > 0) {\n minimumHeights = new Array(length);\n for (i = 0; i < length; ++i) {\n minimumHeights[i] = array[startingIndex++];\n }\n }\n\n length = array[startingIndex++];\n let maximumHeights;\n\n if (length > 0) {\n maximumHeights = new Array(length);\n for (i = 0; i < length; ++i) {\n maximumHeights[i] = array[startingIndex++];\n }\n }\n\n const ellipsoid = Ellipsoid.unpack(array, startingIndex, scratchEllipsoid);\n startingIndex += Ellipsoid.packedLength;\n\n const granularity = array[startingIndex];\n\n if (!defined(result)) {\n scratchOptions.positions = positions;\n scratchOptions.minimumHeights = minimumHeights;\n scratchOptions.maximumHeights = maximumHeights;\n scratchOptions.granularity = granularity;\n return new WallOutlineGeometry(scratchOptions);\n }\n\n result._positions = positions;\n result._minimumHeights = minimumHeights;\n result._maximumHeights = maximumHeights;\n result._ellipsoid = Ellipsoid.clone(ellipsoid, result._ellipsoid);\n result._granularity = granularity;\n\n return result;\n};\n\n/**\n * A description of a walloutline. A wall is defined by a series of points,\n * which extrude down to the ground. Optionally, they can extrude downwards to a specified height.\n *\n * @param {Object} options Object with the following properties:\n * @param {Cartesian3[]} options.positions An array of Cartesian objects, which are the points of the wall.\n * @param {Number} [options.maximumHeight] A constant that defines the maximum height of the\n * wall at positions
. If undefined, the height of each position in used.\n * @param {Number} [options.minimumHeight] A constant that defines the minimum height of the\n * wall at positions
. If undefined, the height at each position is 0.0.\n * @param {Ellipsoid} [options.ellipsoid=Ellipsoid.WGS84] The ellipsoid for coordinate manipulation\n * @returns {WallOutlineGeometry}\n *\n *\n * @example\n * // create a wall that spans from 10000 meters to 20000 meters\n * const wall = Cesium.WallOutlineGeometry.fromConstantHeights({\n * positions : Cesium.Cartesian3.fromDegreesArray([\n * 19.0, 47.0,\n * 19.0, 48.0,\n * 20.0, 48.0,\n * 20.0, 47.0,\n * 19.0, 47.0,\n * ]),\n * minimumHeight : 20000.0,\n * maximumHeight : 10000.0\n * });\n * const geometry = Cesium.WallOutlineGeometry.createGeometry(wall);\n *\n * @see WallOutlineGeometry#createGeometry\n */\nWallOutlineGeometry.fromConstantHeights = function (options) {\n options = defaultValue(options, defaultValue.EMPTY_OBJECT);\n const positions = options.positions;\n\n //>>includeStart('debug', pragmas.debug);\n if (!defined(positions)) {\n throw new DeveloperError(\"options.positions is required.\");\n }\n //>>includeEnd('debug');\n\n let minHeights;\n let maxHeights;\n\n const min = options.minimumHeight;\n const max = options.maximumHeight;\n\n const doMin = defined(min);\n const doMax = defined(max);\n if (doMin || doMax) {\n const length = positions.length;\n minHeights = doMin ? new Array(length) : undefined;\n maxHeights = doMax ? new Array(length) : undefined;\n\n for (let i = 0; i < length; ++i) {\n if (doMin) {\n minHeights[i] = min;\n }\n\n if (doMax) {\n maxHeights[i] = max;\n }\n }\n }\n\n const newOptions = {\n positions: positions,\n maximumHeights: maxHeights,\n minimumHeights: minHeights,\n ellipsoid: options.ellipsoid,\n };\n return new WallOutlineGeometry(newOptions);\n};\n\n/**\n * Computes the geometric representation of a wall outline, including its vertices, indices, and a bounding sphere.\n *\n * @param {WallOutlineGeometry} wallGeometry A description of the wall outline.\n * @returns {Geometry|undefined} The computed vertices and indices.\n */\nWallOutlineGeometry.createGeometry = function (wallGeometry) {\n const wallPositions = wallGeometry._positions;\n const minimumHeights = wallGeometry._minimumHeights;\n const maximumHeights = wallGeometry._maximumHeights;\n const granularity = wallGeometry._granularity;\n const ellipsoid = wallGeometry._ellipsoid;\n\n const pos = WallGeometryLibrary.computePositions(\n ellipsoid,\n wallPositions,\n maximumHeights,\n minimumHeights,\n granularity,\n false\n );\n if (!defined(pos)) {\n return;\n }\n\n const bottomPositions = pos.bottomPositions;\n const topPositions = pos.topPositions;\n\n let length = topPositions.length;\n let size = length * 2;\n\n const positions = new Float64Array(size);\n let positionIndex = 0;\n\n // add lower and upper points one after the other, lower\n // points being even and upper points being odd\n length /= 3;\n let i;\n for (i = 0; i < length; ++i) {\n const i3 = i * 3;\n const topPosition = Cartesian3.fromArray(\n topPositions,\n i3,\n scratchCartesian3Position1\n );\n const bottomPosition = Cartesian3.fromArray(\n bottomPositions,\n i3,\n scratchCartesian3Position2\n );\n\n // insert the lower point\n positions[positionIndex++] = bottomPosition.x;\n positions[positionIndex++] = bottomPosition.y;\n positions[positionIndex++] = bottomPosition.z;\n\n // insert the upper point\n positions[positionIndex++] = topPosition.x;\n positions[positionIndex++] = topPosition.y;\n positions[positionIndex++] = topPosition.z;\n }\n\n const attributes = new GeometryAttributes({\n position: new GeometryAttribute({\n componentDatatype: ComponentDatatype.DOUBLE,\n componentsPerAttribute: 3,\n values: positions,\n }),\n });\n\n const numVertices = size / 3;\n size = 2 * numVertices - 4 + numVertices;\n const indices = IndexDatatype.createTypedArray(numVertices, size);\n\n let edgeIndex = 0;\n for (i = 0; i < numVertices - 2; i += 2) {\n const LL = i;\n const LR = i + 2;\n const pl = Cartesian3.fromArray(\n positions,\n LL * 3,\n scratchCartesian3Position1\n );\n const pr = Cartesian3.fromArray(\n positions,\n LR * 3,\n scratchCartesian3Position2\n );\n if (Cartesian3.equalsEpsilon(pl, pr, CesiumMath.EPSILON10)) {\n continue;\n }\n const UL = i + 1;\n const UR = i + 3;\n\n indices[edgeIndex++] = UL;\n indices[edgeIndex++] = LL;\n indices[edgeIndex++] = UL;\n indices[edgeIndex++] = UR;\n indices[edgeIndex++] = LL;\n indices[edgeIndex++] = LR;\n }\n\n indices[edgeIndex++] = numVertices - 2;\n indices[edgeIndex++] = numVertices - 1;\n\n return new Geometry({\n attributes: attributes,\n indices: indices,\n primitiveType: PrimitiveType.LINES,\n boundingSphere: new BoundingSphere.fromVertices(positions),\n });\n};\nexport default WallOutlineGeometry;\n","import defined from \"../Core/defined.js\";\nimport Ellipsoid from \"../Core/Ellipsoid.js\";\nimport WallOutlineGeometry from \"../Core/WallOutlineGeometry.js\";\n\nfunction createWallOutlineGeometry(wallGeometry, offset) {\n if (defined(offset)) {\n wallGeometry = WallOutlineGeometry.unpack(wallGeometry, offset);\n }\n wallGeometry._ellipsoid = Ellipsoid.clone(wallGeometry._ellipsoid);\n return WallOutlineGeometry.createGeometry(wallGeometry);\n}\nexport default createWallOutlineGeometry;\n"],"names":["Cartesian3","defaultValue","defined","DeveloperError","CesiumMath","Ellipsoid","WallGeometryLibrary","GeometryAttributes","GeometryAttribute","ComponentDatatype","IndexDatatype","Geometry","PrimitiveType","BoundingSphere"],"mappings":"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"}