1 line
84 KiB
Plaintext
1 line
84 KiB
Plaintext
{"version":3,"file":"EllipseGeometry-3ffe669c.js","sources":["../../../../Source/Core/EllipseGeometry.js"],"sourcesContent":["import arrayFill from \"./arrayFill.js\";\nimport BoundingSphere from \"./BoundingSphere.js\";\nimport Cartesian2 from \"./Cartesian2.js\";\nimport Cartesian3 from \"./Cartesian3.js\";\nimport Cartographic from \"./Cartographic.js\";\nimport Check from \"./Check.js\";\nimport ComponentDatatype from \"./ComponentDatatype.js\";\nimport defaultValue from \"./defaultValue.js\";\nimport defined from \"./defined.js\";\nimport DeveloperError from \"./DeveloperError.js\";\nimport EllipseGeometryLibrary from \"./EllipseGeometryLibrary.js\";\nimport Ellipsoid from \"./Ellipsoid.js\";\nimport GeographicProjection from \"./GeographicProjection.js\";\nimport Geometry from \"./Geometry.js\";\nimport GeometryAttribute from \"./GeometryAttribute.js\";\nimport GeometryAttributes from \"./GeometryAttributes.js\";\nimport GeometryInstance from \"./GeometryInstance.js\";\nimport GeometryOffsetAttribute from \"./GeometryOffsetAttribute.js\";\nimport GeometryPipeline from \"./GeometryPipeline.js\";\nimport IndexDatatype from \"./IndexDatatype.js\";\nimport CesiumMath from \"./Math.js\";\nimport Matrix3 from \"./Matrix3.js\";\nimport PrimitiveType from \"./PrimitiveType.js\";\nimport Quaternion from \"./Quaternion.js\";\nimport Rectangle from \"./Rectangle.js\";\nimport VertexFormat from \"./VertexFormat.js\";\n\nconst scratchCartesian1 = new Cartesian3();\nconst scratchCartesian2 = new Cartesian3();\nconst scratchCartesian3 = new Cartesian3();\nconst scratchCartesian4 = new Cartesian3();\nconst texCoordScratch = new Cartesian2();\nconst textureMatrixScratch = new Matrix3();\nconst tangentMatrixScratch = new Matrix3();\nconst quaternionScratch = new Quaternion();\n\nconst scratchNormal = new Cartesian3();\nconst scratchTangent = new Cartesian3();\nconst scratchBitangent = new Cartesian3();\n\nconst scratchCartographic = new Cartographic();\nconst projectedCenterScratch = new Cartesian3();\n\nconst scratchMinTexCoord = new Cartesian2();\nconst scratchMaxTexCoord = new Cartesian2();\n\nfunction computeTopBottomAttributes(positions, options, extrude) {\n const vertexFormat = options.vertexFormat;\n const center = options.center;\n const semiMajorAxis = options.semiMajorAxis;\n const semiMinorAxis = options.semiMinorAxis;\n const ellipsoid = options.ellipsoid;\n const stRotation = options.stRotation;\n const size = extrude ? (positions.length / 3) * 2 : positions.length / 3;\n const shadowVolume = options.shadowVolume;\n\n const textureCoordinates = vertexFormat.st\n ? new Float32Array(size * 2)\n : undefined;\n const normals = vertexFormat.normal ? new Float32Array(size * 3) : undefined;\n const tangents = vertexFormat.tangent\n ? new Float32Array(size * 3)\n : undefined;\n const bitangents = vertexFormat.bitangent\n ? new Float32Array(size * 3)\n : undefined;\n\n const extrudeNormals = shadowVolume ? new Float32Array(size * 3) : undefined;\n\n let textureCoordIndex = 0;\n\n // Raise positions to a height above the ellipsoid and compute the\n // texture coordinates, normals, tangents, and bitangents.\n let normal = scratchNormal;\n let tangent = scratchTangent;\n let bitangent = scratchBitangent;\n\n const projection = new GeographicProjection(ellipsoid);\n const projectedCenter = projection.project(\n ellipsoid.cartesianToCartographic(center, scratchCartographic),\n projectedCenterScratch\n );\n\n const geodeticNormal = ellipsoid.scaleToGeodeticSurface(\n center,\n scratchCartesian1\n );\n ellipsoid.geodeticSurfaceNormal(geodeticNormal, geodeticNormal);\n\n let textureMatrix = textureMatrixScratch;\n let tangentMatrix = tangentMatrixScratch;\n if (stRotation !== 0) {\n let rotation = Quaternion.fromAxisAngle(\n geodeticNormal,\n stRotation,\n quaternionScratch\n );\n textureMatrix = Matrix3.fromQuaternion(rotation, textureMatrix);\n\n rotation = Quaternion.fromAxisAngle(\n geodeticNormal,\n -stRotation,\n quaternionScratch\n );\n tangentMatrix = Matrix3.fromQuaternion(rotation, tangentMatrix);\n } else {\n textureMatrix = Matrix3.clone(Matrix3.IDENTITY, textureMatrix);\n tangentMatrix = Matrix3.clone(Matrix3.IDENTITY, tangentMatrix);\n }\n\n const minTexCoord = Cartesian2.fromElements(\n Number.POSITIVE_INFINITY,\n Number.POSITIVE_INFINITY,\n scratchMinTexCoord\n );\n const maxTexCoord = Cartesian2.fromElements(\n Number.NEGATIVE_INFINITY,\n Number.NEGATIVE_INFINITY,\n scratchMaxTexCoord\n );\n\n let length = positions.length;\n const bottomOffset = extrude ? length : 0;\n const stOffset = (bottomOffset / 3) * 2;\n for (let i = 0; i < length; i += 3) {\n const i1 = i + 1;\n const i2 = i + 2;\n const position = Cartesian3.fromArray(positions, i, scratchCartesian1);\n\n if (vertexFormat.st) {\n const rotatedPoint = Matrix3.multiplyByVector(\n textureMatrix,\n position,\n scratchCartesian2\n );\n const projectedPoint = projection.project(\n ellipsoid.cartesianToCartographic(rotatedPoint, scratchCartographic),\n scratchCartesian3\n );\n Cartesian3.subtract(projectedPoint, projectedCenter, projectedPoint);\n\n texCoordScratch.x =\n (projectedPoint.x + semiMajorAxis) / (2.0 * semiMajorAxis);\n texCoordScratch.y =\n (projectedPoint.y + semiMinorAxis) / (2.0 * semiMinorAxis);\n\n minTexCoord.x = Math.min(texCoordScratch.x, minTexCoord.x);\n minTexCoord.y = Math.min(texCoordScratch.y, minTexCoord.y);\n maxTexCoord.x = Math.max(texCoordScratch.x, maxTexCoord.x);\n maxTexCoord.y = Math.max(texCoordScratch.y, maxTexCoord.y);\n\n if (extrude) {\n textureCoordinates[textureCoordIndex + stOffset] = texCoordScratch.x;\n textureCoordinates[textureCoordIndex + 1 + stOffset] =\n texCoordScratch.y;\n }\n\n textureCoordinates[textureCoordIndex++] = texCoordScratch.x;\n textureCoordinates[textureCoordIndex++] = texCoordScratch.y;\n }\n\n if (\n vertexFormat.normal ||\n vertexFormat.tangent ||\n vertexFormat.bitangent ||\n shadowVolume\n ) {\n normal = ellipsoid.geodeticSurfaceNormal(position, normal);\n\n if (shadowVolume) {\n extrudeNormals[i + bottomOffset] = -normal.x;\n extrudeNormals[i1 + bottomOffset] = -normal.y;\n extrudeNormals[i2 + bottomOffset] = -normal.z;\n }\n\n if (\n vertexFormat.normal ||\n vertexFormat.tangent ||\n vertexFormat.bitangent\n ) {\n if (vertexFormat.tangent || vertexFormat.bitangent) {\n tangent = Cartesian3.normalize(\n Cartesian3.cross(Cartesian3.UNIT_Z, normal, tangent),\n tangent\n );\n Matrix3.multiplyByVector(tangentMatrix, tangent, tangent);\n }\n if (vertexFormat.normal) {\n normals[i] = normal.x;\n normals[i1] = normal.y;\n normals[i2] = normal.z;\n if (extrude) {\n normals[i + bottomOffset] = -normal.x;\n normals[i1 + bottomOffset] = -normal.y;\n normals[i2 + bottomOffset] = -normal.z;\n }\n }\n\n if (vertexFormat.tangent) {\n tangents[i] = tangent.x;\n tangents[i1] = tangent.y;\n tangents[i2] = tangent.z;\n if (extrude) {\n tangents[i + bottomOffset] = -tangent.x;\n tangents[i1 + bottomOffset] = -tangent.y;\n tangents[i2 + bottomOffset] = -tangent.z;\n }\n }\n\n if (vertexFormat.bitangent) {\n bitangent = Cartesian3.normalize(\n Cartesian3.cross(normal, tangent, bitangent),\n bitangent\n );\n bitangents[i] = bitangent.x;\n bitangents[i1] = bitangent.y;\n bitangents[i2] = bitangent.z;\n if (extrude) {\n bitangents[i + bottomOffset] = bitangent.x;\n bitangents[i1 + bottomOffset] = bitangent.y;\n bitangents[i2 + bottomOffset] = bitangent.z;\n }\n }\n }\n }\n }\n\n if (vertexFormat.st) {\n length = textureCoordinates.length;\n for (let k = 0; k < length; k += 2) {\n textureCoordinates[k] =\n (textureCoordinates[k] - minTexCoord.x) /\n (maxTexCoord.x - minTexCoord.x);\n textureCoordinates[k + 1] =\n (textureCoordinates[k + 1] - minTexCoord.y) /\n (maxTexCoord.y - minTexCoord.y);\n }\n }\n\n const attributes = new GeometryAttributes();\n\n if (vertexFormat.position) {\n const finalPositions = EllipseGeometryLibrary.raisePositionsToHeight(\n positions,\n options,\n extrude\n );\n attributes.position = new GeometryAttribute({\n componentDatatype: ComponentDatatype.DOUBLE,\n componentsPerAttribute: 3,\n values: finalPositions,\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 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 (shadowVolume) {\n attributes.extrudeDirection = new GeometryAttribute({\n componentDatatype: ComponentDatatype.FLOAT,\n componentsPerAttribute: 3,\n values: extrudeNormals,\n });\n }\n\n if (extrude && defined(options.offsetAttribute)) {\n let offsetAttribute = new Uint8Array(size);\n if (options.offsetAttribute === GeometryOffsetAttribute.TOP) {\n offsetAttribute = arrayFill(offsetAttribute, 1, 0, size / 2);\n } else {\n const offsetValue =\n options.offsetAttribute === GeometryOffsetAttribute.NONE ? 0 : 1;\n offsetAttribute = arrayFill(offsetAttribute, offsetValue);\n }\n\n attributes.applyOffset = new GeometryAttribute({\n componentDatatype: ComponentDatatype.UNSIGNED_BYTE,\n componentsPerAttribute: 1,\n values: offsetAttribute,\n });\n }\n\n return attributes;\n}\n\nfunction topIndices(numPts) {\n // numTriangles in half = 3 + 8 + 12 + ... = -1 + 4 + (4 + 4) + (4 + 4 + 4) + ... = -1 + 4 * (1 + 2 + 3 + ...)\n // = -1 + 4 * ((n * ( n + 1)) / 2)\n // total triangles = 2 * numTrangles in half\n // indices = total triangles * 3;\n // Substitute numPts for n above\n\n const indices = new Array(12 * (numPts * (numPts + 1)) - 6);\n let indicesIndex = 0;\n let prevIndex;\n let numInterior;\n let positionIndex;\n let i;\n let j;\n // Indices triangles to the 'right' of the north vector\n\n prevIndex = 0;\n positionIndex = 1;\n for (i = 0; i < 3; i++) {\n indices[indicesIndex++] = positionIndex++;\n indices[indicesIndex++] = prevIndex;\n indices[indicesIndex++] = positionIndex;\n }\n\n for (i = 2; i < numPts + 1; ++i) {\n positionIndex = i * (i + 1) - 1;\n prevIndex = (i - 1) * i - 1;\n\n indices[indicesIndex++] = positionIndex++;\n indices[indicesIndex++] = prevIndex;\n indices[indicesIndex++] = positionIndex;\n\n numInterior = 2 * i;\n for (j = 0; j < numInterior - 1; ++j) {\n indices[indicesIndex++] = positionIndex;\n indices[indicesIndex++] = prevIndex++;\n indices[indicesIndex++] = prevIndex;\n\n indices[indicesIndex++] = positionIndex++;\n indices[indicesIndex++] = prevIndex;\n indices[indicesIndex++] = positionIndex;\n }\n\n indices[indicesIndex++] = positionIndex++;\n indices[indicesIndex++] = prevIndex;\n indices[indicesIndex++] = positionIndex;\n }\n\n // Indices for center column of triangles\n numInterior = numPts * 2;\n ++positionIndex;\n ++prevIndex;\n for (i = 0; i < numInterior - 1; ++i) {\n indices[indicesIndex++] = positionIndex;\n indices[indicesIndex++] = prevIndex++;\n indices[indicesIndex++] = prevIndex;\n\n indices[indicesIndex++] = positionIndex++;\n indices[indicesIndex++] = prevIndex;\n indices[indicesIndex++] = positionIndex;\n }\n\n indices[indicesIndex++] = positionIndex;\n indices[indicesIndex++] = prevIndex++;\n indices[indicesIndex++] = prevIndex;\n\n indices[indicesIndex++] = positionIndex++;\n indices[indicesIndex++] = prevIndex++;\n indices[indicesIndex++] = prevIndex;\n\n // Reverse the process creating indices to the 'left' of the north vector\n ++prevIndex;\n for (i = numPts - 1; i > 1; --i) {\n indices[indicesIndex++] = prevIndex++;\n indices[indicesIndex++] = prevIndex;\n indices[indicesIndex++] = positionIndex;\n\n numInterior = 2 * i;\n for (j = 0; j < numInterior - 1; ++j) {\n indices[indicesIndex++] = positionIndex;\n indices[indicesIndex++] = prevIndex++;\n indices[indicesIndex++] = prevIndex;\n\n indices[indicesIndex++] = positionIndex++;\n indices[indicesIndex++] = prevIndex;\n indices[indicesIndex++] = positionIndex;\n }\n\n indices[indicesIndex++] = prevIndex++;\n indices[indicesIndex++] = prevIndex++;\n indices[indicesIndex++] = positionIndex++;\n }\n\n for (i = 0; i < 3; i++) {\n indices[indicesIndex++] = prevIndex++;\n indices[indicesIndex++] = prevIndex;\n indices[indicesIndex++] = positionIndex;\n }\n return indices;\n}\n\nlet boundingSphereCenter = new Cartesian3();\n\nfunction computeEllipse(options) {\n const center = options.center;\n boundingSphereCenter = Cartesian3.multiplyByScalar(\n options.ellipsoid.geodeticSurfaceNormal(center, boundingSphereCenter),\n options.height,\n boundingSphereCenter\n );\n boundingSphereCenter = Cartesian3.add(\n center,\n boundingSphereCenter,\n boundingSphereCenter\n );\n const boundingSphere = new BoundingSphere(\n boundingSphereCenter,\n options.semiMajorAxis\n );\n const cep = EllipseGeometryLibrary.computeEllipsePositions(\n options,\n true,\n false\n );\n const positions = cep.positions;\n const numPts = cep.numPts;\n const attributes = computeTopBottomAttributes(positions, options, false);\n let indices = topIndices(numPts);\n indices = IndexDatatype.createTypedArray(positions.length / 3, indices);\n return {\n boundingSphere: boundingSphere,\n attributes: attributes,\n indices: indices,\n };\n}\n\nfunction computeWallAttributes(positions, options) {\n const vertexFormat = options.vertexFormat;\n const center = options.center;\n const semiMajorAxis = options.semiMajorAxis;\n const semiMinorAxis = options.semiMinorAxis;\n const ellipsoid = options.ellipsoid;\n const height = options.height;\n const extrudedHeight = options.extrudedHeight;\n const stRotation = options.stRotation;\n const size = (positions.length / 3) * 2;\n\n const finalPositions = new Float64Array(size * 3);\n const textureCoordinates = vertexFormat.st\n ? new Float32Array(size * 2)\n : undefined;\n const normals = vertexFormat.normal ? new Float32Array(size * 3) : undefined;\n const tangents = vertexFormat.tangent\n ? new Float32Array(size * 3)\n : undefined;\n const bitangents = vertexFormat.bitangent\n ? new Float32Array(size * 3)\n : undefined;\n\n const shadowVolume = options.shadowVolume;\n const extrudeNormals = shadowVolume ? new Float32Array(size * 3) : undefined;\n\n let textureCoordIndex = 0;\n\n // Raise positions to a height above the ellipsoid and compute the\n // texture coordinates, normals, tangents, and bitangents.\n let normal = scratchNormal;\n let tangent = scratchTangent;\n let bitangent = scratchBitangent;\n\n const projection = new GeographicProjection(ellipsoid);\n const projectedCenter = projection.project(\n ellipsoid.cartesianToCartographic(center, scratchCartographic),\n projectedCenterScratch\n );\n\n const geodeticNormal = ellipsoid.scaleToGeodeticSurface(\n center,\n scratchCartesian1\n );\n ellipsoid.geodeticSurfaceNormal(geodeticNormal, geodeticNormal);\n const rotation = Quaternion.fromAxisAngle(\n geodeticNormal,\n stRotation,\n quaternionScratch\n );\n const textureMatrix = Matrix3.fromQuaternion(rotation, textureMatrixScratch);\n\n const minTexCoord = Cartesian2.fromElements(\n Number.POSITIVE_INFINITY,\n Number.POSITIVE_INFINITY,\n scratchMinTexCoord\n );\n const maxTexCoord = Cartesian2.fromElements(\n Number.NEGATIVE_INFINITY,\n Number.NEGATIVE_INFINITY,\n scratchMaxTexCoord\n );\n\n let length = positions.length;\n const stOffset = (length / 3) * 2;\n for (let i = 0; i < length; i += 3) {\n const i1 = i + 1;\n const i2 = i + 2;\n let position = Cartesian3.fromArray(positions, i, scratchCartesian1);\n let extrudedPosition;\n\n if (vertexFormat.st) {\n const rotatedPoint = Matrix3.multiplyByVector(\n textureMatrix,\n position,\n scratchCartesian2\n );\n const projectedPoint = projection.project(\n ellipsoid.cartesianToCartographic(rotatedPoint, scratchCartographic),\n scratchCartesian3\n );\n Cartesian3.subtract(projectedPoint, projectedCenter, projectedPoint);\n\n texCoordScratch.x =\n (projectedPoint.x + semiMajorAxis) / (2.0 * semiMajorAxis);\n texCoordScratch.y =\n (projectedPoint.y + semiMinorAxis) / (2.0 * semiMinorAxis);\n\n minTexCoord.x = Math.min(texCoordScratch.x, minTexCoord.x);\n minTexCoord.y = Math.min(texCoordScratch.y, minTexCoord.y);\n maxTexCoord.x = Math.max(texCoordScratch.x, maxTexCoord.x);\n maxTexCoord.y = Math.max(texCoordScratch.y, maxTexCoord.y);\n\n textureCoordinates[textureCoordIndex + stOffset] = texCoordScratch.x;\n textureCoordinates[textureCoordIndex + 1 + stOffset] = texCoordScratch.y;\n\n textureCoordinates[textureCoordIndex++] = texCoordScratch.x;\n textureCoordinates[textureCoordIndex++] = texCoordScratch.y;\n }\n\n position = ellipsoid.scaleToGeodeticSurface(position, position);\n extrudedPosition = Cartesian3.clone(position, scratchCartesian2);\n normal = ellipsoid.geodeticSurfaceNormal(position, normal);\n\n if (shadowVolume) {\n extrudeNormals[i + length] = -normal.x;\n extrudeNormals[i1 + length] = -normal.y;\n extrudeNormals[i2 + length] = -normal.z;\n }\n\n let scaledNormal = Cartesian3.multiplyByScalar(\n normal,\n height,\n scratchCartesian4\n );\n position = Cartesian3.add(position, scaledNormal, position);\n scaledNormal = Cartesian3.multiplyByScalar(\n normal,\n extrudedHeight,\n scaledNormal\n );\n extrudedPosition = Cartesian3.add(\n extrudedPosition,\n scaledNormal,\n extrudedPosition\n );\n\n if (vertexFormat.position) {\n finalPositions[i + length] = extrudedPosition.x;\n finalPositions[i1 + length] = extrudedPosition.y;\n finalPositions[i2 + length] = extrudedPosition.z;\n\n finalPositions[i] = position.x;\n finalPositions[i1] = position.y;\n finalPositions[i2] = position.z;\n }\n\n if (vertexFormat.normal || vertexFormat.tangent || vertexFormat.bitangent) {\n bitangent = Cartesian3.clone(normal, bitangent);\n const next = Cartesian3.fromArray(\n positions,\n (i + 3) % length,\n scratchCartesian4\n );\n Cartesian3.subtract(next, position, next);\n const bottom = Cartesian3.subtract(\n extrudedPosition,\n position,\n scratchCartesian3\n );\n\n normal = Cartesian3.normalize(\n Cartesian3.cross(bottom, next, normal),\n normal\n );\n\n if (vertexFormat.normal) {\n normals[i] = normal.x;\n normals[i1] = normal.y;\n normals[i2] = normal.z;\n\n normals[i + length] = normal.x;\n normals[i1 + length] = normal.y;\n normals[i2 + length] = normal.z;\n }\n\n if (vertexFormat.tangent) {\n tangent = Cartesian3.normalize(\n Cartesian3.cross(bitangent, normal, tangent),\n tangent\n );\n tangents[i] = tangent.x;\n tangents[i1] = tangent.y;\n tangents[i2] = tangent.z;\n\n tangents[i + length] = tangent.x;\n tangents[i + 1 + length] = tangent.y;\n tangents[i + 2 + length] = tangent.z;\n }\n\n if (vertexFormat.bitangent) {\n bitangents[i] = bitangent.x;\n bitangents[i1] = bitangent.y;\n bitangents[i2] = bitangent.z;\n\n bitangents[i + length] = bitangent.x;\n bitangents[i1 + length] = bitangent.y;\n bitangents[i2 + length] = bitangent.z;\n }\n }\n }\n\n if (vertexFormat.st) {\n length = textureCoordinates.length;\n for (let k = 0; k < length; k += 2) {\n textureCoordinates[k] =\n (textureCoordinates[k] - minTexCoord.x) /\n (maxTexCoord.x - minTexCoord.x);\n textureCoordinates[k + 1] =\n (textureCoordinates[k + 1] - minTexCoord.y) /\n (maxTexCoord.y - minTexCoord.y);\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: finalPositions,\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 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 (shadowVolume) {\n attributes.extrudeDirection = new GeometryAttribute({\n componentDatatype: ComponentDatatype.FLOAT,\n componentsPerAttribute: 3,\n values: extrudeNormals,\n });\n }\n\n if (defined(options.offsetAttribute)) {\n let offsetAttribute = new Uint8Array(size);\n if (options.offsetAttribute === GeometryOffsetAttribute.TOP) {\n offsetAttribute = arrayFill(offsetAttribute, 1, 0, size / 2);\n } else {\n const offsetValue =\n options.offsetAttribute === GeometryOffsetAttribute.NONE ? 0 : 1;\n offsetAttribute = arrayFill(offsetAttribute, offsetValue);\n }\n attributes.applyOffset = new GeometryAttribute({\n componentDatatype: ComponentDatatype.UNSIGNED_BYTE,\n componentsPerAttribute: 1,\n values: offsetAttribute,\n });\n }\n\n return attributes;\n}\n\nfunction computeWallIndices(positions) {\n const length = positions.length / 3;\n const indices = IndexDatatype.createTypedArray(length, length * 6);\n let index = 0;\n for (let i = 0; i < length; i++) {\n const UL = i;\n const LL = i + length;\n const UR = (UL + 1) % length;\n const LR = UR + length;\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 return indices;\n}\n\nconst topBoundingSphere = new BoundingSphere();\nconst bottomBoundingSphere = new BoundingSphere();\n\nfunction computeExtrudedEllipse(options) {\n const center = options.center;\n const ellipsoid = options.ellipsoid;\n const semiMajorAxis = options.semiMajorAxis;\n let scaledNormal = Cartesian3.multiplyByScalar(\n ellipsoid.geodeticSurfaceNormal(center, scratchCartesian1),\n options.height,\n scratchCartesian1\n );\n topBoundingSphere.center = Cartesian3.add(\n center,\n scaledNormal,\n topBoundingSphere.center\n );\n topBoundingSphere.radius = semiMajorAxis;\n\n scaledNormal = Cartesian3.multiplyByScalar(\n ellipsoid.geodeticSurfaceNormal(center, scaledNormal),\n options.extrudedHeight,\n scaledNormal\n );\n bottomBoundingSphere.center = Cartesian3.add(\n center,\n scaledNormal,\n bottomBoundingSphere.center\n );\n bottomBoundingSphere.radius = semiMajorAxis;\n\n const cep = EllipseGeometryLibrary.computeEllipsePositions(\n options,\n true,\n true\n );\n const positions = cep.positions;\n const numPts = cep.numPts;\n const outerPositions = cep.outerPositions;\n const boundingSphere = BoundingSphere.union(\n topBoundingSphere,\n bottomBoundingSphere\n );\n const topBottomAttributes = computeTopBottomAttributes(\n positions,\n options,\n true\n );\n let indices = topIndices(numPts);\n const length = indices.length;\n indices.length = length * 2;\n const posLength = positions.length / 3;\n for (let i = 0; i < length; i += 3) {\n indices[i + length] = indices[i + 2] + posLength;\n indices[i + 1 + length] = indices[i + 1] + posLength;\n indices[i + 2 + length] = indices[i] + posLength;\n }\n\n const topBottomIndices = IndexDatatype.createTypedArray(\n (posLength * 2) / 3,\n indices\n );\n\n const topBottomGeo = new Geometry({\n attributes: topBottomAttributes,\n indices: topBottomIndices,\n primitiveType: PrimitiveType.TRIANGLES,\n });\n\n const wallAttributes = computeWallAttributes(outerPositions, options);\n indices = computeWallIndices(outerPositions);\n const wallIndices = IndexDatatype.createTypedArray(\n (outerPositions.length * 2) / 3,\n indices\n );\n\n const wallGeo = new Geometry({\n attributes: wallAttributes,\n indices: wallIndices,\n primitiveType: PrimitiveType.TRIANGLES,\n });\n\n const geo = GeometryPipeline.combineInstances([\n new GeometryInstance({\n geometry: topBottomGeo,\n }),\n new GeometryInstance({\n geometry: wallGeo,\n }),\n ]);\n\n return {\n boundingSphere: boundingSphere,\n attributes: geo[0].attributes,\n indices: geo[0].indices,\n };\n}\n\nfunction computeRectangle(\n center,\n semiMajorAxis,\n semiMinorAxis,\n rotation,\n granularity,\n ellipsoid,\n result\n) {\n const cep = EllipseGeometryLibrary.computeEllipsePositions(\n {\n center: center,\n semiMajorAxis: semiMajorAxis,\n semiMinorAxis: semiMinorAxis,\n rotation: rotation,\n granularity: granularity,\n },\n false,\n true\n );\n const positionsFlat = cep.outerPositions;\n const positionsCount = positionsFlat.length / 3;\n const positions = new Array(positionsCount);\n for (let i = 0; i < positionsCount; ++i) {\n positions[i] = Cartesian3.fromArray(positionsFlat, i * 3);\n }\n const rectangle = Rectangle.fromCartesianArray(positions, ellipsoid, result);\n // Rectangle width goes beyond 180 degrees when the ellipse crosses a pole.\n // When this happens, make the rectangle into a \"circle\" around the pole\n if (rectangle.width > CesiumMath.PI) {\n rectangle.north =\n rectangle.north > 0.0\n ? CesiumMath.PI_OVER_TWO - CesiumMath.EPSILON7\n : rectangle.north;\n rectangle.south =\n rectangle.south < 0.0\n ? CesiumMath.EPSILON7 - CesiumMath.PI_OVER_TWO\n : rectangle.south;\n rectangle.east = CesiumMath.PI;\n rectangle.west = -CesiumMath.PI;\n }\n return rectangle;\n}\n\n/**\n * A description of an ellipse on an ellipsoid. Ellipse geometry can be rendered with both {@link Primitive} and {@link GroundPrimitive}.\n *\n * @alias EllipseGeometry\n * @constructor\n *\n * @param {Object} options Object with the following properties:\n * @param {Cartesian3} options.center The ellipse's center point in the fixed frame.\n * @param {Number} options.semiMajorAxis The length of the ellipse's semi-major axis in meters.\n * @param {Number} options.semiMinorAxis The length of the ellipse's semi-minor axis in meters.\n * @param {Ellipsoid} [options.ellipsoid=Ellipsoid.WGS84] The ellipsoid the ellipse will be on.\n * @param {Number} [options.height=0.0] The distance in meters between the ellipse and the ellipsoid surface.\n * @param {Number} [options.extrudedHeight] The distance in meters between the ellipse's extruded face and the ellipsoid surface.\n * @param {Number} [options.rotation=0.0] The angle of rotation counter-clockwise from north.\n * @param {Number} [options.stRotation=0.0] The rotation of the texture coordinates counter-clockwise from north.\n * @param {Number} [options.granularity=CesiumMath.RADIANS_PER_DEGREE] The angular distance between points on the ellipse in radians.\n * @param {VertexFormat} [options.vertexFormat=VertexFormat.DEFAULT] The vertex attributes to be computed.\n *\n * @exception {DeveloperError} semiMajorAxis and semiMinorAxis must be greater than zero.\n * @exception {DeveloperError} semiMajorAxis must be greater than or equal to the semiMinorAxis.\n * @exception {DeveloperError} granularity must be greater than zero.\n *\n *\n * @example\n * // Create an ellipse.\n * const ellipse = new Cesium.EllipseGeometry({\n * center : Cesium.Cartesian3.fromDegrees(-75.59777, 40.03883),\n * semiMajorAxis : 500000.0,\n * semiMinorAxis : 300000.0,\n * rotation : Cesium.Math.toRadians(60.0)\n * });\n * const geometry = Cesium.EllipseGeometry.createGeometry(ellipse);\n *\n * @see EllipseGeometry.createGeometry\n */\nfunction EllipseGeometry(options) {\n options = defaultValue(options, defaultValue.EMPTY_OBJECT);\n\n const center = options.center;\n const ellipsoid = defaultValue(options.ellipsoid, Ellipsoid.WGS84);\n const semiMajorAxis = options.semiMajorAxis;\n const semiMinorAxis = options.semiMinorAxis;\n const granularity = defaultValue(\n options.granularity,\n CesiumMath.RADIANS_PER_DEGREE\n );\n const vertexFormat = defaultValue(options.vertexFormat, VertexFormat.DEFAULT);\n\n //>>includeStart('debug', pragmas.debug);\n Check.defined(\"options.center\", center);\n Check.typeOf.number(\"options.semiMajorAxis\", semiMajorAxis);\n Check.typeOf.number(\"options.semiMinorAxis\", semiMinorAxis);\n if (semiMajorAxis < semiMinorAxis) {\n throw new DeveloperError(\n \"semiMajorAxis must be greater than or equal to the semiMinorAxis.\"\n );\n }\n if (granularity <= 0.0) {\n throw new DeveloperError(\"granularity must be greater than zero.\");\n }\n //>>includeEnd('debug');\n\n const height = defaultValue(options.height, 0.0);\n const extrudedHeight = defaultValue(options.extrudedHeight, height);\n\n this._center = Cartesian3.clone(center);\n this._semiMajorAxis = semiMajorAxis;\n this._semiMinorAxis = semiMinorAxis;\n this._ellipsoid = Ellipsoid.clone(ellipsoid);\n this._rotation = defaultValue(options.rotation, 0.0);\n this._stRotation = defaultValue(options.stRotation, 0.0);\n this._height = Math.max(extrudedHeight, height);\n this._granularity = granularity;\n this._vertexFormat = VertexFormat.clone(vertexFormat);\n this._extrudedHeight = Math.min(extrudedHeight, height);\n this._shadowVolume = defaultValue(options.shadowVolume, false);\n this._workerName = \"createEllipseGeometry\";\n this._offsetAttribute = options.offsetAttribute;\n\n this._rectangle = undefined;\n this._textureCoordinateRotationPoints = undefined;\n}\n\n/**\n * The number of elements used to pack the object into an array.\n * @type {Number}\n */\nEllipseGeometry.packedLength =\n Cartesian3.packedLength +\n Ellipsoid.packedLength +\n VertexFormat.packedLength +\n 9;\n\n/**\n * Stores the provided instance into the provided array.\n *\n * @param {EllipseGeometry} 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 */\nEllipseGeometry.pack = function (value, array, startingIndex) {\n //>>includeStart('debug', pragmas.debug);\n Check.defined(\"value\", value);\n Check.defined(\"array\", array);\n //>>includeEnd('debug');\n\n startingIndex = defaultValue(startingIndex, 0);\n\n Cartesian3.pack(value._center, array, startingIndex);\n startingIndex += Cartesian3.packedLength;\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._semiMajorAxis;\n array[startingIndex++] = value._semiMinorAxis;\n array[startingIndex++] = value._rotation;\n array[startingIndex++] = value._stRotation;\n array[startingIndex++] = value._height;\n array[startingIndex++] = value._granularity;\n array[startingIndex++] = value._extrudedHeight;\n array[startingIndex++] = value._shadowVolume ? 1.0 : 0.0;\n array[startingIndex] = defaultValue(value._offsetAttribute, -1);\n\n return array;\n};\n\nconst scratchCenter = new Cartesian3();\nconst scratchEllipsoid = new Ellipsoid();\nconst scratchVertexFormat = new VertexFormat();\nconst scratchOptions = {\n center: scratchCenter,\n ellipsoid: scratchEllipsoid,\n vertexFormat: scratchVertexFormat,\n semiMajorAxis: undefined,\n semiMinorAxis: undefined,\n rotation: undefined,\n stRotation: undefined,\n height: undefined,\n granularity: undefined,\n extrudedHeight: undefined,\n shadowVolume: 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 {EllipseGeometry} [result] The object into which to store the result.\n * @returns {EllipseGeometry} The modified result parameter or a new EllipseGeometry instance if one was not provided.\n */\nEllipseGeometry.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 center = Cartesian3.unpack(array, startingIndex, scratchCenter);\n startingIndex += Cartesian3.packedLength;\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 semiMajorAxis = array[startingIndex++];\n const semiMinorAxis = array[startingIndex++];\n const rotation = array[startingIndex++];\n const stRotation = array[startingIndex++];\n const height = array[startingIndex++];\n const granularity = array[startingIndex++];\n const extrudedHeight = array[startingIndex++];\n const shadowVolume = array[startingIndex++] === 1.0;\n const offsetAttribute = array[startingIndex];\n\n if (!defined(result)) {\n scratchOptions.height = height;\n scratchOptions.extrudedHeight = extrudedHeight;\n scratchOptions.granularity = granularity;\n scratchOptions.stRotation = stRotation;\n scratchOptions.rotation = rotation;\n scratchOptions.semiMajorAxis = semiMajorAxis;\n scratchOptions.semiMinorAxis = semiMinorAxis;\n scratchOptions.shadowVolume = shadowVolume;\n scratchOptions.offsetAttribute =\n offsetAttribute === -1 ? undefined : offsetAttribute;\n\n return new EllipseGeometry(scratchOptions);\n }\n\n result._center = Cartesian3.clone(center, result._center);\n result._ellipsoid = Ellipsoid.clone(ellipsoid, result._ellipsoid);\n result._vertexFormat = VertexFormat.clone(vertexFormat, result._vertexFormat);\n result._semiMajorAxis = semiMajorAxis;\n result._semiMinorAxis = semiMinorAxis;\n result._rotation = rotation;\n result._stRotation = stRotation;\n result._height = height;\n result._granularity = granularity;\n result._extrudedHeight = extrudedHeight;\n result._shadowVolume = shadowVolume;\n result._offsetAttribute =\n offsetAttribute === -1 ? undefined : offsetAttribute;\n\n return result;\n};\n\n/**\n * Computes the bounding rectangle based on the provided options\n *\n * @param {Object} options Object with the following properties:\n * @param {Cartesian3} options.center The ellipse's center point in the fixed frame.\n * @param {Number} options.semiMajorAxis The length of the ellipse's semi-major axis in meters.\n * @param {Number} options.semiMinorAxis The length of the ellipse's semi-minor axis in meters.\n * @param {Ellipsoid} [options.ellipsoid=Ellipsoid.WGS84] The ellipsoid the ellipse will be on.\n * @param {Number} [options.rotation=0.0] The angle of rotation counter-clockwise from north.\n * @param {Number} [options.granularity=CesiumMath.RADIANS_PER_DEGREE] The angular distance between points on the ellipse in radians.\n * @param {Rectangle} [result] An object in which to store the result\n *\n * @returns {Rectangle} The result rectangle\n */\nEllipseGeometry.computeRectangle = function (options, result) {\n options = defaultValue(options, defaultValue.EMPTY_OBJECT);\n\n const center = options.center;\n const ellipsoid = defaultValue(options.ellipsoid, Ellipsoid.WGS84);\n const semiMajorAxis = options.semiMajorAxis;\n const semiMinorAxis = options.semiMinorAxis;\n const granularity = defaultValue(\n options.granularity,\n CesiumMath.RADIANS_PER_DEGREE\n );\n const rotation = defaultValue(options.rotation, 0.0);\n\n //>>includeStart('debug', pragmas.debug);\n Check.defined(\"options.center\", center);\n Check.typeOf.number(\"options.semiMajorAxis\", semiMajorAxis);\n Check.typeOf.number(\"options.semiMinorAxis\", semiMinorAxis);\n if (semiMajorAxis < semiMinorAxis) {\n throw new DeveloperError(\n \"semiMajorAxis must be greater than or equal to the semiMinorAxis.\"\n );\n }\n if (granularity <= 0.0) {\n throw new DeveloperError(\"granularity must be greater than zero.\");\n }\n //>>includeEnd('debug');\n\n return computeRectangle(\n center,\n semiMajorAxis,\n semiMinorAxis,\n rotation,\n granularity,\n ellipsoid,\n result\n );\n};\n\n/**\n * Computes the geometric representation of a ellipse on an ellipsoid, including its vertices, indices, and a bounding sphere.\n *\n * @param {EllipseGeometry} ellipseGeometry A description of the ellipse.\n * @returns {Geometry|undefined} The computed vertices and indices.\n */\nEllipseGeometry.createGeometry = function (ellipseGeometry) {\n if (\n ellipseGeometry._semiMajorAxis <= 0.0 ||\n ellipseGeometry._semiMinorAxis <= 0.0\n ) {\n return;\n }\n\n const height = ellipseGeometry._height;\n const extrudedHeight = ellipseGeometry._extrudedHeight;\n const extrude = !CesiumMath.equalsEpsilon(\n height,\n extrudedHeight,\n 0,\n CesiumMath.EPSILON2\n );\n\n ellipseGeometry._center = ellipseGeometry._ellipsoid.scaleToGeodeticSurface(\n ellipseGeometry._center,\n ellipseGeometry._center\n );\n const options = {\n center: ellipseGeometry._center,\n semiMajorAxis: ellipseGeometry._semiMajorAxis,\n semiMinorAxis: ellipseGeometry._semiMinorAxis,\n ellipsoid: ellipseGeometry._ellipsoid,\n rotation: ellipseGeometry._rotation,\n height: height,\n granularity: ellipseGeometry._granularity,\n vertexFormat: ellipseGeometry._vertexFormat,\n stRotation: ellipseGeometry._stRotation,\n };\n let geometry;\n if (extrude) {\n options.extrudedHeight = extrudedHeight;\n options.shadowVolume = ellipseGeometry._shadowVolume;\n options.offsetAttribute = ellipseGeometry._offsetAttribute;\n geometry = computeExtrudedEllipse(options);\n } else {\n geometry = computeEllipse(options);\n\n if (defined(ellipseGeometry._offsetAttribute)) {\n const length = geometry.attributes.position.values.length;\n const applyOffset = new Uint8Array(length / 3);\n const offsetValue =\n ellipseGeometry._offsetAttribute === GeometryOffsetAttribute.NONE\n ? 0\n : 1;\n arrayFill(applyOffset, offsetValue);\n geometry.attributes.applyOffset = new GeometryAttribute({\n componentDatatype: ComponentDatatype.UNSIGNED_BYTE,\n componentsPerAttribute: 1,\n values: applyOffset,\n });\n }\n }\n\n return new Geometry({\n attributes: geometry.attributes,\n indices: geometry.indices,\n primitiveType: PrimitiveType.TRIANGLES,\n boundingSphere: geometry.boundingSphere,\n offsetAttribute: ellipseGeometry._offsetAttribute,\n });\n};\n\n/**\n * @private\n */\nEllipseGeometry.createShadowVolume = function (\n ellipseGeometry,\n minHeightFunc,\n maxHeightFunc\n) {\n const granularity = ellipseGeometry._granularity;\n const ellipsoid = ellipseGeometry._ellipsoid;\n\n const minHeight = minHeightFunc(granularity, ellipsoid);\n const maxHeight = maxHeightFunc(granularity, ellipsoid);\n\n return new EllipseGeometry({\n center: ellipseGeometry._center,\n semiMajorAxis: ellipseGeometry._semiMajorAxis,\n semiMinorAxis: ellipseGeometry._semiMinorAxis,\n ellipsoid: ellipsoid,\n rotation: ellipseGeometry._rotation,\n stRotation: ellipseGeometry._stRotation,\n granularity: granularity,\n extrudedHeight: minHeight,\n height: maxHeight,\n vertexFormat: VertexFormat.POSITION_ONLY,\n shadowVolume: true,\n });\n};\n\nfunction textureCoordinateRotationPoints(ellipseGeometry) {\n const stRotation = -ellipseGeometry._stRotation;\n if (stRotation === 0.0) {\n return [0, 0, 0, 1, 1, 0];\n }\n\n const cep = EllipseGeometryLibrary.computeEllipsePositions(\n {\n center: ellipseGeometry._center,\n semiMajorAxis: ellipseGeometry._semiMajorAxis,\n semiMinorAxis: ellipseGeometry._semiMinorAxis,\n rotation: ellipseGeometry._rotation,\n granularity: ellipseGeometry._granularity,\n },\n false,\n true\n );\n const positionsFlat = cep.outerPositions;\n const positionsCount = positionsFlat.length / 3;\n const positions = new Array(positionsCount);\n for (let i = 0; i < positionsCount; ++i) {\n positions[i] = Cartesian3.fromArray(positionsFlat, i * 3);\n }\n\n const ellipsoid = ellipseGeometry._ellipsoid;\n const boundingRectangle = ellipseGeometry.rectangle;\n return Geometry._textureCoordinateRotationPoints(\n positions,\n stRotation,\n ellipsoid,\n boundingRectangle\n );\n}\n\nObject.defineProperties(EllipseGeometry.prototype, {\n /**\n * @private\n */\n rectangle: {\n get: function () {\n if (!defined(this._rectangle)) {\n this._rectangle = computeRectangle(\n this._center,\n this._semiMajorAxis,\n this._semiMinorAxis,\n this._rotation,\n this._granularity,\n this._ellipsoid\n );\n }\n return this._rectangle;\n },\n },\n /**\n * For remapping texture coordinates when rendering EllipseGeometries as GroundPrimitives.\n * @private\n */\n textureCoordinateRotationPoints: {\n get: function () {\n if (!defined(this._textureCoordinateRotationPoints)) {\n this._textureCoordinateRotationPoints = textureCoordinateRotationPoints(\n this\n );\n }\n return this._textureCoordinateRotationPoints;\n },\n },\n});\nexport default EllipseGeometry;\n"],"names":["Cartesian3","Cartesian2","Matrix3","Quaternion","Cartographic","GeographicProjection","GeometryAttributes","EllipseGeometryLibrary","GeometryAttribute","ComponentDatatype","defined","GeometryOffsetAttribute","arrayFill","BoundingSphere","IndexDatatype","Geometry","PrimitiveType","GeometryPipeline","GeometryInstance","Rectangle","CesiumMath","defaultValue","Ellipsoid","VertexFormat","Check","DeveloperError"],"mappings":"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"} |