{"version":3,"file":"CylinderGeometry-2bf20aa7.js","sources":["../../../../Source/Core/CylinderGeometry.js"],"sourcesContent":["import arrayFill from \"./arrayFill.js\";\nimport BoundingSphere from \"./BoundingSphere.js\";\nimport Cartesian2 from \"./Cartesian2.js\";\nimport Cartesian3 from \"./Cartesian3.js\";\nimport ComponentDatatype from \"./ComponentDatatype.js\";\nimport CylinderGeometryLibrary from \"./CylinderGeometryLibrary.js\";\nimport defaultValue from \"./defaultValue.js\";\nimport defined from \"./defined.js\";\nimport DeveloperError from \"./DeveloperError.js\";\nimport Geometry from \"./Geometry.js\";\nimport GeometryAttribute from \"./GeometryAttribute.js\";\nimport GeometryAttributes from \"./GeometryAttributes.js\";\nimport GeometryOffsetAttribute from \"./GeometryOffsetAttribute.js\";\nimport IndexDatatype from \"./IndexDatatype.js\";\nimport CesiumMath from \"./Math.js\";\nimport PrimitiveType from \"./PrimitiveType.js\";\nimport VertexFormat from \"./VertexFormat.js\";\n\nconst radiusScratch = new Cartesian2();\nconst normalScratch = new Cartesian3();\nconst bitangentScratch = new Cartesian3();\nconst tangentScratch = new Cartesian3();\nconst positionScratch = new Cartesian3();\n\n/**\n * A description of a cylinder.\n *\n * @alias CylinderGeometry\n * @constructor\n *\n * @param {Object} options Object with the following properties:\n * @param {Number} options.length The length of the cylinder.\n * @param {Number} options.topRadius The radius of the top of the cylinder.\n * @param {Number} options.bottomRadius The radius of the bottom of the cylinder.\n * @param {Number} [options.slices=128] The number of edges around the perimeter of the cylinder.\n * @param {VertexFormat} [options.vertexFormat=VertexFormat.DEFAULT] The vertex attributes to be computed.\n *\n * @exception {DeveloperError} options.slices must be greater than or equal to 3.\n *\n * @see CylinderGeometry.createGeometry\n *\n * @example\n * // create cylinder geometry\n * const cylinder = new Cesium.CylinderGeometry({\n * length: 200000,\n * topRadius: 80000,\n * bottomRadius: 200000,\n * });\n * const geometry = Cesium.CylinderGeometry.createGeometry(cylinder);\n */\nfunction CylinderGeometry(options) {\n options = defaultValue(options, defaultValue.EMPTY_OBJECT);\n\n const length = options.length;\n const topRadius = options.topRadius;\n const bottomRadius = options.bottomRadius;\n const vertexFormat = defaultValue(options.vertexFormat, VertexFormat.DEFAULT);\n const slices = defaultValue(options.slices, 128);\n\n //>>includeStart('debug', pragmas.debug);\n if (!defined(length)) {\n throw new DeveloperError(\"options.length must be defined.\");\n }\n if (!defined(topRadius)) {\n throw new DeveloperError(\"options.topRadius must be defined.\");\n }\n if (!defined(bottomRadius)) {\n throw new DeveloperError(\"options.bottomRadius must be defined.\");\n }\n if (slices < 3) {\n throw new DeveloperError(\n \"options.slices must be greater than or equal to 3.\"\n );\n }\n if (\n defined(options.offsetAttribute) &&\n options.offsetAttribute === GeometryOffsetAttribute.TOP\n ) {\n throw new DeveloperError(\n \"GeometryOffsetAttribute.TOP is not a supported options.offsetAttribute for this geometry.\"\n );\n }\n //>>includeEnd('debug');\n\n this._length = length;\n this._topRadius = topRadius;\n this._bottomRadius = bottomRadius;\n this._vertexFormat = VertexFormat.clone(vertexFormat);\n this._slices = slices;\n this._offsetAttribute = options.offsetAttribute;\n this._workerName = \"createCylinderGeometry\";\n}\n\n/**\n * The number of elements used to pack the object into an array.\n * @type {Number}\n */\nCylinderGeometry.packedLength = VertexFormat.packedLength + 5;\n\n/**\n * Stores the provided instance into the provided array.\n *\n * @param {CylinderGeometry} 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 */\nCylinderGeometry.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 VertexFormat.pack(value._vertexFormat, array, startingIndex);\n startingIndex += VertexFormat.packedLength;\n\n array[startingIndex++] = value._length;\n array[startingIndex++] = value._topRadius;\n array[startingIndex++] = value._bottomRadius;\n array[startingIndex++] = value._slices;\n array[startingIndex] = defaultValue(value._offsetAttribute, -1);\n\n return array;\n};\n\nconst scratchVertexFormat = new VertexFormat();\nconst scratchOptions = {\n vertexFormat: scratchVertexFormat,\n length: undefined,\n topRadius: undefined,\n bottomRadius: undefined,\n slices: undefined,\n offsetAttribute: 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 {CylinderGeometry} [result] The object into which to store the result.\n * @returns {CylinderGeometry} The modified result parameter or a new CylinderGeometry instance if one was not provided.\n */\nCylinderGeometry.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 const vertexFormat = VertexFormat.unpack(\n array,\n startingIndex,\n scratchVertexFormat\n );\n startingIndex += VertexFormat.packedLength;\n\n const length = array[startingIndex++];\n const topRadius = array[startingIndex++];\n const bottomRadius = array[startingIndex++];\n const slices = array[startingIndex++];\n const offsetAttribute = array[startingIndex];\n\n if (!defined(result)) {\n scratchOptions.length = length;\n scratchOptions.topRadius = topRadius;\n scratchOptions.bottomRadius = bottomRadius;\n scratchOptions.slices = slices;\n scratchOptions.offsetAttribute =\n offsetAttribute === -1 ? undefined : offsetAttribute;\n return new CylinderGeometry(scratchOptions);\n }\n\n result._vertexFormat = VertexFormat.clone(vertexFormat, result._vertexFormat);\n result._length = length;\n result._topRadius = topRadius;\n result._bottomRadius = bottomRadius;\n result._slices = slices;\n result._offsetAttribute =\n offsetAttribute === -1 ? undefined : offsetAttribute;\n\n return result;\n};\n\n/**\n * Computes the geometric representation of a cylinder, including its vertices, indices, and a bounding sphere.\n *\n * @param {CylinderGeometry} cylinderGeometry A description of the cylinder.\n * @returns {Geometry|undefined} The computed vertices and indices.\n */\nCylinderGeometry.createGeometry = function (cylinderGeometry) {\n let length = cylinderGeometry._length;\n const topRadius = cylinderGeometry._topRadius;\n const bottomRadius = cylinderGeometry._bottomRadius;\n const vertexFormat = cylinderGeometry._vertexFormat;\n const slices = cylinderGeometry._slices;\n\n if (\n length <= 0 ||\n topRadius < 0 ||\n bottomRadius < 0 ||\n (topRadius === 0 && bottomRadius === 0)\n ) {\n return;\n }\n\n const twoSlices = slices + slices;\n const threeSlices = slices + twoSlices;\n const numVertices = twoSlices + twoSlices;\n\n const positions = CylinderGeometryLibrary.computePositions(\n length,\n topRadius,\n bottomRadius,\n slices,\n true\n );\n\n const st = vertexFormat.st ? new Float32Array(numVertices * 2) : undefined;\n const normals = vertexFormat.normal\n ? new Float32Array(numVertices * 3)\n : undefined;\n const tangents = vertexFormat.tangent\n ? new Float32Array(numVertices * 3)\n : undefined;\n const bitangents = vertexFormat.bitangent\n ? new Float32Array(numVertices * 3)\n : undefined;\n\n let i;\n const computeNormal =\n vertexFormat.normal || vertexFormat.tangent || vertexFormat.bitangent;\n\n if (computeNormal) {\n const computeTangent = vertexFormat.tangent || vertexFormat.bitangent;\n\n let normalIndex = 0;\n let tangentIndex = 0;\n let bitangentIndex = 0;\n\n const theta = Math.atan2(bottomRadius - topRadius, length);\n const normal = normalScratch;\n normal.z = Math.sin(theta);\n const normalScale = Math.cos(theta);\n let tangent = tangentScratch;\n let bitangent = bitangentScratch;\n\n for (i = 0; i < slices; i++) {\n const angle = (i / slices) * CesiumMath.TWO_PI;\n const x = normalScale * Math.cos(angle);\n const y = normalScale * Math.sin(angle);\n if (computeNormal) {\n normal.x = x;\n normal.y = y;\n\n if (computeTangent) {\n tangent = Cartesian3.normalize(\n Cartesian3.cross(Cartesian3.UNIT_Z, normal, tangent),\n tangent\n );\n }\n\n if (vertexFormat.normal) {\n normals[normalIndex++] = normal.x;\n normals[normalIndex++] = normal.y;\n normals[normalIndex++] = normal.z;\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 tangents[tangentIndex++] = tangent.x;\n tangents[tangentIndex++] = tangent.y;\n tangents[tangentIndex++] = tangent.z;\n }\n\n if (vertexFormat.bitangent) {\n bitangent = Cartesian3.normalize(\n Cartesian3.cross(normal, tangent, bitangent),\n bitangent\n );\n bitangents[bitangentIndex++] = bitangent.x;\n bitangents[bitangentIndex++] = bitangent.y;\n bitangents[bitangentIndex++] = bitangent.z;\n bitangents[bitangentIndex++] = bitangent.x;\n bitangents[bitangentIndex++] = bitangent.y;\n bitangents[bitangentIndex++] = bitangent.z;\n }\n }\n }\n\n for (i = 0; i < slices; i++) {\n if (vertexFormat.normal) {\n normals[normalIndex++] = 0;\n normals[normalIndex++] = 0;\n normals[normalIndex++] = -1;\n }\n if (vertexFormat.tangent) {\n tangents[tangentIndex++] = 1;\n tangents[tangentIndex++] = 0;\n tangents[tangentIndex++] = 0;\n }\n if (vertexFormat.bitangent) {\n bitangents[bitangentIndex++] = 0;\n bitangents[bitangentIndex++] = -1;\n bitangents[bitangentIndex++] = 0;\n }\n }\n\n for (i = 0; i < slices; i++) {\n if (vertexFormat.normal) {\n normals[normalIndex++] = 0;\n normals[normalIndex++] = 0;\n normals[normalIndex++] = 1;\n }\n if (vertexFormat.tangent) {\n tangents[tangentIndex++] = 1;\n tangents[tangentIndex++] = 0;\n tangents[tangentIndex++] = 0;\n }\n if (vertexFormat.bitangent) {\n bitangents[bitangentIndex++] = 0;\n bitangents[bitangentIndex++] = 1;\n bitangents[bitangentIndex++] = 0;\n }\n }\n }\n\n const numIndices = 12 * slices - 12;\n const indices = IndexDatatype.createTypedArray(numVertices, numIndices);\n let index = 0;\n let j = 0;\n for (i = 0; i < slices - 1; i++) {\n indices[index++] = j;\n indices[index++] = j + 2;\n indices[index++] = j + 3;\n\n indices[index++] = j;\n indices[index++] = j + 3;\n indices[index++] = j + 1;\n\n j += 2;\n }\n\n indices[index++] = twoSlices - 2;\n indices[index++] = 0;\n indices[index++] = 1;\n indices[index++] = twoSlices - 2;\n indices[index++] = 1;\n indices[index++] = twoSlices - 1;\n\n for (i = 1; i < slices - 1; i++) {\n indices[index++] = twoSlices + i + 1;\n indices[index++] = twoSlices + i;\n indices[index++] = twoSlices;\n }\n\n for (i = 1; i < slices - 1; i++) {\n indices[index++] = threeSlices;\n indices[index++] = threeSlices + i;\n indices[index++] = threeSlices + i + 1;\n }\n\n let textureCoordIndex = 0;\n if (vertexFormat.st) {\n const rad = Math.max(topRadius, bottomRadius);\n for (i = 0; i < numVertices; i++) {\n const position = Cartesian3.fromArray(positions, i * 3, positionScratch);\n st[textureCoordIndex++] = (position.x + rad) / (2.0 * rad);\n st[textureCoordIndex++] = (position.y + rad) / (2.0 * rad);\n }\n }\n\n const attributes = new GeometryAttributes();\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: st,\n });\n }\n\n radiusScratch.x = length * 0.5;\n radiusScratch.y = Math.max(bottomRadius, topRadius);\n\n const boundingSphere = new BoundingSphere(\n Cartesian3.ZERO,\n Cartesian2.magnitude(radiusScratch)\n );\n\n if (defined(cylinderGeometry._offsetAttribute)) {\n length = positions.length;\n const applyOffset = new Uint8Array(length / 3);\n const offsetValue =\n cylinderGeometry._offsetAttribute === GeometryOffsetAttribute.NONE\n ? 0\n : 1;\n arrayFill(applyOffset, offsetValue);\n attributes.applyOffset = new GeometryAttribute({\n componentDatatype: ComponentDatatype.UNSIGNED_BYTE,\n componentsPerAttribute: 1,\n values: applyOffset,\n });\n }\n\n return new Geometry({\n attributes: attributes,\n indices: indices,\n primitiveType: PrimitiveType.TRIANGLES,\n boundingSphere: boundingSphere,\n offsetAttribute: cylinderGeometry._offsetAttribute,\n });\n};\n\nlet unitCylinderGeometry;\n\n/**\n * Returns the geometric representation of a unit cylinder, including its vertices, indices, and a bounding sphere.\n * @returns {Geometry} The computed vertices and indices.\n *\n * @private\n */\nCylinderGeometry.getUnitCylinder = function () {\n if (!defined(unitCylinderGeometry)) {\n unitCylinderGeometry = CylinderGeometry.createGeometry(\n new CylinderGeometry({\n topRadius: 1.0,\n bottomRadius: 1.0,\n length: 1.0,\n vertexFormat: VertexFormat.POSITION_ONLY,\n })\n );\n }\n return unitCylinderGeometry;\n};\nexport default CylinderGeometry;\n"],"names":["Cartesian2","Cartesian3","defaultValue","VertexFormat","defined","DeveloperError","GeometryOffsetAttribute","CylinderGeometryLibrary","CesiumMath","IndexDatatype","GeometryAttributes","GeometryAttribute","ComponentDatatype","BoundingSphere","arrayFill","Geometry","PrimitiveType"],"mappings":"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"}