qd-changjing/public/static/Build/CesiumUnminified/Workers/createPolylineVolumeGeometr...

1 line
27 KiB
Plaintext

{"version":3,"file":"createPolylineVolumeGeometry.js","sources":["../../../../Source/Core/PolylineVolumeGeometry.js","../../../../Source/WorkersES6/createPolylineVolumeGeometry.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 ComponentDatatype from \"./ComponentDatatype.js\";\nimport CornerType from \"./CornerType.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 GeometryPipeline from \"./GeometryPipeline.js\";\nimport IndexDatatype from \"./IndexDatatype.js\";\nimport CesiumMath from \"./Math.js\";\nimport oneTimeWarning from \"./oneTimeWarning.js\";\nimport PolygonPipeline from \"./PolygonPipeline.js\";\nimport PolylineVolumeGeometryLibrary from \"./PolylineVolumeGeometryLibrary.js\";\nimport PrimitiveType from \"./PrimitiveType.js\";\nimport VertexFormat from \"./VertexFormat.js\";\nimport WindingOrder from \"./WindingOrder.js\";\n\nfunction computeAttributes(\n combinedPositions,\n shape,\n boundingRectangle,\n vertexFormat\n) {\n const attributes = new GeometryAttributes();\n if (vertexFormat.position) {\n attributes.position = new GeometryAttribute({\n componentDatatype: ComponentDatatype.DOUBLE,\n componentsPerAttribute: 3,\n values: combinedPositions,\n });\n }\n const shapeLength = shape.length;\n const vertexCount = combinedPositions.length / 3;\n const length = (vertexCount - shapeLength * 2) / (shapeLength * 2);\n const firstEndIndices = PolygonPipeline.triangulate(shape);\n\n const indicesCount =\n (length - 1) * shapeLength * 6 + firstEndIndices.length * 2;\n const indices = IndexDatatype.createTypedArray(vertexCount, indicesCount);\n let i, j;\n let ll, ul, ur, lr;\n const offset = shapeLength * 2;\n let index = 0;\n for (i = 0; i < length - 1; i++) {\n for (j = 0; j < shapeLength - 1; j++) {\n ll = j * 2 + i * shapeLength * 2;\n lr = ll + offset;\n ul = ll + 1;\n ur = ul + offset;\n\n indices[index++] = ul;\n indices[index++] = ll;\n indices[index++] = ur;\n indices[index++] = ur;\n indices[index++] = ll;\n indices[index++] = lr;\n }\n ll = shapeLength * 2 - 2 + i * shapeLength * 2;\n ul = ll + 1;\n ur = ul + offset;\n lr = ll + offset;\n\n indices[index++] = ul;\n indices[index++] = ll;\n indices[index++] = ur;\n indices[index++] = ur;\n indices[index++] = ll;\n indices[index++] = lr;\n }\n\n if (vertexFormat.st || vertexFormat.tangent || vertexFormat.bitangent) {\n // st required for tangent/bitangent calculation\n const st = new Float32Array(vertexCount * 2);\n const lengthSt = 1 / (length - 1);\n const heightSt = 1 / boundingRectangle.height;\n const heightOffset = boundingRectangle.height / 2;\n let s, t;\n let stindex = 0;\n for (i = 0; i < length; i++) {\n s = i * lengthSt;\n t = heightSt * (shape[0].y + heightOffset);\n st[stindex++] = s;\n st[stindex++] = t;\n for (j = 1; j < shapeLength; j++) {\n t = heightSt * (shape[j].y + heightOffset);\n st[stindex++] = s;\n st[stindex++] = t;\n st[stindex++] = s;\n st[stindex++] = t;\n }\n t = heightSt * (shape[0].y + heightOffset);\n st[stindex++] = s;\n st[stindex++] = t;\n }\n for (j = 0; j < shapeLength; j++) {\n s = 0;\n t = heightSt * (shape[j].y + heightOffset);\n st[stindex++] = s;\n st[stindex++] = t;\n }\n for (j = 0; j < shapeLength; j++) {\n s = (length - 1) * lengthSt;\n t = heightSt * (shape[j].y + heightOffset);\n st[stindex++] = s;\n st[stindex++] = t;\n }\n\n attributes.st = new GeometryAttribute({\n componentDatatype: ComponentDatatype.FLOAT,\n componentsPerAttribute: 2,\n values: new Float32Array(st),\n });\n }\n\n const endOffset = vertexCount - shapeLength * 2;\n for (i = 0; i < firstEndIndices.length; i += 3) {\n const v0 = firstEndIndices[i] + endOffset;\n const v1 = firstEndIndices[i + 1] + endOffset;\n const v2 = firstEndIndices[i + 2] + endOffset;\n\n indices[index++] = v0;\n indices[index++] = v1;\n indices[index++] = v2;\n indices[index++] = v2 + shapeLength;\n indices[index++] = v1 + shapeLength;\n indices[index++] = v0 + shapeLength;\n }\n\n let geometry = new Geometry({\n attributes: attributes,\n indices: indices,\n boundingSphere: BoundingSphere.fromVertices(combinedPositions),\n primitiveType: PrimitiveType.TRIANGLES,\n });\n\n if (vertexFormat.normal) {\n geometry = GeometryPipeline.computeNormal(geometry);\n }\n\n if (vertexFormat.tangent || vertexFormat.bitangent) {\n try {\n geometry = GeometryPipeline.computeTangentAndBitangent(geometry);\n } catch (e) {\n oneTimeWarning(\n \"polyline-volume-tangent-bitangent\",\n \"Unable to compute tangents and bitangents for polyline volume geometry\"\n );\n //TODO https://github.com/CesiumGS/cesium/issues/3609\n }\n\n if (!vertexFormat.tangent) {\n geometry.attributes.tangent = undefined;\n }\n if (!vertexFormat.bitangent) {\n geometry.attributes.bitangent = undefined;\n }\n if (!vertexFormat.st) {\n geometry.attributes.st = undefined;\n }\n }\n\n return geometry;\n}\n\n/**\n * A description of a polyline with a volume (a 2D shape extruded along a polyline).\n *\n * @alias PolylineVolumeGeometry\n * @constructor\n *\n * @param {Object} options Object with the following properties:\n * @param {Cartesian3[]} options.polylinePositions An array of {@link Cartesian3} positions that define the center of the polyline volume.\n * @param {Cartesian2[]} options.shapePositions An array of {@link Cartesian2} positions that define the shape to be extruded along the polyline\n * @param {Ellipsoid} [options.ellipsoid=Ellipsoid.WGS84] The ellipsoid to be used as a reference.\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 {VertexFormat} [options.vertexFormat=VertexFormat.DEFAULT] The vertex attributes to be computed.\n * @param {CornerType} [options.cornerType=CornerType.ROUNDED] Determines the style of the corners.\n *\n * @see PolylineVolumeGeometry#createGeometry\n *\n * @demo {@link https://sandcastle.cesium.com/index.html?src=Polyline%20Volume.html|Cesium Sandcastle Polyline Volume Demo}\n *\n * @example\n * function computeCircle(radius) {\n * const positions = [];\n * for (let i = 0; i < 360; i++) {\n * const radians = Cesium.Math.toRadians(i);\n * positions.push(new Cesium.Cartesian2(radius * Math.cos(radians), radius * Math.sin(radians)));\n * }\n * return positions;\n * }\n *\n * const volume = new Cesium.PolylineVolumeGeometry({\n * vertexFormat : Cesium.VertexFormat.POSITION_ONLY,\n * polylinePositions : Cesium.Cartesian3.fromDegreesArray([\n * -72.0, 40.0,\n * -70.0, 35.0\n * ]),\n * shapePositions : computeCircle(100000.0)\n * });\n */\nfunction PolylineVolumeGeometry(options) {\n options = defaultValue(options, defaultValue.EMPTY_OBJECT);\n const positions = options.polylinePositions;\n const shape = options.shapePositions;\n\n //>>includeStart('debug', pragmas.debug);\n if (!defined(positions)) {\n throw new DeveloperError(\"options.polylinePositions is required.\");\n }\n if (!defined(shape)) {\n throw new DeveloperError(\"options.shapePositions is required.\");\n }\n //>>includeEnd('debug');\n\n this._positions = positions;\n this._shape = shape;\n this._ellipsoid = Ellipsoid.clone(\n defaultValue(options.ellipsoid, Ellipsoid.WGS84)\n );\n this._cornerType = defaultValue(options.cornerType, CornerType.ROUNDED);\n this._vertexFormat = VertexFormat.clone(\n defaultValue(options.vertexFormat, VertexFormat.DEFAULT)\n );\n this._granularity = defaultValue(\n options.granularity,\n CesiumMath.RADIANS_PER_DEGREE\n );\n this._workerName = \"createPolylineVolumeGeometry\";\n\n let numComponents = 1 + positions.length * Cartesian3.packedLength;\n numComponents += 1 + shape.length * Cartesian2.packedLength;\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 + 2;\n}\n\n/**\n * Stores the provided instance into the provided array.\n *\n * @param {PolylineVolumeGeometry} 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 */\nPolylineVolumeGeometry.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 shape = value._shape;\n length = shape.length;\n array[startingIndex++] = length;\n\n for (i = 0; i < length; ++i, startingIndex += Cartesian2.packedLength) {\n Cartesian2.pack(shape[i], array, 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._cornerType;\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 polylinePositions: undefined,\n shapePositions: undefined,\n ellipsoid: scratchEllipsoid,\n vertexFormat: scratchVertexFormat,\n cornerType: undefined,\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 {PolylineVolumeGeometry} [result] The object into which to store the result.\n * @returns {PolylineVolumeGeometry} The modified result parameter or a new PolylineVolumeGeometry instance if one was not provided.\n */\nPolylineVolumeGeometry.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 const shape = new Array(length);\n\n for (i = 0; i < length; ++i, startingIndex += Cartesian2.packedLength) {\n shape[i] = Cartesian2.unpack(array, startingIndex);\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 cornerType = array[startingIndex++];\n const granularity = array[startingIndex];\n\n if (!defined(result)) {\n scratchOptions.polylinePositions = positions;\n scratchOptions.shapePositions = shape;\n scratchOptions.cornerType = cornerType;\n scratchOptions.granularity = granularity;\n return new PolylineVolumeGeometry(scratchOptions);\n }\n\n result._positions = positions;\n result._shape = shape;\n result._ellipsoid = Ellipsoid.clone(ellipsoid, result._ellipsoid);\n result._vertexFormat = VertexFormat.clone(vertexFormat, result._vertexFormat);\n result._cornerType = cornerType;\n result._granularity = granularity;\n\n return result;\n};\n\nconst brScratch = new BoundingRectangle();\n\n/**\n * Computes the geometric representation of a polyline with a volume, including its vertices, indices, and a bounding sphere.\n *\n * @param {PolylineVolumeGeometry} polylineVolumeGeometry A description of the polyline volume.\n * @returns {Geometry|undefined} The computed vertices and indices.\n */\nPolylineVolumeGeometry.createGeometry = function (polylineVolumeGeometry) {\n const positions = polylineVolumeGeometry._positions;\n const cleanPositions = arrayRemoveDuplicates(\n positions,\n Cartesian3.equalsEpsilon\n );\n let shape2D = polylineVolumeGeometry._shape;\n shape2D = PolylineVolumeGeometryLibrary.removeDuplicatesFromShape(shape2D);\n\n if (cleanPositions.length < 2 || shape2D.length < 3) {\n return undefined;\n }\n\n if (\n PolygonPipeline.computeWindingOrder2D(shape2D) === WindingOrder.CLOCKWISE\n ) {\n shape2D.reverse();\n }\n const boundingRectangle = BoundingRectangle.fromPoints(shape2D, brScratch);\n\n const computedPositions = PolylineVolumeGeometryLibrary.computePositions(\n cleanPositions,\n shape2D,\n boundingRectangle,\n polylineVolumeGeometry,\n true\n );\n return computeAttributes(\n computedPositions,\n shape2D,\n boundingRectangle,\n polylineVolumeGeometry._vertexFormat\n );\n};\nexport default PolylineVolumeGeometry;\n","import defined from \"../Core/defined.js\";\nimport Ellipsoid from \"../Core/Ellipsoid.js\";\nimport PolylineVolumeGeometry from \"../Core/PolylineVolumeGeometry.js\";\n\nfunction createPolylineVolumeGeometry(polylineVolumeGeometry, offset) {\n if (defined(offset)) {\n polylineVolumeGeometry = PolylineVolumeGeometry.unpack(\n polylineVolumeGeometry,\n offset\n );\n }\n polylineVolumeGeometry._ellipsoid = Ellipsoid.clone(\n polylineVolumeGeometry._ellipsoid\n );\n return PolylineVolumeGeometry.createGeometry(polylineVolumeGeometry);\n}\nexport default createPolylineVolumeGeometry;\n"],"names":["GeometryAttributes","GeometryAttribute","ComponentDatatype","PolygonPipeline","IndexDatatype","Geometry","BoundingSphere","PrimitiveType","GeometryPipeline","oneTimeWarning","defaultValue","defined","DeveloperError","Ellipsoid","CornerType","VertexFormat","CesiumMath","Cartesian3","Cartesian2","BoundingRectangle","arrayRemoveDuplicates","PolylineVolumeGeometryLibrary","WindingOrder"],"mappings":"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"}