1 line
31 KiB
Plaintext
1 line
31 KiB
Plaintext
{"version":3,"file":"createCoplanarPolygonGeometry.js","sources":["../../../../Source/Core/CoplanarPolygonGeometry.js","../../../../Source/WorkersES6/createCoplanarPolygonGeometry.js"],"sourcesContent":["import arrayRemoveDuplicates from \"./arrayRemoveDuplicates.js\";\nimport BoundingRectangle from \"./BoundingRectangle.js\";\nimport BoundingSphere from \"./BoundingSphere.js\";\nimport Cartesian2 from \"./Cartesian2.js\";\nimport Cartesian3 from \"./Cartesian3.js\";\nimport Check from \"./Check.js\";\nimport ComponentDatatype from \"./ComponentDatatype.js\";\nimport CoplanarPolygonGeometryLibrary from \"./CoplanarPolygonGeometryLibrary.js\";\nimport defaultValue from \"./defaultValue.js\";\nimport defined from \"./defined.js\";\nimport Ellipsoid from \"./Ellipsoid.js\";\nimport Geometry from \"./Geometry.js\";\nimport GeometryAttribute from \"./GeometryAttribute.js\";\nimport GeometryAttributes from \"./GeometryAttributes.js\";\nimport GeometryInstance from \"./GeometryInstance.js\";\nimport GeometryPipeline from \"./GeometryPipeline.js\";\nimport IndexDatatype from \"./IndexDatatype.js\";\nimport CesiumMath from \"./Math.js\";\nimport Matrix3 from \"./Matrix3.js\";\nimport PolygonGeometryLibrary from \"./PolygonGeometryLibrary.js\";\nimport PolygonPipeline from \"./PolygonPipeline.js\";\nimport PrimitiveType from \"./PrimitiveType.js\";\nimport Quaternion from \"./Quaternion.js\";\nimport VertexFormat from \"./VertexFormat.js\";\n\nconst scratchPosition = new Cartesian3();\nconst scratchBR = new BoundingRectangle();\nconst stScratch = new Cartesian2();\nconst textureCoordinatesOrigin = new Cartesian2();\nconst scratchNormal = new Cartesian3();\nconst scratchTangent = new Cartesian3();\nconst scratchBitangent = new Cartesian3();\nconst centerScratch = new Cartesian3();\nconst axis1Scratch = new Cartesian3();\nconst axis2Scratch = new Cartesian3();\nconst quaternionScratch = new Quaternion();\nconst textureMatrixScratch = new Matrix3();\nconst tangentRotationScratch = new Matrix3();\nconst surfaceNormalScratch = new Cartesian3();\n\nfunction createGeometryFromPolygon(\n polygon,\n vertexFormat,\n boundingRectangle,\n stRotation,\n projectPointTo2D,\n normal,\n tangent,\n bitangent\n) {\n const positions = polygon.positions;\n let indices = PolygonPipeline.triangulate(polygon.positions2D, polygon.holes);\n\n /* If polygon is completely unrenderable, just use the first three vertices */\n if (indices.length < 3) {\n indices = [0, 1, 2];\n }\n\n const newIndices = IndexDatatype.createTypedArray(\n positions.length,\n indices.length\n );\n newIndices.set(indices);\n\n let textureMatrix = textureMatrixScratch;\n if (stRotation !== 0.0) {\n let rotation = Quaternion.fromAxisAngle(\n normal,\n stRotation,\n quaternionScratch\n );\n textureMatrix = Matrix3.fromQuaternion(rotation, textureMatrix);\n\n if (vertexFormat.tangent || vertexFormat.bitangent) {\n rotation = Quaternion.fromAxisAngle(\n normal,\n -stRotation,\n quaternionScratch\n );\n const tangentRotation = Matrix3.fromQuaternion(\n rotation,\n tangentRotationScratch\n );\n\n tangent = Cartesian3.normalize(\n Matrix3.multiplyByVector(tangentRotation, tangent, tangent),\n tangent\n );\n if (vertexFormat.bitangent) {\n bitangent = Cartesian3.normalize(\n Cartesian3.cross(normal, tangent, bitangent),\n bitangent\n );\n }\n }\n } else {\n textureMatrix = Matrix3.clone(Matrix3.IDENTITY, textureMatrix);\n }\n\n const stOrigin = textureCoordinatesOrigin;\n if (vertexFormat.st) {\n stOrigin.x = boundingRectangle.x;\n stOrigin.y = boundingRectangle.y;\n }\n\n const length = positions.length;\n const size = length * 3;\n const flatPositions = new Float64Array(size);\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(length * 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 for (let i = 0; i < length; i++) {\n const position = positions[i];\n flatPositions[positionIndex++] = position.x;\n flatPositions[positionIndex++] = position.y;\n flatPositions[positionIndex++] = position.z;\n\n if (vertexFormat.st) {\n const p = Matrix3.multiplyByVector(\n textureMatrix,\n position,\n scratchPosition\n );\n const st = projectPointTo2D(p, stScratch);\n Cartesian2.subtract(st, stOrigin, st);\n\n const stx = CesiumMath.clamp(st.x / boundingRectangle.width, 0, 1);\n const sty = CesiumMath.clamp(st.y / boundingRectangle.height, 0, 1);\n textureCoordinates[stIndex++] = stx;\n textureCoordinates[stIndex++] = sty;\n }\n\n if (vertexFormat.normal) {\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\n if (vertexFormat.bitangent) {\n bitangents[bitangentIndex++] = bitangent.x;\n bitangents[bitangentIndex++] = bitangent.y;\n bitangents[bitangentIndex++] = bitangent.z;\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: flatPositions,\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 return new Geometry({\n attributes: attributes,\n indices: newIndices,\n primitiveType: PrimitiveType.TRIANGLES,\n });\n}\n\n/**\n * A description of a polygon composed of arbitrary coplanar positions.\n *\n * @alias CoplanarPolygonGeometry\n * @constructor\n *\n * @param {Object} options Object with the following properties:\n * @param {PolygonHierarchy} options.polygonHierarchy A polygon hierarchy that can include holes.\n * @param {Number} [options.stRotation=0.0] The rotation of the texture coordinates, in radians. A positive rotation is counter-clockwise.\n * @param {VertexFormat} [options.vertexFormat=VertexFormat.DEFAULT] The vertex attributes to be computed.\n * @param {Ellipsoid} [options.ellipsoid=Ellipsoid.WGS84] The ellipsoid to be used as a reference.\n *\n * @example\n * const polygonGeometry = new Cesium.CoplanarPolygonGeometry({\n * polygonHierarchy: new Cesium.PolygonHierarchy(\n * Cesium.Cartesian3.fromDegreesArrayHeights([\n * -90.0, 30.0, 0.0,\n * -90.0, 30.0, 300000.0,\n * -80.0, 30.0, 300000.0,\n * -80.0, 30.0, 0.0\n * ]))\n * });\n *\n */\nfunction CoplanarPolygonGeometry(options) {\n options = defaultValue(options, defaultValue.EMPTY_OBJECT);\n const polygonHierarchy = options.polygonHierarchy;\n //>>includeStart('debug', pragmas.debug);\n Check.defined(\"options.polygonHierarchy\", polygonHierarchy);\n //>>includeEnd('debug');\n\n const vertexFormat = defaultValue(options.vertexFormat, VertexFormat.DEFAULT);\n this._vertexFormat = VertexFormat.clone(vertexFormat);\n this._polygonHierarchy = polygonHierarchy;\n this._stRotation = defaultValue(options.stRotation, 0.0);\n this._ellipsoid = Ellipsoid.clone(\n defaultValue(options.ellipsoid, Ellipsoid.WGS84)\n );\n this._workerName = \"createCoplanarPolygonGeometry\";\n\n /**\n * The number of elements used to pack the object into an array.\n * @type {Number}\n */\n this.packedLength =\n PolygonGeometryLibrary.computeHierarchyPackedLength(polygonHierarchy) +\n VertexFormat.packedLength +\n Ellipsoid.packedLength +\n 2;\n}\n\n/**\n * A description of a coplanar polygon from an array of positions.\n *\n * @param {Object} options Object with the following properties:\n * @param {Cartesian3[]} options.positions An array of positions that defined the corner points of the polygon.\n * @param {VertexFormat} [options.vertexFormat=VertexFormat.DEFAULT] The vertex attributes to be computed.\n * @param {Number} [options.stRotation=0.0] The rotation of the texture coordinates, in radians. A positive rotation is counter-clockwise.\n * @param {Ellipsoid} [options.ellipsoid=Ellipsoid.WGS84] The ellipsoid to be used as a reference.\n * @returns {CoplanarPolygonGeometry}\n *\n * @example\n * // create a polygon from points\n * const polygon = Cesium.CoplanarPolygonGeometry.fromPositions({\n * positions : Cesium.Cartesian3.fromDegreesArray([\n * -72.0, 40.0,\n * -70.0, 35.0,\n * -75.0, 30.0,\n * -70.0, 30.0,\n * -68.0, 40.0\n * ])\n * });\n * const geometry = Cesium.PolygonGeometry.createGeometry(polygon);\n *\n * @see PolygonGeometry#createGeometry\n */\nCoplanarPolygonGeometry.fromPositions = function (options) {\n options = defaultValue(options, defaultValue.EMPTY_OBJECT);\n\n //>>includeStart('debug', pragmas.debug);\n Check.defined(\"options.positions\", options.positions);\n //>>includeEnd('debug');\n\n const newOptions = {\n polygonHierarchy: {\n positions: options.positions,\n },\n vertexFormat: options.vertexFormat,\n stRotation: options.stRotation,\n ellipsoid: options.ellipsoid,\n };\n return new CoplanarPolygonGeometry(newOptions);\n};\n\n/**\n * Stores the provided instance into the provided array.\n *\n * @param {CoplanarPolygonGeometry} 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 */\nCoplanarPolygonGeometry.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 startingIndex = PolygonGeometryLibrary.packPolygonHierarchy(\n value._polygonHierarchy,\n array,\n startingIndex\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._stRotation;\n array[startingIndex] = value.packedLength;\n\n return array;\n};\n\nconst scratchEllipsoid = Ellipsoid.clone(Ellipsoid.UNIT_SPHERE);\nconst scratchVertexFormat = new VertexFormat();\nconst scratchOptions = {\n polygonHierarchy: {},\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 {CoplanarPolygonGeometry} [result] The object into which to store the result.\n * @returns {CoplanarPolygonGeometry} The modified result parameter or a new CoplanarPolygonGeometry instance if one was not provided.\n */\nCoplanarPolygonGeometry.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 const polygonHierarchy = PolygonGeometryLibrary.unpackPolygonHierarchy(\n array,\n startingIndex\n );\n startingIndex = polygonHierarchy.startingIndex;\n delete polygonHierarchy.startingIndex;\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 stRotation = array[startingIndex++];\n const packedLength = array[startingIndex];\n\n if (!defined(result)) {\n result = new CoplanarPolygonGeometry(scratchOptions);\n }\n\n result._polygonHierarchy = polygonHierarchy;\n result._ellipsoid = Ellipsoid.clone(ellipsoid, result._ellipsoid);\n result._vertexFormat = VertexFormat.clone(vertexFormat, result._vertexFormat);\n result._stRotation = stRotation;\n result.packedLength = packedLength;\n return result;\n};\n\n/**\n * Computes the geometric representation of an arbitrary coplanar polygon, including its vertices, indices, and a bounding sphere.\n *\n * @param {CoplanarPolygonGeometry} polygonGeometry A description of the polygon.\n * @returns {Geometry|undefined} The computed vertices and indices.\n */\nCoplanarPolygonGeometry.createGeometry = function (polygonGeometry) {\n const vertexFormat = polygonGeometry._vertexFormat;\n const polygonHierarchy = polygonGeometry._polygonHierarchy;\n const stRotation = polygonGeometry._stRotation;\n\n let outerPositions = polygonHierarchy.positions;\n outerPositions = arrayRemoveDuplicates(\n outerPositions,\n Cartesian3.equalsEpsilon,\n true\n );\n if (outerPositions.length < 3) {\n return;\n }\n\n let normal = scratchNormal;\n let tangent = scratchTangent;\n let bitangent = scratchBitangent;\n let axis1 = axis1Scratch;\n const axis2 = axis2Scratch;\n\n const validGeometry = CoplanarPolygonGeometryLibrary.computeProjectTo2DArguments(\n outerPositions,\n centerScratch,\n axis1,\n axis2\n );\n if (!validGeometry) {\n return undefined;\n }\n\n normal = Cartesian3.cross(axis1, axis2, normal);\n normal = Cartesian3.normalize(normal, normal);\n\n if (\n !Cartesian3.equalsEpsilon(\n centerScratch,\n Cartesian3.ZERO,\n CesiumMath.EPSILON6\n )\n ) {\n const surfaceNormal = polygonGeometry._ellipsoid.geodeticSurfaceNormal(\n centerScratch,\n surfaceNormalScratch\n );\n if (Cartesian3.dot(normal, surfaceNormal) < 0) {\n normal = Cartesian3.negate(normal, normal);\n axis1 = Cartesian3.negate(axis1, axis1);\n }\n }\n\n const projectPoints = CoplanarPolygonGeometryLibrary.createProjectPointsTo2DFunction(\n centerScratch,\n axis1,\n axis2\n );\n const projectPoint = CoplanarPolygonGeometryLibrary.createProjectPointTo2DFunction(\n centerScratch,\n axis1,\n axis2\n );\n\n if (vertexFormat.tangent) {\n tangent = Cartesian3.clone(axis1, tangent);\n }\n if (vertexFormat.bitangent) {\n bitangent = Cartesian3.clone(axis2, bitangent);\n }\n\n const results = PolygonGeometryLibrary.polygonsFromHierarchy(\n polygonHierarchy,\n projectPoints,\n false\n );\n const hierarchy = results.hierarchy;\n const polygons = results.polygons;\n\n if (hierarchy.length === 0) {\n return;\n }\n outerPositions = hierarchy[0].outerRing;\n\n const boundingSphere = BoundingSphere.fromPoints(outerPositions);\n const boundingRectangle = PolygonGeometryLibrary.computeBoundingRectangle(\n normal,\n projectPoint,\n outerPositions,\n stRotation,\n scratchBR\n );\n\n const geometries = [];\n for (let i = 0; i < polygons.length; i++) {\n const geometryInstance = new GeometryInstance({\n geometry: createGeometryFromPolygon(\n polygons[i],\n vertexFormat,\n boundingRectangle,\n stRotation,\n projectPoint,\n normal,\n tangent,\n bitangent\n ),\n });\n\n geometries.push(geometryInstance);\n }\n\n const geometry = GeometryPipeline.combineInstances(geometries)[0];\n geometry.attributes.position.values = new Float64Array(\n geometry.attributes.position.values\n );\n geometry.indices = IndexDatatype.createTypedArray(\n geometry.attributes.position.values.length / 3,\n geometry.indices\n );\n\n const attributes = geometry.attributes;\n if (!vertexFormat.position) {\n delete attributes.position;\n }\n return new Geometry({\n attributes: attributes,\n indices: geometry.indices,\n primitiveType: geometry.primitiveType,\n boundingSphere: boundingSphere,\n });\n};\nexport default CoplanarPolygonGeometry;\n","import CoplanarPolygonGeometry from \"../Core/CoplanarPolygonGeometry.js\";\nimport defined from \"../Core/defined.js\";\n\nfunction createCoplanarPolygonGeometry(polygonGeometry, offset) {\n if (defined(offset)) {\n polygonGeometry = CoplanarPolygonGeometry.unpack(polygonGeometry, offset);\n }\n return CoplanarPolygonGeometry.createGeometry(polygonGeometry);\n}\nexport default createCoplanarPolygonGeometry;\n"],"names":["Cartesian3","BoundingRectangle","Cartesian2","Quaternion","Matrix3","PolygonPipeline","IndexDatatype","CesiumMath","GeometryAttributes","GeometryAttribute","ComponentDatatype","Geometry","PrimitiveType","defaultValue","Check","VertexFormat","Ellipsoid","PolygonGeometryLibrary","defined","arrayRemoveDuplicates","CoplanarPolygonGeometryLibrary","BoundingSphere","GeometryInstance","GeometryPipeline"],"mappings":"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"} |