{"version":3,"file":"createRectangleGeometry.js","sources":["../../../../Source/Core/RectangleGeometry.js","../../../../Source/WorkersES6/createRectangleGeometry.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 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 GeometryOffsetAttribute from \"./GeometryOffsetAttribute.js\";\nimport GeometryPipeline from \"./GeometryPipeline.js\";\nimport IndexDatatype from \"./IndexDatatype.js\";\nimport CesiumMath from \"./Math.js\";\nimport Matrix2 from \"./Matrix2.js\";\nimport Matrix3 from \"./Matrix3.js\";\nimport PolygonPipeline from \"./PolygonPipeline.js\";\nimport PrimitiveType from \"./PrimitiveType.js\";\nimport Quaternion from \"./Quaternion.js\";\nimport Rectangle from \"./Rectangle.js\";\nimport RectangleGeometryLibrary from \"./RectangleGeometryLibrary.js\";\nimport VertexFormat from \"./VertexFormat.js\";\n\nconst positionScratch = new Cartesian3();\nconst normalScratch = new Cartesian3();\nconst tangentScratch = new Cartesian3();\nconst bitangentScratch = new Cartesian3();\nconst rectangleScratch = new Rectangle();\nconst stScratch = new Cartesian2();\nconst bottomBoundingSphere = new BoundingSphere();\nconst topBoundingSphere = new BoundingSphere();\n\nfunction createAttributes(vertexFormat, attributes) {\n const geo = new Geometry({\n attributes: new GeometryAttributes(),\n primitiveType: PrimitiveType.TRIANGLES,\n });\n\n geo.attributes.position = new GeometryAttribute({\n componentDatatype: ComponentDatatype.DOUBLE,\n componentsPerAttribute: 3,\n values: attributes.positions,\n });\n if (vertexFormat.normal) {\n geo.attributes.normal = new GeometryAttribute({\n componentDatatype: ComponentDatatype.FLOAT,\n componentsPerAttribute: 3,\n values: attributes.normals,\n });\n }\n if (vertexFormat.tangent) {\n geo.attributes.tangent = new GeometryAttribute({\n componentDatatype: ComponentDatatype.FLOAT,\n componentsPerAttribute: 3,\n values: attributes.tangents,\n });\n }\n if (vertexFormat.bitangent) {\n geo.attributes.bitangent = new GeometryAttribute({\n componentDatatype: ComponentDatatype.FLOAT,\n componentsPerAttribute: 3,\n values: attributes.bitangents,\n });\n }\n return geo;\n}\n\nfunction calculateAttributes(\n positions,\n vertexFormat,\n ellipsoid,\n tangentRotationMatrix\n) {\n const length = positions.length;\n\n const normals = vertexFormat.normal ? new Float32Array(length) : undefined;\n const tangents = vertexFormat.tangent ? new Float32Array(length) : undefined;\n const bitangents = vertexFormat.bitangent\n ? new Float32Array(length)\n : undefined;\n\n let attrIndex = 0;\n const bitangent = bitangentScratch;\n const tangent = tangentScratch;\n let normal = normalScratch;\n if (vertexFormat.normal || vertexFormat.tangent || vertexFormat.bitangent) {\n for (let i = 0; i < length; i += 3) {\n const p = Cartesian3.fromArray(positions, i, positionScratch);\n const attrIndex1 = attrIndex + 1;\n const attrIndex2 = attrIndex + 2;\n\n normal = ellipsoid.geodeticSurfaceNormal(p, normal);\n if (vertexFormat.tangent || vertexFormat.bitangent) {\n Cartesian3.cross(Cartesian3.UNIT_Z, normal, tangent);\n Matrix3.multiplyByVector(tangentRotationMatrix, tangent, tangent);\n Cartesian3.normalize(tangent, tangent);\n\n if (vertexFormat.bitangent) {\n Cartesian3.normalize(\n Cartesian3.cross(normal, tangent, bitangent),\n bitangent\n );\n }\n }\n\n if (vertexFormat.normal) {\n normals[attrIndex] = normal.x;\n normals[attrIndex1] = normal.y;\n normals[attrIndex2] = normal.z;\n }\n if (vertexFormat.tangent) {\n tangents[attrIndex] = tangent.x;\n tangents[attrIndex1] = tangent.y;\n tangents[attrIndex2] = tangent.z;\n }\n if (vertexFormat.bitangent) {\n bitangents[attrIndex] = bitangent.x;\n bitangents[attrIndex1] = bitangent.y;\n bitangents[attrIndex2] = bitangent.z;\n }\n attrIndex += 3;\n }\n }\n return createAttributes(vertexFormat, {\n positions: positions,\n normals: normals,\n tangents: tangents,\n bitangents: bitangents,\n });\n}\n\nconst v1Scratch = new Cartesian3();\nconst v2Scratch = new Cartesian3();\n\nfunction calculateAttributesWall(positions, vertexFormat, ellipsoid) {\n const length = positions.length;\n\n const normals = vertexFormat.normal ? new Float32Array(length) : undefined;\n const tangents = vertexFormat.tangent ? new Float32Array(length) : undefined;\n const bitangents = vertexFormat.bitangent\n ? new Float32Array(length)\n : undefined;\n\n let normalIndex = 0;\n let tangentIndex = 0;\n let bitangentIndex = 0;\n let recomputeNormal = true;\n\n let bitangent = bitangentScratch;\n let tangent = tangentScratch;\n let normal = normalScratch;\n if (vertexFormat.normal || vertexFormat.tangent || vertexFormat.bitangent) {\n for (let i = 0; i < length; i += 6) {\n const p = Cartesian3.fromArray(positions, i, positionScratch);\n const p1 = Cartesian3.fromArray(positions, (i + 6) % length, v1Scratch);\n if (recomputeNormal) {\n const p2 = Cartesian3.fromArray(positions, (i + 3) % length, v2Scratch);\n Cartesian3.subtract(p1, p, p1);\n Cartesian3.subtract(p2, p, p2);\n normal = Cartesian3.normalize(Cartesian3.cross(p2, p1, normal), normal);\n recomputeNormal = false;\n }\n\n if (Cartesian3.equalsEpsilon(p1, p, CesiumMath.EPSILON10)) {\n // if we've reached a corner\n recomputeNormal = true;\n }\n\n if (vertexFormat.tangent || vertexFormat.bitangent) {\n bitangent = ellipsoid.geodeticSurfaceNormal(p, bitangent);\n if (vertexFormat.tangent) {\n tangent = Cartesian3.normalize(\n Cartesian3.cross(bitangent, normal, tangent),\n tangent\n );\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 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 return createAttributes(vertexFormat, {\n positions: positions,\n normals: normals,\n tangents: tangents,\n bitangents: bitangents,\n });\n}\n\nfunction constructRectangle(rectangleGeometry, computedOptions) {\n const vertexFormat = rectangleGeometry._vertexFormat;\n const ellipsoid = rectangleGeometry._ellipsoid;\n const height = computedOptions.height;\n const width = computedOptions.width;\n const northCap = computedOptions.northCap;\n const southCap = computedOptions.southCap;\n\n let rowStart = 0;\n let rowEnd = height;\n let rowHeight = height;\n let size = 0;\n if (northCap) {\n rowStart = 1;\n rowHeight -= 1;\n size += 1;\n }\n if (southCap) {\n rowEnd -= 1;\n rowHeight -= 1;\n size += 1;\n }\n size += width * rowHeight;\n\n const positions = vertexFormat.position\n ? new Float64Array(size * 3)\n : undefined;\n const textureCoordinates = vertexFormat.st\n ? new Float32Array(size * 2)\n : undefined;\n\n let posIndex = 0;\n let stIndex = 0;\n\n const position = positionScratch;\n const st = stScratch;\n\n let minX = Number.MAX_VALUE;\n let minY = Number.MAX_VALUE;\n let maxX = -Number.MAX_VALUE;\n let maxY = -Number.MAX_VALUE;\n\n for (let row = rowStart; row < rowEnd; ++row) {\n for (let col = 0; col < width; ++col) {\n RectangleGeometryLibrary.computePosition(\n computedOptions,\n ellipsoid,\n vertexFormat.st,\n row,\n col,\n position,\n st\n );\n\n positions[posIndex++] = position.x;\n positions[posIndex++] = position.y;\n positions[posIndex++] = position.z;\n\n if (vertexFormat.st) {\n textureCoordinates[stIndex++] = st.x;\n textureCoordinates[stIndex++] = st.y;\n\n minX = Math.min(minX, st.x);\n minY = Math.min(minY, st.y);\n maxX = Math.max(maxX, st.x);\n maxY = Math.max(maxY, st.y);\n }\n }\n }\n if (northCap) {\n RectangleGeometryLibrary.computePosition(\n computedOptions,\n ellipsoid,\n vertexFormat.st,\n 0,\n 0,\n position,\n st\n );\n\n positions[posIndex++] = position.x;\n positions[posIndex++] = position.y;\n positions[posIndex++] = position.z;\n\n if (vertexFormat.st) {\n textureCoordinates[stIndex++] = st.x;\n textureCoordinates[stIndex++] = st.y;\n\n minX = st.x;\n minY = st.y;\n maxX = st.x;\n maxY = st.y;\n }\n }\n if (southCap) {\n RectangleGeometryLibrary.computePosition(\n computedOptions,\n ellipsoid,\n vertexFormat.st,\n height - 1,\n 0,\n position,\n st\n );\n\n positions[posIndex++] = position.x;\n positions[posIndex++] = position.y;\n positions[posIndex] = position.z;\n\n if (vertexFormat.st) {\n textureCoordinates[stIndex++] = st.x;\n textureCoordinates[stIndex] = st.y;\n\n minX = Math.min(minX, st.x);\n minY = Math.min(minY, st.y);\n maxX = Math.max(maxX, st.x);\n maxY = Math.max(maxY, st.y);\n }\n }\n\n if (\n vertexFormat.st &&\n (minX < 0.0 || minY < 0.0 || maxX > 1.0 || maxY > 1.0)\n ) {\n for (let k = 0; k < textureCoordinates.length; k += 2) {\n textureCoordinates[k] = (textureCoordinates[k] - minX) / (maxX - minX);\n textureCoordinates[k + 1] =\n (textureCoordinates[k + 1] - minY) / (maxY - minY);\n }\n }\n\n const geo = calculateAttributes(\n positions,\n vertexFormat,\n ellipsoid,\n computedOptions.tangentRotationMatrix\n );\n\n let indicesSize = 6 * (width - 1) * (rowHeight - 1);\n if (northCap) {\n indicesSize += 3 * (width - 1);\n }\n if (southCap) {\n indicesSize += 3 * (width - 1);\n }\n const indices = IndexDatatype.createTypedArray(size, indicesSize);\n let index = 0;\n let indicesIndex = 0;\n let i;\n for (i = 0; i < rowHeight - 1; ++i) {\n for (let j = 0; j < width - 1; ++j) {\n const upperLeft = index;\n const lowerLeft = upperLeft + width;\n const lowerRight = lowerLeft + 1;\n const upperRight = upperLeft + 1;\n indices[indicesIndex++] = upperLeft;\n indices[indicesIndex++] = lowerLeft;\n indices[indicesIndex++] = upperRight;\n indices[indicesIndex++] = upperRight;\n indices[indicesIndex++] = lowerLeft;\n indices[indicesIndex++] = lowerRight;\n ++index;\n }\n ++index;\n }\n if (northCap || southCap) {\n let northIndex = size - 1;\n const southIndex = size - 1;\n if (northCap && southCap) {\n northIndex = size - 2;\n }\n\n let p1;\n let p2;\n index = 0;\n\n if (northCap) {\n for (i = 0; i < width - 1; i++) {\n p1 = index;\n p2 = p1 + 1;\n indices[indicesIndex++] = northIndex;\n indices[indicesIndex++] = p1;\n indices[indicesIndex++] = p2;\n ++index;\n }\n }\n if (southCap) {\n index = (rowHeight - 1) * width;\n for (i = 0; i < width - 1; i++) {\n p1 = index;\n p2 = p1 + 1;\n indices[indicesIndex++] = p1;\n indices[indicesIndex++] = southIndex;\n indices[indicesIndex++] = p2;\n ++index;\n }\n }\n }\n\n geo.indices = indices;\n if (vertexFormat.st) {\n geo.attributes.st = new GeometryAttribute({\n componentDatatype: ComponentDatatype.FLOAT,\n componentsPerAttribute: 2,\n values: textureCoordinates,\n });\n }\n\n return geo;\n}\n\nfunction addWallPositions(\n wallPositions,\n posIndex,\n i,\n topPositions,\n bottomPositions\n) {\n wallPositions[posIndex++] = topPositions[i];\n wallPositions[posIndex++] = topPositions[i + 1];\n wallPositions[posIndex++] = topPositions[i + 2];\n wallPositions[posIndex++] = bottomPositions[i];\n wallPositions[posIndex++] = bottomPositions[i + 1];\n wallPositions[posIndex] = bottomPositions[i + 2];\n return wallPositions;\n}\n\nfunction addWallTextureCoordinates(wallTextures, stIndex, i, st) {\n wallTextures[stIndex++] = st[i];\n wallTextures[stIndex++] = st[i + 1];\n wallTextures[stIndex++] = st[i];\n wallTextures[stIndex] = st[i + 1];\n return wallTextures;\n}\n\nconst scratchVertexFormat = new VertexFormat();\n\nfunction constructExtrudedRectangle(rectangleGeometry, computedOptions) {\n const shadowVolume = rectangleGeometry._shadowVolume;\n const offsetAttributeValue = rectangleGeometry._offsetAttribute;\n const vertexFormat = rectangleGeometry._vertexFormat;\n const minHeight = rectangleGeometry._extrudedHeight;\n const maxHeight = rectangleGeometry._surfaceHeight;\n const ellipsoid = rectangleGeometry._ellipsoid;\n\n const height = computedOptions.height;\n const width = computedOptions.width;\n\n let i;\n\n if (shadowVolume) {\n const newVertexFormat = VertexFormat.clone(\n vertexFormat,\n scratchVertexFormat\n );\n newVertexFormat.normal = true;\n rectangleGeometry._vertexFormat = newVertexFormat;\n }\n\n const topBottomGeo = constructRectangle(rectangleGeometry, computedOptions);\n\n if (shadowVolume) {\n rectangleGeometry._vertexFormat = vertexFormat;\n }\n\n let topPositions = PolygonPipeline.scaleToGeodeticHeight(\n topBottomGeo.attributes.position.values,\n maxHeight,\n ellipsoid,\n false\n );\n topPositions = new Float64Array(topPositions);\n let length = topPositions.length;\n const newLength = length * 2;\n const positions = new Float64Array(newLength);\n positions.set(topPositions);\n const bottomPositions = PolygonPipeline.scaleToGeodeticHeight(\n topBottomGeo.attributes.position.values,\n minHeight,\n ellipsoid\n );\n positions.set(bottomPositions, length);\n topBottomGeo.attributes.position.values = positions;\n\n const normals = vertexFormat.normal ? new Float32Array(newLength) : undefined;\n const tangents = vertexFormat.tangent\n ? new Float32Array(newLength)\n : undefined;\n const bitangents = vertexFormat.bitangent\n ? new Float32Array(newLength)\n : undefined;\n const textures = vertexFormat.st\n ? new Float32Array((newLength / 3) * 2)\n : undefined;\n let topSt;\n let topNormals;\n if (vertexFormat.normal) {\n topNormals = topBottomGeo.attributes.normal.values;\n normals.set(topNormals);\n for (i = 0; i < length; i++) {\n topNormals[i] = -topNormals[i];\n }\n normals.set(topNormals, length);\n topBottomGeo.attributes.normal.values = normals;\n }\n if (shadowVolume) {\n topNormals = topBottomGeo.attributes.normal.values;\n if (!vertexFormat.normal) {\n topBottomGeo.attributes.normal = undefined;\n }\n const extrudeNormals = new Float32Array(newLength);\n for (i = 0; i < length; i++) {\n topNormals[i] = -topNormals[i];\n }\n extrudeNormals.set(topNormals, length); //only get normals for bottom layer that's going to be pushed down\n topBottomGeo.attributes.extrudeDirection = new GeometryAttribute({\n componentDatatype: ComponentDatatype.FLOAT,\n componentsPerAttribute: 3,\n values: extrudeNormals,\n });\n }\n\n let offsetValue;\n const hasOffsets = defined(offsetAttributeValue);\n if (hasOffsets) {\n const size = (length / 3) * 2;\n let offsetAttribute = new Uint8Array(size);\n if (offsetAttributeValue === GeometryOffsetAttribute.TOP) {\n offsetAttribute = arrayFill(offsetAttribute, 1, 0, size / 2);\n } else {\n offsetValue =\n offsetAttributeValue === GeometryOffsetAttribute.NONE ? 0 : 1;\n offsetAttribute = arrayFill(offsetAttribute, offsetValue);\n }\n\n topBottomGeo.attributes.applyOffset = new GeometryAttribute({\n componentDatatype: ComponentDatatype.UNSIGNED_BYTE,\n componentsPerAttribute: 1,\n values: offsetAttribute,\n });\n }\n\n if (vertexFormat.tangent) {\n const topTangents = topBottomGeo.attributes.tangent.values;\n tangents.set(topTangents);\n for (i = 0; i < length; i++) {\n topTangents[i] = -topTangents[i];\n }\n tangents.set(topTangents, length);\n topBottomGeo.attributes.tangent.values = tangents;\n }\n if (vertexFormat.bitangent) {\n const topBitangents = topBottomGeo.attributes.bitangent.values;\n bitangents.set(topBitangents);\n bitangents.set(topBitangents, length);\n topBottomGeo.attributes.bitangent.values = bitangents;\n }\n if (vertexFormat.st) {\n topSt = topBottomGeo.attributes.st.values;\n textures.set(topSt);\n textures.set(topSt, (length / 3) * 2);\n topBottomGeo.attributes.st.values = textures;\n }\n\n const indices = topBottomGeo.indices;\n const indicesLength = indices.length;\n const posLength = length / 3;\n const newIndices = IndexDatatype.createTypedArray(\n newLength / 3,\n indicesLength * 2\n );\n newIndices.set(indices);\n for (i = 0; i < indicesLength; i += 3) {\n newIndices[i + indicesLength] = indices[i + 2] + posLength;\n newIndices[i + 1 + indicesLength] = indices[i + 1] + posLength;\n newIndices[i + 2 + indicesLength] = indices[i] + posLength;\n }\n topBottomGeo.indices = newIndices;\n\n const northCap = computedOptions.northCap;\n const southCap = computedOptions.southCap;\n\n let rowHeight = height;\n let widthMultiplier = 2;\n let perimeterPositions = 0;\n let corners = 4;\n let dupliateCorners = 4;\n if (northCap) {\n widthMultiplier -= 1;\n rowHeight -= 1;\n perimeterPositions += 1;\n corners -= 2;\n dupliateCorners -= 1;\n }\n if (southCap) {\n widthMultiplier -= 1;\n rowHeight -= 1;\n perimeterPositions += 1;\n corners -= 2;\n dupliateCorners -= 1;\n }\n perimeterPositions += widthMultiplier * width + 2 * rowHeight - corners;\n\n const wallCount = (perimeterPositions + dupliateCorners) * 2;\n\n let wallPositions = new Float64Array(wallCount * 3);\n const wallExtrudeNormals = shadowVolume\n ? new Float32Array(wallCount * 3)\n : undefined;\n let wallOffsetAttribute = hasOffsets ? new Uint8Array(wallCount) : undefined;\n let wallTextures = vertexFormat.st\n ? new Float32Array(wallCount * 2)\n : undefined;\n\n const computeTopOffsets =\n offsetAttributeValue === GeometryOffsetAttribute.TOP;\n if (hasOffsets && !computeTopOffsets) {\n offsetValue = offsetAttributeValue === GeometryOffsetAttribute.ALL ? 1 : 0;\n wallOffsetAttribute = arrayFill(wallOffsetAttribute, offsetValue);\n }\n\n let posIndex = 0;\n let stIndex = 0;\n let extrudeNormalIndex = 0;\n let wallOffsetIndex = 0;\n const area = width * rowHeight;\n let threeI;\n for (i = 0; i < area; i += width) {\n threeI = i * 3;\n wallPositions = addWallPositions(\n wallPositions,\n posIndex,\n threeI,\n topPositions,\n bottomPositions\n );\n posIndex += 6;\n if (vertexFormat.st) {\n wallTextures = addWallTextureCoordinates(\n wallTextures,\n stIndex,\n i * 2,\n topSt\n );\n stIndex += 4;\n }\n if (shadowVolume) {\n extrudeNormalIndex += 3;\n wallExtrudeNormals[extrudeNormalIndex++] = topNormals[threeI];\n wallExtrudeNormals[extrudeNormalIndex++] = topNormals[threeI + 1];\n wallExtrudeNormals[extrudeNormalIndex++] = topNormals[threeI + 2];\n }\n if (computeTopOffsets) {\n wallOffsetAttribute[wallOffsetIndex++] = 1;\n wallOffsetIndex += 1;\n }\n }\n\n if (!southCap) {\n for (i = area - width; i < area; i++) {\n threeI = i * 3;\n wallPositions = addWallPositions(\n wallPositions,\n posIndex,\n threeI,\n topPositions,\n bottomPositions\n );\n posIndex += 6;\n if (vertexFormat.st) {\n wallTextures = addWallTextureCoordinates(\n wallTextures,\n stIndex,\n i * 2,\n topSt\n );\n stIndex += 4;\n }\n if (shadowVolume) {\n extrudeNormalIndex += 3;\n wallExtrudeNormals[extrudeNormalIndex++] = topNormals[threeI];\n wallExtrudeNormals[extrudeNormalIndex++] = topNormals[threeI + 1];\n wallExtrudeNormals[extrudeNormalIndex++] = topNormals[threeI + 2];\n }\n if (computeTopOffsets) {\n wallOffsetAttribute[wallOffsetIndex++] = 1;\n wallOffsetIndex += 1;\n }\n }\n } else {\n const southIndex = northCap ? area + 1 : area;\n threeI = southIndex * 3;\n\n for (i = 0; i < 2; i++) {\n // duplicate corner points\n wallPositions = addWallPositions(\n wallPositions,\n posIndex,\n threeI,\n topPositions,\n bottomPositions\n );\n posIndex += 6;\n if (vertexFormat.st) {\n wallTextures = addWallTextureCoordinates(\n wallTextures,\n stIndex,\n southIndex * 2,\n topSt\n );\n stIndex += 4;\n }\n if (shadowVolume) {\n extrudeNormalIndex += 3;\n wallExtrudeNormals[extrudeNormalIndex++] = topNormals[threeI];\n wallExtrudeNormals[extrudeNormalIndex++] = topNormals[threeI + 1];\n wallExtrudeNormals[extrudeNormalIndex++] = topNormals[threeI + 2];\n }\n if (computeTopOffsets) {\n wallOffsetAttribute[wallOffsetIndex++] = 1;\n wallOffsetIndex += 1;\n }\n }\n }\n\n for (i = area - 1; i > 0; i -= width) {\n threeI = i * 3;\n wallPositions = addWallPositions(\n wallPositions,\n posIndex,\n threeI,\n topPositions,\n bottomPositions\n );\n posIndex += 6;\n if (vertexFormat.st) {\n wallTextures = addWallTextureCoordinates(\n wallTextures,\n stIndex,\n i * 2,\n topSt\n );\n stIndex += 4;\n }\n if (shadowVolume) {\n extrudeNormalIndex += 3;\n wallExtrudeNormals[extrudeNormalIndex++] = topNormals[threeI];\n wallExtrudeNormals[extrudeNormalIndex++] = topNormals[threeI + 1];\n wallExtrudeNormals[extrudeNormalIndex++] = topNormals[threeI + 2];\n }\n if (computeTopOffsets) {\n wallOffsetAttribute[wallOffsetIndex++] = 1;\n wallOffsetIndex += 1;\n }\n }\n\n if (!northCap) {\n for (i = width - 1; i >= 0; i--) {\n threeI = i * 3;\n wallPositions = addWallPositions(\n wallPositions,\n posIndex,\n threeI,\n topPositions,\n bottomPositions\n );\n posIndex += 6;\n if (vertexFormat.st) {\n wallTextures = addWallTextureCoordinates(\n wallTextures,\n stIndex,\n i * 2,\n topSt\n );\n stIndex += 4;\n }\n if (shadowVolume) {\n extrudeNormalIndex += 3;\n wallExtrudeNormals[extrudeNormalIndex++] = topNormals[threeI];\n wallExtrudeNormals[extrudeNormalIndex++] = topNormals[threeI + 1];\n wallExtrudeNormals[extrudeNormalIndex++] = topNormals[threeI + 2];\n }\n if (computeTopOffsets) {\n wallOffsetAttribute[wallOffsetIndex++] = 1;\n wallOffsetIndex += 1;\n }\n }\n } else {\n const northIndex = area;\n threeI = northIndex * 3;\n\n for (i = 0; i < 2; i++) {\n // duplicate corner points\n wallPositions = addWallPositions(\n wallPositions,\n posIndex,\n threeI,\n topPositions,\n bottomPositions\n );\n posIndex += 6;\n if (vertexFormat.st) {\n wallTextures = addWallTextureCoordinates(\n wallTextures,\n stIndex,\n northIndex * 2,\n topSt\n );\n stIndex += 4;\n }\n if (shadowVolume) {\n extrudeNormalIndex += 3;\n wallExtrudeNormals[extrudeNormalIndex++] = topNormals[threeI];\n wallExtrudeNormals[extrudeNormalIndex++] = topNormals[threeI + 1];\n wallExtrudeNormals[extrudeNormalIndex++] = topNormals[threeI + 2];\n }\n if (computeTopOffsets) {\n wallOffsetAttribute[wallOffsetIndex++] = 1;\n wallOffsetIndex += 1;\n }\n }\n }\n\n let geo = calculateAttributesWall(wallPositions, vertexFormat, ellipsoid);\n\n if (vertexFormat.st) {\n geo.attributes.st = new GeometryAttribute({\n componentDatatype: ComponentDatatype.FLOAT,\n componentsPerAttribute: 2,\n values: wallTextures,\n });\n }\n if (shadowVolume) {\n geo.attributes.extrudeDirection = new GeometryAttribute({\n componentDatatype: ComponentDatatype.FLOAT,\n componentsPerAttribute: 3,\n values: wallExtrudeNormals,\n });\n }\n if (hasOffsets) {\n geo.attributes.applyOffset = new GeometryAttribute({\n componentDatatype: ComponentDatatype.UNSIGNED_BYTE,\n componentsPerAttribute: 1,\n values: wallOffsetAttribute,\n });\n }\n\n const wallIndices = IndexDatatype.createTypedArray(\n wallCount,\n perimeterPositions * 6\n );\n\n let upperLeft;\n let lowerLeft;\n let lowerRight;\n let upperRight;\n length = wallPositions.length / 3;\n let index = 0;\n for (i = 0; i < length - 1; i += 2) {\n upperLeft = i;\n upperRight = (upperLeft + 2) % length;\n const p1 = Cartesian3.fromArray(wallPositions, upperLeft * 3, v1Scratch);\n const p2 = Cartesian3.fromArray(wallPositions, upperRight * 3, v2Scratch);\n if (Cartesian3.equalsEpsilon(p1, p2, CesiumMath.EPSILON10)) {\n continue;\n }\n lowerLeft = (upperLeft + 1) % length;\n lowerRight = (lowerLeft + 2) % length;\n wallIndices[index++] = upperLeft;\n wallIndices[index++] = lowerLeft;\n wallIndices[index++] = upperRight;\n wallIndices[index++] = upperRight;\n wallIndices[index++] = lowerLeft;\n wallIndices[index++] = lowerRight;\n }\n\n geo.indices = wallIndices;\n\n geo = GeometryPipeline.combineInstances([\n new GeometryInstance({\n geometry: topBottomGeo,\n }),\n new GeometryInstance({\n geometry: geo,\n }),\n ]);\n\n return geo[0];\n}\n\nconst scratchRectanglePoints = [\n new Cartesian3(),\n new Cartesian3(),\n new Cartesian3(),\n new Cartesian3(),\n];\nconst nwScratch = new Cartographic();\nconst stNwScratch = new Cartographic();\nfunction computeRectangle(rectangle, granularity, rotation, ellipsoid, result) {\n if (rotation === 0.0) {\n return Rectangle.clone(rectangle, result);\n }\n\n const computedOptions = RectangleGeometryLibrary.computeOptions(\n rectangle,\n granularity,\n rotation,\n 0,\n rectangleScratch,\n nwScratch\n );\n\n const height = computedOptions.height;\n const width = computedOptions.width;\n\n const positions = scratchRectanglePoints;\n RectangleGeometryLibrary.computePosition(\n computedOptions,\n ellipsoid,\n false,\n 0,\n 0,\n positions[0]\n );\n RectangleGeometryLibrary.computePosition(\n computedOptions,\n ellipsoid,\n false,\n 0,\n width - 1,\n positions[1]\n );\n RectangleGeometryLibrary.computePosition(\n computedOptions,\n ellipsoid,\n false,\n height - 1,\n 0,\n positions[2]\n );\n RectangleGeometryLibrary.computePosition(\n computedOptions,\n ellipsoid,\n false,\n height - 1,\n width - 1,\n positions[3]\n );\n\n return Rectangle.fromCartesianArray(positions, ellipsoid, result);\n}\n\n/**\n * A description of a cartographic rectangle on an ellipsoid centered at the origin. Rectangle geometry can be rendered with both {@link Primitive} and {@link GroundPrimitive}.\n *\n * @alias RectangleGeometry\n * @constructor\n *\n * @param {Object} options Object with the following properties:\n * @param {Rectangle} options.rectangle A cartographic rectangle with north, south, east and west properties in radians.\n * @param {VertexFormat} [options.vertexFormat=VertexFormat.DEFAULT] The vertex attributes to be computed.\n * @param {Ellipsoid} [options.ellipsoid=Ellipsoid.WGS84] The ellipsoid on which the rectangle lies.\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.height=0.0] The distance in meters between the rectangle and the ellipsoid surface.\n * @param {Number} [options.rotation=0.0] The rotation of the rectangle, in radians. A positive rotation is counter-clockwise.\n * @param {Number} [options.stRotation=0.0] The rotation of the texture coordinates, in radians. A positive rotation is counter-clockwise.\n * @param {Number} [options.extrudedHeight] The distance in meters between the rectangle's extruded face and the ellipsoid surface.\n *\n * @exception {DeveloperError} options.rectangle.north must be in the interval [-Pi/2, Pi/2].\n * @exception {DeveloperError} options.rectangle.south must be in the interval [-Pi/2, Pi/2].\n * @exception {DeveloperError} options.rectangle.east must be in the interval [-Pi, Pi].\n * @exception {DeveloperError} options.rectangle.west must be in the interval [-Pi, Pi].\n * @exception {DeveloperError} options.rectangle.north must be greater than options.rectangle.south.\n *\n * @see RectangleGeometry#createGeometry\n *\n * @demo {@link https://sandcastle.cesium.com/index.html?src=Rectangle.html|Cesium Sandcastle Rectangle Demo}\n *\n * @example\n * // 1. create a rectangle\n * const rectangle = new Cesium.RectangleGeometry({\n * ellipsoid : Cesium.Ellipsoid.WGS84,\n * rectangle : Cesium.Rectangle.fromDegrees(-80.0, 39.0, -74.0, 42.0),\n * height : 10000.0\n * });\n * const geometry = Cesium.RectangleGeometry.createGeometry(rectangle);\n *\n * // 2. create an extruded rectangle without a top\n * const rectangle = new Cesium.RectangleGeometry({\n * ellipsoid : Cesium.Ellipsoid.WGS84,\n * rectangle : Cesium.Rectangle.fromDegrees(-80.0, 39.0, -74.0, 42.0),\n * height : 10000.0,\n * extrudedHeight: 300000\n * });\n * const geometry = Cesium.RectangleGeometry.createGeometry(rectangle);\n */\nfunction RectangleGeometry(options) {\n options = defaultValue(options, defaultValue.EMPTY_OBJECT);\n\n const rectangle = options.rectangle;\n\n //>>includeStart('debug', pragmas.debug);\n Check.typeOf.object(\"rectangle\", rectangle);\n Rectangle.validate(rectangle);\n if (rectangle.north < rectangle.south) {\n throw new DeveloperError(\n \"options.rectangle.north must be greater than or equal to options.rectangle.south\"\n );\n }\n //>>includeEnd('debug');\n\n const height = defaultValue(options.height, 0.0);\n const extrudedHeight = defaultValue(options.extrudedHeight, height);\n\n this._rectangle = Rectangle.clone(rectangle);\n this._granularity = defaultValue(\n options.granularity,\n CesiumMath.RADIANS_PER_DEGREE\n );\n this._ellipsoid = Ellipsoid.clone(\n defaultValue(options.ellipsoid, Ellipsoid.WGS84)\n );\n this._surfaceHeight = Math.max(height, extrudedHeight);\n this._rotation = defaultValue(options.rotation, 0.0);\n this._stRotation = defaultValue(options.stRotation, 0.0);\n this._vertexFormat = VertexFormat.clone(\n defaultValue(options.vertexFormat, VertexFormat.DEFAULT)\n );\n this._extrudedHeight = Math.min(height, extrudedHeight);\n this._shadowVolume = defaultValue(options.shadowVolume, false);\n this._workerName = \"createRectangleGeometry\";\n this._offsetAttribute = options.offsetAttribute;\n this._rotatedRectangle = undefined;\n\n this._textureCoordinateRotationPoints = undefined;\n}\n\n/**\n * The number of elements used to pack the object into an array.\n * @type {Number}\n */\nRectangleGeometry.packedLength =\n Rectangle.packedLength +\n Ellipsoid.packedLength +\n VertexFormat.packedLength +\n 7;\n\n/**\n * Stores the provided instance into the provided array.\n *\n * @param {RectangleGeometry} 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 */\nRectangleGeometry.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 Rectangle.pack(value._rectangle, array, startingIndex);\n startingIndex += Rectangle.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._granularity;\n array[startingIndex++] = value._surfaceHeight;\n array[startingIndex++] = value._rotation;\n array[startingIndex++] = value._stRotation;\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 scratchRectangle = new Rectangle();\nconst scratchEllipsoid = Ellipsoid.clone(Ellipsoid.UNIT_SPHERE);\nconst scratchOptions = {\n rectangle: scratchRectangle,\n ellipsoid: scratchEllipsoid,\n vertexFormat: scratchVertexFormat,\n granularity: undefined,\n height: undefined,\n rotation: undefined,\n stRotation: 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 {RectangleGeometry} [result] The object into which to store the result.\n * @returns {RectangleGeometry} The modified result parameter or a new RectangleGeometry instance if one was not provided.\n */\nRectangleGeometry.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 rectangle = Rectangle.unpack(array, startingIndex, scratchRectangle);\n startingIndex += Rectangle.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 granularity = array[startingIndex++];\n const surfaceHeight = array[startingIndex++];\n const rotation = array[startingIndex++];\n const stRotation = 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.granularity = granularity;\n scratchOptions.height = surfaceHeight;\n scratchOptions.rotation = rotation;\n scratchOptions.stRotation = stRotation;\n scratchOptions.extrudedHeight = extrudedHeight;\n scratchOptions.shadowVolume = shadowVolume;\n scratchOptions.offsetAttribute =\n offsetAttribute === -1 ? undefined : offsetAttribute;\n\n return new RectangleGeometry(scratchOptions);\n }\n\n result._rectangle = Rectangle.clone(rectangle, result._rectangle);\n result._ellipsoid = Ellipsoid.clone(ellipsoid, result._ellipsoid);\n result._vertexFormat = VertexFormat.clone(vertexFormat, result._vertexFormat);\n result._granularity = granularity;\n result._surfaceHeight = surfaceHeight;\n result._rotation = rotation;\n result._stRotation = stRotation;\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 {Rectangle} options.rectangle A cartographic rectangle with north, south, east and west properties in radians.\n * @param {Ellipsoid} [options.ellipsoid=Ellipsoid.WGS84] The ellipsoid on which the rectangle lies.\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.rotation=0.0] The rotation of the rectangle, in radians. A positive rotation is counter-clockwise.\n * @param {Rectangle} [result] An object in which to store the result.\n *\n * @returns {Rectangle} The result rectangle\n */\nRectangleGeometry.computeRectangle = function (options, result) {\n options = defaultValue(options, defaultValue.EMPTY_OBJECT);\n\n const rectangle = options.rectangle;\n\n //>>includeStart('debug', pragmas.debug);\n Check.typeOf.object(\"rectangle\", rectangle);\n Rectangle.validate(rectangle);\n if (rectangle.north < rectangle.south) {\n throw new DeveloperError(\n \"options.rectangle.north must be greater than or equal to options.rectangle.south\"\n );\n }\n //>>includeEnd('debug');\n\n const granularity = defaultValue(\n options.granularity,\n CesiumMath.RADIANS_PER_DEGREE\n );\n const ellipsoid = defaultValue(options.ellipsoid, Ellipsoid.WGS84);\n const rotation = defaultValue(options.rotation, 0.0);\n\n return computeRectangle(rectangle, granularity, rotation, ellipsoid, result);\n};\n\nconst tangentRotationMatrixScratch = new Matrix3();\nconst quaternionScratch = new Quaternion();\nconst centerScratch = new Cartographic();\n/**\n * Computes the geometric representation of a rectangle, including its vertices, indices, and a bounding sphere.\n *\n * @param {RectangleGeometry} rectangleGeometry A description of the rectangle.\n * @returns {Geometry|undefined} The computed vertices and indices.\n *\n * @exception {DeveloperError} Rotated rectangle is invalid.\n */\nRectangleGeometry.createGeometry = function (rectangleGeometry) {\n if (\n CesiumMath.equalsEpsilon(\n rectangleGeometry._rectangle.north,\n rectangleGeometry._rectangle.south,\n CesiumMath.EPSILON10\n ) ||\n CesiumMath.equalsEpsilon(\n rectangleGeometry._rectangle.east,\n rectangleGeometry._rectangle.west,\n CesiumMath.EPSILON10\n )\n ) {\n return undefined;\n }\n\n let rectangle = rectangleGeometry._rectangle;\n const ellipsoid = rectangleGeometry._ellipsoid;\n const rotation = rectangleGeometry._rotation;\n const stRotation = rectangleGeometry._stRotation;\n const vertexFormat = rectangleGeometry._vertexFormat;\n\n const computedOptions = RectangleGeometryLibrary.computeOptions(\n rectangle,\n rectangleGeometry._granularity,\n rotation,\n stRotation,\n rectangleScratch,\n nwScratch,\n stNwScratch\n );\n\n const tangentRotationMatrix = tangentRotationMatrixScratch;\n if (stRotation !== 0 || rotation !== 0) {\n const center = Rectangle.center(rectangle, centerScratch);\n const axis = ellipsoid.geodeticSurfaceNormalCartographic(center, v1Scratch);\n Quaternion.fromAxisAngle(axis, -stRotation, quaternionScratch);\n Matrix3.fromQuaternion(quaternionScratch, tangentRotationMatrix);\n } else {\n Matrix3.clone(Matrix3.IDENTITY, tangentRotationMatrix);\n }\n\n const surfaceHeight = rectangleGeometry._surfaceHeight;\n const extrudedHeight = rectangleGeometry._extrudedHeight;\n const extrude = !CesiumMath.equalsEpsilon(\n surfaceHeight,\n extrudedHeight,\n 0,\n CesiumMath.EPSILON2\n );\n\n computedOptions.lonScalar = 1.0 / rectangleGeometry._rectangle.width;\n computedOptions.latScalar = 1.0 / rectangleGeometry._rectangle.height;\n computedOptions.tangentRotationMatrix = tangentRotationMatrix;\n\n let geometry;\n let boundingSphere;\n rectangle = rectangleGeometry._rectangle;\n if (extrude) {\n geometry = constructExtrudedRectangle(rectangleGeometry, computedOptions);\n const topBS = BoundingSphere.fromRectangle3D(\n rectangle,\n ellipsoid,\n surfaceHeight,\n topBoundingSphere\n );\n const bottomBS = BoundingSphere.fromRectangle3D(\n rectangle,\n ellipsoid,\n extrudedHeight,\n bottomBoundingSphere\n );\n boundingSphere = BoundingSphere.union(topBS, bottomBS);\n } else {\n geometry = constructRectangle(rectangleGeometry, computedOptions);\n geometry.attributes.position.values = PolygonPipeline.scaleToGeodeticHeight(\n geometry.attributes.position.values,\n surfaceHeight,\n ellipsoid,\n false\n );\n\n if (defined(rectangleGeometry._offsetAttribute)) {\n const length = geometry.attributes.position.values.length;\n const applyOffset = new Uint8Array(length / 3);\n const offsetValue =\n rectangleGeometry._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 boundingSphere = BoundingSphere.fromRectangle3D(\n rectangle,\n ellipsoid,\n surfaceHeight\n );\n }\n\n if (!vertexFormat.position) {\n delete geometry.attributes.position;\n }\n\n return new Geometry({\n attributes: geometry.attributes,\n indices: geometry.indices,\n primitiveType: geometry.primitiveType,\n boundingSphere: boundingSphere,\n offsetAttribute: rectangleGeometry._offsetAttribute,\n });\n};\n\n/**\n * @private\n */\nRectangleGeometry.createShadowVolume = function (\n rectangleGeometry,\n minHeightFunc,\n maxHeightFunc\n) {\n const granularity = rectangleGeometry._granularity;\n const ellipsoid = rectangleGeometry._ellipsoid;\n\n const minHeight = minHeightFunc(granularity, ellipsoid);\n const maxHeight = maxHeightFunc(granularity, ellipsoid);\n\n return new RectangleGeometry({\n rectangle: rectangleGeometry._rectangle,\n rotation: rectangleGeometry._rotation,\n ellipsoid: ellipsoid,\n stRotation: rectangleGeometry._stRotation,\n granularity: granularity,\n extrudedHeight: maxHeight,\n height: minHeight,\n vertexFormat: VertexFormat.POSITION_ONLY,\n shadowVolume: true,\n });\n};\n\nconst unrotatedTextureRectangleScratch = new Rectangle();\nconst points2DScratch = [new Cartesian2(), new Cartesian2(), new Cartesian2()];\nconst rotation2DScratch = new Matrix2();\nconst rectangleCenterScratch = new Cartographic();\n\nfunction textureCoordinateRotationPoints(rectangleGeometry) {\n if (rectangleGeometry._stRotation === 0.0) {\n return [0, 0, 0, 1, 1, 0];\n }\n\n const rectangle = Rectangle.clone(\n rectangleGeometry._rectangle,\n unrotatedTextureRectangleScratch\n );\n const granularity = rectangleGeometry._granularity;\n const ellipsoid = rectangleGeometry._ellipsoid;\n\n // Rotate to align the texture coordinates with ENU\n const rotation = rectangleGeometry._rotation - rectangleGeometry._stRotation;\n\n const unrotatedTextureRectangle = computeRectangle(\n rectangle,\n granularity,\n rotation,\n ellipsoid,\n unrotatedTextureRectangleScratch\n );\n\n // Assume a computed \"east-north\" texture coordinate system based on spherical or planar tricks, bounded by `boundingRectangle`.\n // The \"desired\" texture coordinate system forms an oriented rectangle (un-oriented computed) around the geometry that completely and tightly bounds it.\n // We want to map from the \"east-north\" texture coordinate system into the \"desired\" system using a pair of lines (analagous planes in 2D)\n // Compute 3 corners of the \"desired\" texture coordinate system in \"east-north\" texture space by the following in cartographic space:\n // - rotate 3 of the corners in unrotatedTextureRectangle by stRotation around the center of the bounding rectangle\n // - apply the \"east-north\" system's normalization formula to the rotated cartographics, even though this is likely to produce values outside [0-1].\n // This gives us a set of points in the \"east-north\" texture coordinate system that can be used to map \"east-north\" texture coordinates to \"desired.\"\n\n const points2D = points2DScratch;\n points2D[0].x = unrotatedTextureRectangle.west;\n points2D[0].y = unrotatedTextureRectangle.south;\n\n points2D[1].x = unrotatedTextureRectangle.west;\n points2D[1].y = unrotatedTextureRectangle.north;\n\n points2D[2].x = unrotatedTextureRectangle.east;\n points2D[2].y = unrotatedTextureRectangle.south;\n\n const boundingRectangle = rectangleGeometry.rectangle;\n const toDesiredInComputed = Matrix2.fromRotation(\n rectangleGeometry._stRotation,\n rotation2DScratch\n );\n const boundingRectangleCenter = Rectangle.center(\n boundingRectangle,\n rectangleCenterScratch\n );\n\n for (let i = 0; i < 3; ++i) {\n const point2D = points2D[i];\n point2D.x -= boundingRectangleCenter.longitude;\n point2D.y -= boundingRectangleCenter.latitude;\n Matrix2.multiplyByVector(toDesiredInComputed, point2D, point2D);\n point2D.x += boundingRectangleCenter.longitude;\n point2D.y += boundingRectangleCenter.latitude;\n\n // Convert point into east-north texture coordinate space\n point2D.x = (point2D.x - boundingRectangle.west) / boundingRectangle.width;\n point2D.y =\n (point2D.y - boundingRectangle.south) / boundingRectangle.height;\n }\n\n const minXYCorner = points2D[0];\n const maxYCorner = points2D[1];\n const maxXCorner = points2D[2];\n const result = new Array(6);\n Cartesian2.pack(minXYCorner, result);\n Cartesian2.pack(maxYCorner, result, 2);\n Cartesian2.pack(maxXCorner, result, 4);\n return result;\n}\n\nObject.defineProperties(RectangleGeometry.prototype, {\n /**\n * @private\n */\n rectangle: {\n get: function () {\n if (!defined(this._rotatedRectangle)) {\n this._rotatedRectangle = computeRectangle(\n this._rectangle,\n this._granularity,\n this._rotation,\n this._ellipsoid\n );\n }\n return this._rotatedRectangle;\n },\n },\n /**\n * For remapping texture coordinates when rendering RectangleGeometries as GroundPrimitives.\n * This version permits skew in textures by computing offsets directly in cartographic space and\n * more accurately approximates rendering RectangleGeometries with height as standard Primitives.\n * @see Geometry#_textureCoordinateRotationPoints\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 RectangleGeometry;\n","import defined from \"../Core/defined.js\";\nimport Ellipsoid from \"../Core/Ellipsoid.js\";\nimport Rectangle from \"../Core/Rectangle.js\";\nimport RectangleGeometry from \"../Core/RectangleGeometry.js\";\n\nfunction createRectangleGeometry(rectangleGeometry, offset) {\n if (defined(offset)) {\n rectangleGeometry = RectangleGeometry.unpack(rectangleGeometry, offset);\n }\n rectangleGeometry._ellipsoid = Ellipsoid.clone(rectangleGeometry._ellipsoid);\n rectangleGeometry._rectangle = Rectangle.clone(rectangleGeometry._rectangle);\n return RectangleGeometry.createGeometry(rectangleGeometry);\n}\nexport default createRectangleGeometry;\n"],"names":["Cartesian3","Rectangle","Cartesian2","BoundingSphere","Geometry","GeometryAttributes","PrimitiveType","GeometryAttribute","ComponentDatatype","Matrix3","CesiumMath","RectangleGeometryLibrary","IndexDatatype","VertexFormat","PolygonPipeline","defined","GeometryOffsetAttribute","arrayFill","GeometryPipeline","GeometryInstance","Cartographic","defaultValue","Check","DeveloperError","Ellipsoid","Quaternion","Matrix2"],"mappings":"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"}