1 line
37 KiB
Plaintext
1 line
37 KiB
Plaintext
{"version":3,"file":"createWallGeometry.js","sources":["../../../../Source/Core/WallGeometry.js","../../../../Source/WorkersES6/createWallGeometry.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 VertexFormat from \"./VertexFormat.js\";\nimport WallGeometryLibrary from \"./WallGeometryLibrary.js\";\n\nconst scratchCartesian3Position1 = new Cartesian3();\nconst scratchCartesian3Position2 = new Cartesian3();\nconst scratchCartesian3Position4 = new Cartesian3();\nconst scratchCartesian3Position5 = new Cartesian3();\nconst scratchBitangent = new Cartesian3();\nconst scratchTangent = new Cartesian3();\nconst scratchNormal = new Cartesian3();\n\n/**\n * A description of a wall, which is similar to a KML line string. 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 WallGeometry\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 <code>positions</code> that give the maximum height of the\n * wall at <code>positions</code>. If undefined, the height of each position in used.\n * @param {Number[]} [options.minimumHeights] An array parallel to <code>positions</code> that give the minimum height of the\n * wall at <code>positions</code>. If undefined, the height at each position is 0.0.\n * @param {Ellipsoid} [options.ellipsoid=Ellipsoid.WGS84] The ellipsoid for coordinate manipulation\n * @param {VertexFormat} [options.vertexFormat=VertexFormat.DEFAULT] The vertex attributes to be computed.\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 * @demo {@link https://sandcastle.cesium.com/index.html?src=Wall.html|Cesium Sandcastle Wall Demo}\n *\n * @example\n * // create a wall that spans from ground level to 10000 meters\n * const wall = new Cesium.WallGeometry({\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.WallGeometry.createGeometry(wall);\n */\nfunction WallGeometry(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 vertexFormat = defaultValue(options.vertexFormat, VertexFormat.DEFAULT);\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._vertexFormat = VertexFormat.clone(vertexFormat);\n this._granularity = granularity;\n this._ellipsoid = Ellipsoid.clone(ellipsoid);\n this._workerName = \"createWallGeometry\";\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 =\n numComponents + Ellipsoid.packedLength + VertexFormat.packedLength + 1;\n}\n\n/**\n * Stores the provided instance into the provided array.\n *\n * @param {WallGeometry} 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 */\nWallGeometry.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 VertexFormat.pack(value._vertexFormat, array, startingIndex);\n startingIndex += VertexFormat.packedLength;\n\n array[startingIndex] = value._granularity;\n\n return array;\n};\n\nconst scratchEllipsoid = Ellipsoid.clone(Ellipsoid.UNIT_SPHERE);\nconst scratchVertexFormat = new VertexFormat();\nconst scratchOptions = {\n positions: undefined,\n minimumHeights: undefined,\n maximumHeights: undefined,\n ellipsoid: scratchEllipsoid,\n vertexFormat: scratchVertexFormat,\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 {WallGeometry} [result] The object into which to store the result.\n * @returns {WallGeometry} The modified result parameter or a new WallGeometry instance if one was not provided.\n */\nWallGeometry.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 vertexFormat = VertexFormat.unpack(\n array,\n startingIndex,\n scratchVertexFormat\n );\n startingIndex += VertexFormat.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 WallGeometry(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._vertexFormat = VertexFormat.clone(vertexFormat, result._vertexFormat);\n result._granularity = granularity;\n\n return result;\n};\n\n/**\n * A description of a wall, which is similar to a KML line string. 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 <code>positions</code>. 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 <code>positions</code>. If undefined, the height at each position is 0.0.\n * @param {Ellipsoid} [options.ellipsoid=Ellipsoid.WGS84] The ellipsoid for coordinate manipulation\n * @param {VertexFormat} [options.vertexFormat=VertexFormat.DEFAULT] The vertex attributes to be computed.\n * @returns {WallGeometry}\n *\n *\n * @example\n * // create a wall that spans from 10000 meters to 20000 meters\n * const wall = Cesium.WallGeometry.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.WallGeometry.createGeometry(wall);\n *\n * @see WallGeometry#createGeometry\n */\nWallGeometry.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 vertexFormat: options.vertexFormat,\n };\n return new WallGeometry(newOptions);\n};\n\n/**\n * Computes the geometric representation of a wall, including its vertices, indices, and a bounding sphere.\n *\n * @param {WallGeometry} wallGeometry A description of the wall.\n * @returns {Geometry|undefined} The computed vertices and indices.\n */\nWallGeometry.createGeometry = function (wallGeometry) {\n const wallPositions = wallGeometry._positions;\n const minimumHeights = wallGeometry._minimumHeights;\n const maximumHeights = wallGeometry._maximumHeights;\n const vertexFormat = wallGeometry._vertexFormat;\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 true\n );\n if (!defined(pos)) {\n return;\n }\n\n const bottomPositions = pos.bottomPositions;\n const topPositions = pos.topPositions;\n const numCorners = pos.numCorners;\n\n let length = topPositions.length;\n let size = length * 2;\n\n const positions = vertexFormat.position ? new Float64Array(size) : undefined;\n const normals = vertexFormat.normal ? new Float32Array(size) : undefined;\n const tangents = vertexFormat.tangent ? new Float32Array(size) : undefined;\n const bitangents = vertexFormat.bitangent\n ? new Float32Array(size)\n : undefined;\n const textureCoordinates = vertexFormat.st\n ? new Float32Array((size / 3) * 2)\n : undefined;\n\n let positionIndex = 0;\n let normalIndex = 0;\n let bitangentIndex = 0;\n let tangentIndex = 0;\n let stIndex = 0;\n\n // add lower and upper points one after the other, lower\n // points being even and upper points being odd\n let normal = scratchNormal;\n let tangent = scratchTangent;\n let bitangent = scratchBitangent;\n let recomputeNormal = true;\n length /= 3;\n let i;\n let s = 0;\n const ds = 1 / (length - numCorners - 1);\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 if (vertexFormat.position) {\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 if (vertexFormat.st) {\n textureCoordinates[stIndex++] = s;\n textureCoordinates[stIndex++] = 0.0;\n\n textureCoordinates[stIndex++] = s;\n textureCoordinates[stIndex++] = 1.0;\n }\n\n if (vertexFormat.normal || vertexFormat.tangent || vertexFormat.bitangent) {\n let nextTop = Cartesian3.clone(\n Cartesian3.ZERO,\n scratchCartesian3Position5\n );\n const groundPosition = Cartesian3.subtract(\n topPosition,\n ellipsoid.geodeticSurfaceNormal(\n topPosition,\n scratchCartesian3Position2\n ),\n scratchCartesian3Position2\n );\n if (i + 1 < length) {\n nextTop = Cartesian3.fromArray(\n topPositions,\n i3 + 3,\n scratchCartesian3Position5\n );\n }\n\n if (recomputeNormal) {\n const scalednextPosition = Cartesian3.subtract(\n nextTop,\n topPosition,\n scratchCartesian3Position4\n );\n const scaledGroundPosition = Cartesian3.subtract(\n groundPosition,\n topPosition,\n scratchCartesian3Position1\n );\n normal = Cartesian3.normalize(\n Cartesian3.cross(scaledGroundPosition, scalednextPosition, normal),\n normal\n );\n recomputeNormal = false;\n }\n\n if (\n Cartesian3.equalsEpsilon(topPosition, nextTop, CesiumMath.EPSILON10)\n ) {\n recomputeNormal = true;\n } else {\n s += ds;\n if (vertexFormat.tangent) {\n tangent = Cartesian3.normalize(\n Cartesian3.subtract(nextTop, topPosition, tangent),\n tangent\n );\n }\n if (vertexFormat.bitangent) {\n bitangent = Cartesian3.normalize(\n Cartesian3.cross(normal, tangent, bitangent),\n bitangent\n );\n }\n }\n\n if (vertexFormat.normal) {\n normals[normalIndex++] = normal.x;\n normals[normalIndex++] = normal.y;\n normals[normalIndex++] = normal.z;\n\n normals[normalIndex++] = normal.x;\n normals[normalIndex++] = normal.y;\n normals[normalIndex++] = normal.z;\n }\n\n if (vertexFormat.tangent) {\n tangents[tangentIndex++] = tangent.x;\n tangents[tangentIndex++] = tangent.y;\n tangents[tangentIndex++] = tangent.z;\n\n tangents[tangentIndex++] = tangent.x;\n tangents[tangentIndex++] = tangent.y;\n tangents[tangentIndex++] = tangent.z;\n }\n\n if (vertexFormat.bitangent) {\n bitangents[bitangentIndex++] = bitangent.x;\n bitangents[bitangentIndex++] = bitangent.y;\n bitangents[bitangentIndex++] = bitangent.z;\n\n bitangents[bitangentIndex++] = bitangent.x;\n bitangents[bitangentIndex++] = bitangent.y;\n bitangents[bitangentIndex++] = bitangent.z;\n }\n }\n }\n\n const attributes = new GeometryAttributes();\n\n if (vertexFormat.position) {\n attributes.position = new GeometryAttribute({\n componentDatatype: ComponentDatatype.DOUBLE,\n componentsPerAttribute: 3,\n values: positions,\n });\n }\n\n if (vertexFormat.normal) {\n attributes.normal = new GeometryAttribute({\n componentDatatype: ComponentDatatype.FLOAT,\n componentsPerAttribute: 3,\n values: normals,\n });\n }\n\n if (vertexFormat.tangent) {\n attributes.tangent = new GeometryAttribute({\n componentDatatype: ComponentDatatype.FLOAT,\n componentsPerAttribute: 3,\n values: tangents,\n });\n }\n\n if (vertexFormat.bitangent) {\n attributes.bitangent = new GeometryAttribute({\n componentDatatype: ComponentDatatype.FLOAT,\n componentsPerAttribute: 3,\n values: bitangents,\n });\n }\n\n if (vertexFormat.st) {\n attributes.st = new GeometryAttribute({\n componentDatatype: ComponentDatatype.FLOAT,\n componentsPerAttribute: 2,\n values: textureCoordinates,\n });\n }\n\n // prepare the side walls, two triangles for each wall\n //\n // A (i+1) B (i+3) E\n // +--------+-------+\n // | / | /| triangles: A C B\n // | / | / | B C D\n // | / | / |\n // | / | / |\n // | / | / |\n // | / | / |\n // +--------+-------+\n // C (i) D (i+2) F\n //\n\n const numVertices = size / 3;\n size -= 6 * (numCorners + 1);\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++] = UR;\n indices[edgeIndex++] = UR;\n indices[edgeIndex++] = LL;\n indices[edgeIndex++] = LR;\n }\n\n return new Geometry({\n attributes: attributes,\n indices: indices,\n primitiveType: PrimitiveType.TRIANGLES,\n boundingSphere: new BoundingSphere.fromVertices(positions),\n });\n};\nexport default WallGeometry;\n","import defined from \"../Core/defined.js\";\nimport Ellipsoid from \"../Core/Ellipsoid.js\";\nimport WallGeometry from \"../Core/WallGeometry.js\";\n\nfunction createWallGeometry(wallGeometry, offset) {\n if (defined(offset)) {\n wallGeometry = WallGeometry.unpack(wallGeometry, offset);\n }\n wallGeometry._ellipsoid = Ellipsoid.clone(wallGeometry._ellipsoid);\n return WallGeometry.createGeometry(wallGeometry);\n}\nexport default createWallGeometry;\n"],"names":["Cartesian3","defaultValue","defined","DeveloperError","VertexFormat","CesiumMath","Ellipsoid","WallGeometryLibrary","GeometryAttributes","GeometryAttribute","ComponentDatatype","IndexDatatype","Geometry","PrimitiveType","BoundingSphere"],"mappings":"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"} |