{"version":3,"file":"createPolygonGeometry.js","sources":["../../../../Source/Core/PolygonGeometry.js","../../../../Source/WorkersES6/createPolygonGeometry.js"],"sourcesContent":["import ArcType from \"./ArcType.js\";\nimport arrayFill from \"./arrayFill.js\";\nimport BoundingRectangle from \"./BoundingRectangle.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 EllipsoidGeodesic from \"./EllipsoidGeodesic.js\";\nimport EllipsoidTangentPlane from \"./EllipsoidTangentPlane.js\";\nimport Geometry from \"./Geometry.js\";\nimport GeometryAttribute from \"./GeometryAttribute.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 PolygonGeometryLibrary from \"./PolygonGeometryLibrary.js\";\nimport PolygonPipeline from \"./PolygonPipeline.js\";\nimport Quaternion from \"./Quaternion.js\";\nimport Rectangle from \"./Rectangle.js\";\nimport VertexFormat from \"./VertexFormat.js\";\nimport WindingOrder from \"./WindingOrder.js\";\n\nconst scratchCarto1 = new Cartographic();\nconst scratchCarto2 = new Cartographic();\nfunction adjustPosHeightsForNormal(position, p1, p2, ellipsoid) {\n const carto1 = ellipsoid.cartesianToCartographic(position, scratchCarto1);\n const height = carto1.height;\n const p1Carto = ellipsoid.cartesianToCartographic(p1, scratchCarto2);\n p1Carto.height = height;\n ellipsoid.cartographicToCartesian(p1Carto, p1);\n\n const p2Carto = ellipsoid.cartesianToCartographic(p2, scratchCarto2);\n p2Carto.height = height - 100;\n ellipsoid.cartographicToCartesian(p2Carto, p2);\n}\n\nconst scratchBoundingRectangle = new BoundingRectangle();\nconst scratchPosition = new Cartesian3();\nconst scratchNormal = new Cartesian3();\nconst scratchTangent = new Cartesian3();\nconst scratchBitangent = new Cartesian3();\nconst p1Scratch = new Cartesian3();\nconst p2Scratch = new Cartesian3();\nlet scratchPerPosNormal = new Cartesian3();\nlet scratchPerPosTangent = new Cartesian3();\nlet scratchPerPosBitangent = new Cartesian3();\n\nconst appendTextureCoordinatesOrigin = new Cartesian2();\nconst appendTextureCoordinatesCartesian2 = new Cartesian2();\nconst appendTextureCoordinatesCartesian3 = new Cartesian3();\nconst appendTextureCoordinatesQuaternion = new Quaternion();\nconst appendTextureCoordinatesMatrix3 = new Matrix3();\nconst tangentMatrixScratch = new Matrix3();\n\nfunction computeAttributes(options) {\n const vertexFormat = options.vertexFormat;\n const geometry = options.geometry;\n const shadowVolume = options.shadowVolume;\n const flatPositions = geometry.attributes.position.values;\n let length = flatPositions.length;\n const wall = options.wall;\n const top = options.top || wall;\n const bottom = options.bottom || wall;\n if (\n vertexFormat.st ||\n vertexFormat.normal ||\n vertexFormat.tangent ||\n vertexFormat.bitangent ||\n shadowVolume\n ) {\n // PERFORMANCE_IDEA: Compute before subdivision, then just interpolate during subdivision.\n // PERFORMANCE_IDEA: Compute with createGeometryFromPositions() for fast path when there's no holes.\n const boundingRectangle = options.boundingRectangle;\n const tangentPlane = options.tangentPlane;\n const ellipsoid = options.ellipsoid;\n const stRotation = options.stRotation;\n const perPositionHeight = options.perPositionHeight;\n\n const origin = appendTextureCoordinatesOrigin;\n origin.x = boundingRectangle.x;\n origin.y = boundingRectangle.y;\n\n const textureCoordinates = vertexFormat.st\n ? new Float32Array(2 * (length / 3))\n : undefined;\n let normals;\n if (vertexFormat.normal) {\n if (perPositionHeight && top && !wall) {\n normals = geometry.attributes.normal.values;\n } else {\n normals = new Float32Array(length);\n }\n }\n const tangents = vertexFormat.tangent\n ? new Float32Array(length)\n : undefined;\n const bitangents = vertexFormat.bitangent\n ? new Float32Array(length)\n : undefined;\n const extrudeNormals = shadowVolume ? new Float32Array(length) : undefined;\n\n let textureCoordIndex = 0;\n let attrIndex = 0;\n\n let normal = scratchNormal;\n let tangent = scratchTangent;\n let bitangent = scratchBitangent;\n let recomputeNormal = true;\n\n let textureMatrix = appendTextureCoordinatesMatrix3;\n let tangentRotationMatrix = tangentMatrixScratch;\n if (stRotation !== 0.0) {\n let rotation = Quaternion.fromAxisAngle(\n tangentPlane._plane.normal,\n stRotation,\n appendTextureCoordinatesQuaternion\n );\n textureMatrix = Matrix3.fromQuaternion(rotation, textureMatrix);\n\n rotation = Quaternion.fromAxisAngle(\n tangentPlane._plane.normal,\n -stRotation,\n appendTextureCoordinatesQuaternion\n );\n tangentRotationMatrix = Matrix3.fromQuaternion(\n rotation,\n tangentRotationMatrix\n );\n } else {\n textureMatrix = Matrix3.clone(Matrix3.IDENTITY, textureMatrix);\n tangentRotationMatrix = Matrix3.clone(\n Matrix3.IDENTITY,\n tangentRotationMatrix\n );\n }\n\n let bottomOffset = 0;\n let bottomOffset2 = 0;\n\n if (top && bottom) {\n bottomOffset = length / 2;\n bottomOffset2 = length / 3;\n\n length /= 2;\n }\n\n for (let i = 0; i < length; i += 3) {\n const position = Cartesian3.fromArray(\n flatPositions,\n i,\n appendTextureCoordinatesCartesian3\n );\n\n if (vertexFormat.st) {\n let p = Matrix3.multiplyByVector(\n textureMatrix,\n position,\n scratchPosition\n );\n p = ellipsoid.scaleToGeodeticSurface(p, p);\n const st = tangentPlane.projectPointOntoPlane(\n p,\n appendTextureCoordinatesCartesian2\n );\n Cartesian2.subtract(st, origin, st);\n\n const stx = CesiumMath.clamp(st.x / boundingRectangle.width, 0, 1);\n const sty = CesiumMath.clamp(st.y / boundingRectangle.height, 0, 1);\n if (bottom) {\n textureCoordinates[textureCoordIndex + bottomOffset2] = stx;\n textureCoordinates[textureCoordIndex + 1 + bottomOffset2] = sty;\n }\n if (top) {\n textureCoordinates[textureCoordIndex] = stx;\n textureCoordinates[textureCoordIndex + 1] = sty;\n }\n\n textureCoordIndex += 2;\n }\n\n if (\n vertexFormat.normal ||\n vertexFormat.tangent ||\n vertexFormat.bitangent ||\n shadowVolume\n ) {\n const attrIndex1 = attrIndex + 1;\n const attrIndex2 = attrIndex + 2;\n\n if (wall) {\n if (i + 3 < length) {\n const p1 = Cartesian3.fromArray(flatPositions, i + 3, p1Scratch);\n\n if (recomputeNormal) {\n const p2 = Cartesian3.fromArray(\n flatPositions,\n i + length,\n p2Scratch\n );\n if (perPositionHeight) {\n adjustPosHeightsForNormal(position, p1, p2, ellipsoid);\n }\n Cartesian3.subtract(p1, position, p1);\n Cartesian3.subtract(p2, position, p2);\n normal = Cartesian3.normalize(\n Cartesian3.cross(p2, p1, normal),\n normal\n );\n recomputeNormal = false;\n }\n\n if (Cartesian3.equalsEpsilon(p1, position, CesiumMath.EPSILON10)) {\n // if we've reached a corner\n recomputeNormal = true;\n }\n }\n\n if (vertexFormat.tangent || vertexFormat.bitangent) {\n bitangent = ellipsoid.geodeticSurfaceNormal(position, bitangent);\n if (vertexFormat.tangent) {\n tangent = Cartesian3.normalize(\n Cartesian3.cross(bitangent, normal, tangent),\n tangent\n );\n }\n }\n } else {\n normal = ellipsoid.geodeticSurfaceNormal(position, normal);\n if (vertexFormat.tangent || vertexFormat.bitangent) {\n if (perPositionHeight) {\n scratchPerPosNormal = Cartesian3.fromArray(\n normals,\n attrIndex,\n scratchPerPosNormal\n );\n scratchPerPosTangent = Cartesian3.cross(\n Cartesian3.UNIT_Z,\n scratchPerPosNormal,\n scratchPerPosTangent\n );\n scratchPerPosTangent = Cartesian3.normalize(\n Matrix3.multiplyByVector(\n tangentRotationMatrix,\n scratchPerPosTangent,\n scratchPerPosTangent\n ),\n scratchPerPosTangent\n );\n if (vertexFormat.bitangent) {\n scratchPerPosBitangent = Cartesian3.normalize(\n Cartesian3.cross(\n scratchPerPosNormal,\n scratchPerPosTangent,\n scratchPerPosBitangent\n ),\n scratchPerPosBitangent\n );\n }\n }\n\n tangent = Cartesian3.cross(Cartesian3.UNIT_Z, normal, tangent);\n tangent = Cartesian3.normalize(\n Matrix3.multiplyByVector(tangentRotationMatrix, tangent, tangent),\n tangent\n );\n if (vertexFormat.bitangent) {\n bitangent = Cartesian3.normalize(\n Cartesian3.cross(normal, tangent, bitangent),\n bitangent\n );\n }\n }\n }\n\n if (vertexFormat.normal) {\n if (options.wall) {\n normals[attrIndex + bottomOffset] = normal.x;\n normals[attrIndex1 + bottomOffset] = normal.y;\n normals[attrIndex2 + bottomOffset] = normal.z;\n } else if (bottom) {\n normals[attrIndex + bottomOffset] = -normal.x;\n normals[attrIndex1 + bottomOffset] = -normal.y;\n normals[attrIndex2 + bottomOffset] = -normal.z;\n }\n\n if ((top && !perPositionHeight) || wall) {\n normals[attrIndex] = normal.x;\n normals[attrIndex1] = normal.y;\n normals[attrIndex2] = normal.z;\n }\n }\n\n if (shadowVolume) {\n if (wall) {\n normal = ellipsoid.geodeticSurfaceNormal(position, normal);\n }\n extrudeNormals[attrIndex + bottomOffset] = -normal.x;\n extrudeNormals[attrIndex1 + bottomOffset] = -normal.y;\n extrudeNormals[attrIndex2 + bottomOffset] = -normal.z;\n }\n\n if (vertexFormat.tangent) {\n if (options.wall) {\n tangents[attrIndex + bottomOffset] = tangent.x;\n tangents[attrIndex1 + bottomOffset] = tangent.y;\n tangents[attrIndex2 + bottomOffset] = tangent.z;\n } else if (bottom) {\n tangents[attrIndex + bottomOffset] = -tangent.x;\n tangents[attrIndex1 + bottomOffset] = -tangent.y;\n tangents[attrIndex2 + bottomOffset] = -tangent.z;\n }\n\n if (top) {\n if (perPositionHeight) {\n tangents[attrIndex] = scratchPerPosTangent.x;\n tangents[attrIndex1] = scratchPerPosTangent.y;\n tangents[attrIndex2] = scratchPerPosTangent.z;\n } else {\n tangents[attrIndex] = tangent.x;\n tangents[attrIndex1] = tangent.y;\n tangents[attrIndex2] = tangent.z;\n }\n }\n }\n\n if (vertexFormat.bitangent) {\n if (bottom) {\n bitangents[attrIndex + bottomOffset] = bitangent.x;\n bitangents[attrIndex1 + bottomOffset] = bitangent.y;\n bitangents[attrIndex2 + bottomOffset] = bitangent.z;\n }\n if (top) {\n if (perPositionHeight) {\n bitangents[attrIndex] = scratchPerPosBitangent.x;\n bitangents[attrIndex1] = scratchPerPosBitangent.y;\n bitangents[attrIndex2] = scratchPerPosBitangent.z;\n } else {\n bitangents[attrIndex] = bitangent.x;\n bitangents[attrIndex1] = bitangent.y;\n bitangents[attrIndex2] = bitangent.z;\n }\n }\n }\n attrIndex += 3;\n }\n }\n\n if (vertexFormat.st) {\n geometry.attributes.st = new GeometryAttribute({\n componentDatatype: ComponentDatatype.FLOAT,\n componentsPerAttribute: 2,\n values: textureCoordinates,\n });\n }\n\n if (vertexFormat.normal) {\n geometry.attributes.normal = new GeometryAttribute({\n componentDatatype: ComponentDatatype.FLOAT,\n componentsPerAttribute: 3,\n values: normals,\n });\n }\n\n if (vertexFormat.tangent) {\n geometry.attributes.tangent = new GeometryAttribute({\n componentDatatype: ComponentDatatype.FLOAT,\n componentsPerAttribute: 3,\n values: tangents,\n });\n }\n\n if (vertexFormat.bitangent) {\n geometry.attributes.bitangent = new GeometryAttribute({\n componentDatatype: ComponentDatatype.FLOAT,\n componentsPerAttribute: 3,\n values: bitangents,\n });\n }\n\n if (shadowVolume) {\n geometry.attributes.extrudeDirection = new GeometryAttribute({\n componentDatatype: ComponentDatatype.FLOAT,\n componentsPerAttribute: 3,\n values: extrudeNormals,\n });\n }\n }\n\n if (options.extrude && defined(options.offsetAttribute)) {\n const size = flatPositions.length / 3;\n let offsetAttribute = new Uint8Array(size);\n\n if (options.offsetAttribute === GeometryOffsetAttribute.TOP) {\n if ((top && bottom) || wall) {\n offsetAttribute = arrayFill(offsetAttribute, 1, 0, size / 2);\n } else if (top) {\n offsetAttribute = arrayFill(offsetAttribute, 1);\n }\n } else {\n const offsetValue =\n options.offsetAttribute === GeometryOffsetAttribute.NONE ? 0 : 1;\n offsetAttribute = arrayFill(offsetAttribute, offsetValue);\n }\n\n geometry.attributes.applyOffset = new GeometryAttribute({\n componentDatatype: ComponentDatatype.UNSIGNED_BYTE,\n componentsPerAttribute: 1,\n values: offsetAttribute,\n });\n }\n\n return geometry;\n}\n\nconst startCartographicScratch = new Cartographic();\nconst endCartographicScratch = new Cartographic();\nconst idlCross = {\n westOverIDL: 0.0,\n eastOverIDL: 0.0,\n};\nlet ellipsoidGeodesic = new EllipsoidGeodesic();\nfunction computeRectangle(positions, ellipsoid, arcType, granularity, result) {\n result = defaultValue(result, new Rectangle());\n if (!defined(positions) || positions.length < 3) {\n result.west = 0.0;\n result.north = 0.0;\n result.south = 0.0;\n result.east = 0.0;\n return result;\n }\n\n if (arcType === ArcType.RHUMB) {\n return Rectangle.fromCartesianArray(positions, ellipsoid, result);\n }\n\n if (!ellipsoidGeodesic.ellipsoid.equals(ellipsoid)) {\n ellipsoidGeodesic = new EllipsoidGeodesic(undefined, undefined, ellipsoid);\n }\n\n result.west = Number.POSITIVE_INFINITY;\n result.east = Number.NEGATIVE_INFINITY;\n result.south = Number.POSITIVE_INFINITY;\n result.north = Number.NEGATIVE_INFINITY;\n\n idlCross.westOverIDL = Number.POSITIVE_INFINITY;\n idlCross.eastOverIDL = Number.NEGATIVE_INFINITY;\n\n const inverseChordLength =\n 1.0 / CesiumMath.chordLength(granularity, ellipsoid.maximumRadius);\n const positionsLength = positions.length;\n let endCartographic = ellipsoid.cartesianToCartographic(\n positions[0],\n endCartographicScratch\n );\n let startCartographic = startCartographicScratch;\n let swap;\n\n for (let i = 1; i < positionsLength; i++) {\n swap = startCartographic;\n startCartographic = endCartographic;\n endCartographic = ellipsoid.cartesianToCartographic(positions[i], swap);\n ellipsoidGeodesic.setEndPoints(startCartographic, endCartographic);\n interpolateAndGrowRectangle(\n ellipsoidGeodesic,\n inverseChordLength,\n result,\n idlCross\n );\n }\n\n swap = startCartographic;\n startCartographic = endCartographic;\n endCartographic = ellipsoid.cartesianToCartographic(positions[0], swap);\n ellipsoidGeodesic.setEndPoints(startCartographic, endCartographic);\n interpolateAndGrowRectangle(\n ellipsoidGeodesic,\n inverseChordLength,\n result,\n idlCross\n );\n\n if (result.east - result.west > idlCross.eastOverIDL - idlCross.westOverIDL) {\n result.west = idlCross.westOverIDL;\n result.east = idlCross.eastOverIDL;\n\n if (result.east > CesiumMath.PI) {\n result.east = result.east - CesiumMath.TWO_PI;\n }\n if (result.west > CesiumMath.PI) {\n result.west = result.west - CesiumMath.TWO_PI;\n }\n }\n\n return result;\n}\n\nconst interpolatedCartographicScratch = new Cartographic();\nfunction interpolateAndGrowRectangle(\n ellipsoidGeodesic,\n inverseChordLength,\n result,\n idlCross\n) {\n const segmentLength = ellipsoidGeodesic.surfaceDistance;\n\n const numPoints = Math.ceil(segmentLength * inverseChordLength);\n const subsegmentDistance =\n numPoints > 0 ? segmentLength / (numPoints - 1) : Number.POSITIVE_INFINITY;\n let interpolationDistance = 0.0;\n\n for (let i = 0; i < numPoints; i++) {\n const interpolatedCartographic = ellipsoidGeodesic.interpolateUsingSurfaceDistance(\n interpolationDistance,\n interpolatedCartographicScratch\n );\n interpolationDistance += subsegmentDistance;\n const longitude = interpolatedCartographic.longitude;\n const latitude = interpolatedCartographic.latitude;\n\n result.west = Math.min(result.west, longitude);\n result.east = Math.max(result.east, longitude);\n result.south = Math.min(result.south, latitude);\n result.north = Math.max(result.north, latitude);\n\n const lonAdjusted =\n longitude >= 0 ? longitude : longitude + CesiumMath.TWO_PI;\n idlCross.westOverIDL = Math.min(idlCross.westOverIDL, lonAdjusted);\n idlCross.eastOverIDL = Math.max(idlCross.eastOverIDL, lonAdjusted);\n }\n}\n\nconst createGeometryFromPositionsExtrudedPositions = [];\n\nfunction createGeometryFromPositionsExtruded(\n ellipsoid,\n polygon,\n granularity,\n hierarchy,\n perPositionHeight,\n closeTop,\n closeBottom,\n vertexFormat,\n arcType\n) {\n const geos = {\n walls: [],\n };\n let i;\n\n if (closeTop || closeBottom) {\n const topGeo = PolygonGeometryLibrary.createGeometryFromPositions(\n ellipsoid,\n polygon,\n granularity,\n perPositionHeight,\n vertexFormat,\n arcType\n );\n\n const edgePoints = topGeo.attributes.position.values;\n const indices = topGeo.indices;\n let numPositions;\n let newIndices;\n\n if (closeTop && closeBottom) {\n const topBottomPositions = edgePoints.concat(edgePoints);\n\n numPositions = topBottomPositions.length / 3;\n\n newIndices = IndexDatatype.createTypedArray(\n numPositions,\n indices.length * 2\n );\n newIndices.set(indices);\n const ilength = indices.length;\n\n const length = numPositions / 2;\n\n for (i = 0; i < ilength; i += 3) {\n const i0 = newIndices[i] + length;\n const i1 = newIndices[i + 1] + length;\n const i2 = newIndices[i + 2] + length;\n\n newIndices[i + ilength] = i2;\n newIndices[i + 1 + ilength] = i1;\n newIndices[i + 2 + ilength] = i0;\n }\n\n topGeo.attributes.position.values = topBottomPositions;\n if (perPositionHeight && vertexFormat.normal) {\n const normals = topGeo.attributes.normal.values;\n topGeo.attributes.normal.values = new Float32Array(\n topBottomPositions.length\n );\n topGeo.attributes.normal.values.set(normals);\n }\n topGeo.indices = newIndices;\n } else if (closeBottom) {\n numPositions = edgePoints.length / 3;\n newIndices = IndexDatatype.createTypedArray(numPositions, indices.length);\n\n for (i = 0; i < indices.length; i += 3) {\n newIndices[i] = indices[i + 2];\n newIndices[i + 1] = indices[i + 1];\n newIndices[i + 2] = indices[i];\n }\n\n topGeo.indices = newIndices;\n }\n\n geos.topAndBottom = new GeometryInstance({\n geometry: topGeo,\n });\n }\n\n let outerRing = hierarchy.outerRing;\n let tangentPlane = EllipsoidTangentPlane.fromPoints(outerRing, ellipsoid);\n let positions2D = tangentPlane.projectPointsOntoPlane(\n outerRing,\n createGeometryFromPositionsExtrudedPositions\n );\n\n let windingOrder = PolygonPipeline.computeWindingOrder2D(positions2D);\n if (windingOrder === WindingOrder.CLOCKWISE) {\n outerRing = outerRing.slice().reverse();\n }\n\n let wallGeo = PolygonGeometryLibrary.computeWallGeometry(\n outerRing,\n ellipsoid,\n granularity,\n perPositionHeight,\n arcType\n );\n geos.walls.push(\n new GeometryInstance({\n geometry: wallGeo,\n })\n );\n\n const holes = hierarchy.holes;\n for (i = 0; i < holes.length; i++) {\n let hole = holes[i];\n\n tangentPlane = EllipsoidTangentPlane.fromPoints(hole, ellipsoid);\n positions2D = tangentPlane.projectPointsOntoPlane(\n hole,\n createGeometryFromPositionsExtrudedPositions\n );\n\n windingOrder = PolygonPipeline.computeWindingOrder2D(positions2D);\n if (windingOrder === WindingOrder.COUNTER_CLOCKWISE) {\n hole = hole.slice().reverse();\n }\n\n wallGeo = PolygonGeometryLibrary.computeWallGeometry(\n hole,\n ellipsoid,\n granularity,\n perPositionHeight,\n arcType\n );\n geos.walls.push(\n new GeometryInstance({\n geometry: wallGeo,\n })\n );\n }\n\n return geos;\n}\n\n/**\n * A description of a polygon on the ellipsoid. The polygon is defined by a polygon hierarchy. Polygon geometry can be rendered with both {@link Primitive} and {@link GroundPrimitive}.\n *\n * @alias PolygonGeometry\n * @constructor\n *\n * @param {Object} options Object with the following properties:\n * @param {PolygonHierarchy} options.polygonHierarchy A polygon hierarchy that can include holes.\n * @param {Number} [options.height=0.0] The distance in meters between the polygon and the ellipsoid surface.\n * @param {Number} [options.extrudedHeight] The distance in meters between the polygon's extruded face and the ellipsoid surface.\n * @param {VertexFormat} [options.vertexFormat=VertexFormat.DEFAULT] The vertex attributes to be computed.\n * @param {Number} [options.stRotation=0.0] The rotation of the texture coordinates, in radians. A positive rotation is counter-clockwise.\n * @param {Ellipsoid} [options.ellipsoid=Ellipsoid.WGS84] The ellipsoid to be used as a reference.\n * @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 {Boolean} [options.perPositionHeight=false] Use the height of options.positions for each position instead of using options.height to determine the height.\n * @param {Boolean} [options.closeTop=true] When false, leaves off the top of an extruded polygon open.\n * @param {Boolean} [options.closeBottom=true] When false, leaves off the bottom of an extruded polygon open.\n * @param {ArcType} [options.arcType=ArcType.GEODESIC] The type of line the polygon edges must follow. Valid options are {@link ArcType.GEODESIC} and {@link ArcType.RHUMB}.\n *\n * @see PolygonGeometry#createGeometry\n * @see PolygonGeometry#fromPositions\n *\n * @demo {@link https://sandcastle.cesium.com/index.html?src=Polygon.html|Cesium Sandcastle Polygon Demo}\n *\n * @example\n * // 1. create a polygon from points\n * const polygon = new Cesium.PolygonGeometry({\n * polygonHierarchy : new Cesium.PolygonHierarchy(\n * Cesium.Cartesian3.fromDegreesArray([\n * -72.0, 40.0,\n * -70.0, 35.0,\n * -75.0, 30.0,\n * -70.0, 30.0,\n * -68.0, 40.0\n * ])\n * )\n * });\n * const geometry = Cesium.PolygonGeometry.createGeometry(polygon);\n *\n * // 2. create a nested polygon with holes\n * const polygonWithHole = new Cesium.PolygonGeometry({\n * polygonHierarchy : new Cesium.PolygonHierarchy(\n * Cesium.Cartesian3.fromDegreesArray([\n * -109.0, 30.0,\n * -95.0, 30.0,\n * -95.0, 40.0,\n * -109.0, 40.0\n * ]),\n * [new Cesium.PolygonHierarchy(\n * Cesium.Cartesian3.fromDegreesArray([\n * -107.0, 31.0,\n * -107.0, 39.0,\n * -97.0, 39.0,\n * -97.0, 31.0\n * ]),\n * [new Cesium.PolygonHierarchy(\n * Cesium.Cartesian3.fromDegreesArray([\n * -105.0, 33.0,\n * -99.0, 33.0,\n * -99.0, 37.0,\n * -105.0, 37.0\n * ]),\n * [new Cesium.PolygonHierarchy(\n * Cesium.Cartesian3.fromDegreesArray([\n * -103.0, 34.0,\n * -101.0, 34.0,\n * -101.0, 36.0,\n * -103.0, 36.0\n * ])\n * )]\n * )]\n * )]\n * )\n * });\n * const geometry = Cesium.PolygonGeometry.createGeometry(polygonWithHole);\n *\n * // 3. create extruded polygon\n * const extrudedPolygon = new Cesium.PolygonGeometry({\n * polygonHierarchy : new Cesium.PolygonHierarchy(\n * Cesium.Cartesian3.fromDegreesArray([\n * -72.0, 40.0,\n * -70.0, 35.0,\n * -75.0, 30.0,\n * -70.0, 30.0,\n * -68.0, 40.0\n * ])\n * ),\n * extrudedHeight: 300000\n * });\n * const geometry = Cesium.PolygonGeometry.createGeometry(extrudedPolygon);\n */\nfunction PolygonGeometry(options) {\n //>>includeStart('debug', pragmas.debug);\n Check.typeOf.object(\"options\", options);\n Check.typeOf.object(\"options.polygonHierarchy\", options.polygonHierarchy);\n if (\n defined(options.perPositionHeight) &&\n options.perPositionHeight &&\n defined(options.height)\n ) {\n throw new DeveloperError(\n \"Cannot use both options.perPositionHeight and options.height\"\n );\n }\n if (\n defined(options.arcType) &&\n options.arcType !== ArcType.GEODESIC &&\n options.arcType !== ArcType.RHUMB\n ) {\n throw new DeveloperError(\n \"Invalid arcType. Valid options are ArcType.GEODESIC and ArcType.RHUMB.\"\n );\n }\n //>>includeEnd('debug');\n\n const polygonHierarchy = options.polygonHierarchy;\n const vertexFormat = defaultValue(options.vertexFormat, VertexFormat.DEFAULT);\n const ellipsoid = defaultValue(options.ellipsoid, Ellipsoid.WGS84);\n const granularity = defaultValue(\n options.granularity,\n CesiumMath.RADIANS_PER_DEGREE\n );\n const stRotation = defaultValue(options.stRotation, 0.0);\n const perPositionHeight = defaultValue(options.perPositionHeight, false);\n const perPositionHeightExtrude =\n perPositionHeight && defined(options.extrudedHeight);\n let height = defaultValue(options.height, 0.0);\n let extrudedHeight = defaultValue(options.extrudedHeight, height);\n\n if (!perPositionHeightExtrude) {\n const h = Math.max(height, extrudedHeight);\n extrudedHeight = Math.min(height, extrudedHeight);\n height = h;\n }\n\n this._vertexFormat = VertexFormat.clone(vertexFormat);\n this._ellipsoid = Ellipsoid.clone(ellipsoid);\n this._granularity = granularity;\n this._stRotation = stRotation;\n this._height = height;\n this._extrudedHeight = extrudedHeight;\n this._closeTop = defaultValue(options.closeTop, true);\n this._closeBottom = defaultValue(options.closeBottom, true);\n this._polygonHierarchy = polygonHierarchy;\n this._perPositionHeight = perPositionHeight;\n this._perPositionHeightExtrude = perPositionHeightExtrude;\n this._shadowVolume = defaultValue(options.shadowVolume, false);\n this._workerName = \"createPolygonGeometry\";\n this._offsetAttribute = options.offsetAttribute;\n this._arcType = defaultValue(options.arcType, ArcType.GEODESIC);\n\n this._rectangle = undefined;\n this._textureCoordinateRotationPoints = undefined;\n\n /**\n * The number of elements used to pack the object into an array.\n * @type {Number}\n */\n this.packedLength =\n PolygonGeometryLibrary.computeHierarchyPackedLength(polygonHierarchy) +\n Ellipsoid.packedLength +\n VertexFormat.packedLength +\n 12;\n}\n\n/**\n * A description of a polygon from an array of positions. Polygon geometry can be rendered with both {@link Primitive} and {@link GroundPrimitive}.\n *\n * @param {Object} options Object with the following properties:\n * @param {Cartesian3[]} options.positions An array of positions that defined the corner points of the polygon.\n * @param {Number} [options.height=0.0] The height of the polygon.\n * @param {Number} [options.extrudedHeight] The height of the polygon extrusion.\n * @param {VertexFormat} [options.vertexFormat=VertexFormat.DEFAULT] The vertex attributes to be computed.\n * @param {Number} [options.stRotation=0.0] The rotation of the texture coordinates, in radians. A positive rotation is counter-clockwise.\n * @param {Ellipsoid} [options.ellipsoid=Ellipsoid.WGS84] The ellipsoid to be used as a reference.\n * @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 {Boolean} [options.perPositionHeight=false] Use the height of options.positions for each position instead of using options.height to determine the height.\n * @param {Boolean} [options.closeTop=true] When false, leaves off the top of an extruded polygon open.\n * @param {Boolean} [options.closeBottom=true] When false, leaves off the bottom of an extruded polygon open.\n * @param {ArcType} [options.arcType=ArcType.GEODESIC] The type of line the polygon edges must follow. Valid options are {@link ArcType.GEODESIC} and {@link ArcType.RHUMB}.\n * @returns {PolygonGeometry}\n *\n *\n * @example\n * // create a polygon from points\n * const polygon = Cesium.PolygonGeometry.fromPositions({\n * positions : Cesium.Cartesian3.fromDegreesArray([\n * -72.0, 40.0,\n * -70.0, 35.0,\n * -75.0, 30.0,\n * -70.0, 30.0,\n * -68.0, 40.0\n * ])\n * });\n * const geometry = Cesium.PolygonGeometry.createGeometry(polygon);\n *\n * @see PolygonGeometry#createGeometry\n */\nPolygonGeometry.fromPositions = function (options) {\n options = defaultValue(options, defaultValue.EMPTY_OBJECT);\n\n //>>includeStart('debug', pragmas.debug);\n Check.defined(\"options.positions\", options.positions);\n //>>includeEnd('debug');\n\n const newOptions = {\n polygonHierarchy: {\n positions: options.positions,\n },\n height: options.height,\n extrudedHeight: options.extrudedHeight,\n vertexFormat: options.vertexFormat,\n stRotation: options.stRotation,\n ellipsoid: options.ellipsoid,\n granularity: options.granularity,\n perPositionHeight: options.perPositionHeight,\n closeTop: options.closeTop,\n closeBottom: options.closeBottom,\n offsetAttribute: options.offsetAttribute,\n arcType: options.arcType,\n };\n return new PolygonGeometry(newOptions);\n};\n\n/**\n * Stores the provided instance into the provided array.\n *\n * @param {PolygonGeometry} 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 */\nPolygonGeometry.pack = function (value, array, startingIndex) {\n //>>includeStart('debug', pragmas.debug);\n Check.typeOf.object(\"value\", value);\n Check.defined(\"array\", array);\n //>>includeEnd('debug');\n\n startingIndex = defaultValue(startingIndex, 0);\n\n startingIndex = PolygonGeometryLibrary.packPolygonHierarchy(\n value._polygonHierarchy,\n array,\n startingIndex\n );\n\n Ellipsoid.pack(value._ellipsoid, array, startingIndex);\n startingIndex += Ellipsoid.packedLength;\n\n VertexFormat.pack(value._vertexFormat, array, startingIndex);\n startingIndex += VertexFormat.packedLength;\n\n array[startingIndex++] = value._height;\n array[startingIndex++] = value._extrudedHeight;\n array[startingIndex++] = value._granularity;\n array[startingIndex++] = value._stRotation;\n array[startingIndex++] = value._perPositionHeightExtrude ? 1.0 : 0.0;\n array[startingIndex++] = value._perPositionHeight ? 1.0 : 0.0;\n array[startingIndex++] = value._closeTop ? 1.0 : 0.0;\n array[startingIndex++] = value._closeBottom ? 1.0 : 0.0;\n array[startingIndex++] = value._shadowVolume ? 1.0 : 0.0;\n array[startingIndex++] = defaultValue(value._offsetAttribute, -1);\n array[startingIndex++] = value._arcType;\n array[startingIndex] = value.packedLength;\n\n return array;\n};\n\nconst scratchEllipsoid = Ellipsoid.clone(Ellipsoid.UNIT_SPHERE);\nconst scratchVertexFormat = new VertexFormat();\n\n//Only used to avoid inability to default construct.\nconst dummyOptions = {\n polygonHierarchy: {},\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 {PolygonGeometry} [result] The object into which to store the result.\n */\nPolygonGeometry.unpack = function (array, startingIndex, result) {\n //>>includeStart('debug', pragmas.debug);\n Check.defined(\"array\", array);\n //>>includeEnd('debug');\n\n startingIndex = defaultValue(startingIndex, 0);\n\n const polygonHierarchy = PolygonGeometryLibrary.unpackPolygonHierarchy(\n array,\n startingIndex\n );\n startingIndex = polygonHierarchy.startingIndex;\n delete polygonHierarchy.startingIndex;\n\n const ellipsoid = Ellipsoid.unpack(array, startingIndex, scratchEllipsoid);\n startingIndex += Ellipsoid.packedLength;\n\n const vertexFormat = VertexFormat.unpack(\n array,\n startingIndex,\n scratchVertexFormat\n );\n startingIndex += VertexFormat.packedLength;\n\n const height = array[startingIndex++];\n const extrudedHeight = array[startingIndex++];\n const granularity = array[startingIndex++];\n const stRotation = array[startingIndex++];\n const perPositionHeightExtrude = array[startingIndex++] === 1.0;\n const perPositionHeight = array[startingIndex++] === 1.0;\n const closeTop = array[startingIndex++] === 1.0;\n const closeBottom = array[startingIndex++] === 1.0;\n const shadowVolume = array[startingIndex++] === 1.0;\n const offsetAttribute = array[startingIndex++];\n const arcType = array[startingIndex++];\n const packedLength = array[startingIndex];\n\n if (!defined(result)) {\n result = new PolygonGeometry(dummyOptions);\n }\n\n result._polygonHierarchy = polygonHierarchy;\n result._ellipsoid = Ellipsoid.clone(ellipsoid, result._ellipsoid);\n result._vertexFormat = VertexFormat.clone(vertexFormat, result._vertexFormat);\n result._height = height;\n result._extrudedHeight = extrudedHeight;\n result._granularity = granularity;\n result._stRotation = stRotation;\n result._perPositionHeightExtrude = perPositionHeightExtrude;\n result._perPositionHeight = perPositionHeight;\n result._closeTop = closeTop;\n result._closeBottom = closeBottom;\n result._shadowVolume = shadowVolume;\n result._offsetAttribute =\n offsetAttribute === -1 ? undefined : offsetAttribute;\n result._arcType = arcType;\n result.packedLength = packedLength;\n return result;\n};\n\n/**\n * Returns the bounding rectangle given the provided options\n *\n * @param {Object} options Object with the following properties:\n * @param {PolygonHierarchy} options.polygonHierarchy A polygon hierarchy that can include holes.\n * @param {Number} [options.granularity=CesiumMath.RADIANS_PER_DEGREE] The distance, in radians, between each latitude and longitude. Determines the number of positions sampled.\n * @param {ArcType} [options.arcType=ArcType.GEODESIC] The type of line the polygon edges must follow. Valid options are {@link ArcType.GEODESIC} and {@link ArcType.RHUMB}.\n * @param {Ellipsoid} [options.ellipsoid=Ellipsoid.WGS84] The ellipsoid to be used as a reference.\n * @param {Rectangle} [result] An object in which to store the result.\n *\n * @returns {Rectangle} The result rectangle\n */\nPolygonGeometry.computeRectangle = function (options, result) {\n //>>includeStart('debug', pragmas.debug);\n Check.typeOf.object(\"options\", options);\n Check.typeOf.object(\"options.polygonHierarchy\", options.polygonHierarchy);\n //>>includeEnd('debug');\n\n const granularity = defaultValue(\n options.granularity,\n CesiumMath.RADIANS_PER_DEGREE\n );\n const arcType = defaultValue(options.arcType, ArcType.GEODESIC);\n //>>includeStart('debug', pragmas.debug);\n if (arcType !== ArcType.GEODESIC && arcType !== ArcType.RHUMB) {\n throw new DeveloperError(\n \"Invalid arcType. Valid options are ArcType.GEODESIC and ArcType.RHUMB.\"\n );\n }\n //>>includeEnd('debug');\n\n const polygonHierarchy = options.polygonHierarchy;\n const ellipsoid = defaultValue(options.ellipsoid, Ellipsoid.WGS84);\n\n return computeRectangle(\n polygonHierarchy.positions,\n ellipsoid,\n arcType,\n granularity,\n result\n );\n};\n\n/**\n * Computes the geometric representation of a polygon, including its vertices, indices, and a bounding sphere.\n *\n * @param {PolygonGeometry} polygonGeometry A description of the polygon.\n * @returns {Geometry|undefined} The computed vertices and indices.\n */\nPolygonGeometry.createGeometry = function (polygonGeometry) {\n const vertexFormat = polygonGeometry._vertexFormat;\n const ellipsoid = polygonGeometry._ellipsoid;\n const granularity = polygonGeometry._granularity;\n const stRotation = polygonGeometry._stRotation;\n const polygonHierarchy = polygonGeometry._polygonHierarchy;\n const perPositionHeight = polygonGeometry._perPositionHeight;\n const closeTop = polygonGeometry._closeTop;\n const closeBottom = polygonGeometry._closeBottom;\n const arcType = polygonGeometry._arcType;\n\n let outerPositions = polygonHierarchy.positions;\n if (outerPositions.length < 3) {\n return;\n }\n\n const tangentPlane = EllipsoidTangentPlane.fromPoints(\n outerPositions,\n ellipsoid\n );\n\n const results = PolygonGeometryLibrary.polygonsFromHierarchy(\n polygonHierarchy,\n tangentPlane.projectPointsOntoPlane.bind(tangentPlane),\n !perPositionHeight,\n ellipsoid\n );\n\n const hierarchy = results.hierarchy;\n const polygons = results.polygons;\n\n if (hierarchy.length === 0) {\n return;\n }\n\n outerPositions = hierarchy[0].outerRing;\n const boundingRectangle = PolygonGeometryLibrary.computeBoundingRectangle(\n tangentPlane.plane.normal,\n tangentPlane.projectPointOntoPlane.bind(tangentPlane),\n outerPositions,\n stRotation,\n scratchBoundingRectangle\n );\n\n const geometries = [];\n\n const height = polygonGeometry._height;\n const extrudedHeight = polygonGeometry._extrudedHeight;\n const extrude =\n polygonGeometry._perPositionHeightExtrude ||\n !CesiumMath.equalsEpsilon(height, extrudedHeight, 0, CesiumMath.EPSILON2);\n\n const options = {\n perPositionHeight: perPositionHeight,\n vertexFormat: vertexFormat,\n geometry: undefined,\n tangentPlane: tangentPlane,\n boundingRectangle: boundingRectangle,\n ellipsoid: ellipsoid,\n stRotation: stRotation,\n bottom: false,\n top: true,\n wall: false,\n extrude: false,\n arcType: arcType,\n };\n\n let i;\n\n if (extrude) {\n options.extrude = true;\n options.top = closeTop;\n options.bottom = closeBottom;\n options.shadowVolume = polygonGeometry._shadowVolume;\n options.offsetAttribute = polygonGeometry._offsetAttribute;\n for (i = 0; i < polygons.length; i++) {\n const splitGeometry = createGeometryFromPositionsExtruded(\n ellipsoid,\n polygons[i],\n granularity,\n hierarchy[i],\n perPositionHeight,\n closeTop,\n closeBottom,\n vertexFormat,\n arcType\n );\n\n let topAndBottom;\n if (closeTop && closeBottom) {\n topAndBottom = splitGeometry.topAndBottom;\n options.geometry = PolygonGeometryLibrary.scaleToGeodeticHeightExtruded(\n topAndBottom.geometry,\n height,\n extrudedHeight,\n ellipsoid,\n perPositionHeight\n );\n } else if (closeTop) {\n topAndBottom = splitGeometry.topAndBottom;\n topAndBottom.geometry.attributes.position.values = PolygonPipeline.scaleToGeodeticHeight(\n topAndBottom.geometry.attributes.position.values,\n height,\n ellipsoid,\n !perPositionHeight\n );\n options.geometry = topAndBottom.geometry;\n } else if (closeBottom) {\n topAndBottom = splitGeometry.topAndBottom;\n topAndBottom.geometry.attributes.position.values = PolygonPipeline.scaleToGeodeticHeight(\n topAndBottom.geometry.attributes.position.values,\n extrudedHeight,\n ellipsoid,\n true\n );\n options.geometry = topAndBottom.geometry;\n }\n if (closeTop || closeBottom) {\n options.wall = false;\n topAndBottom.geometry = computeAttributes(options);\n geometries.push(topAndBottom);\n }\n\n const walls = splitGeometry.walls;\n options.wall = true;\n for (let k = 0; k < walls.length; k++) {\n const wall = walls[k];\n options.geometry = PolygonGeometryLibrary.scaleToGeodeticHeightExtruded(\n wall.geometry,\n height,\n extrudedHeight,\n ellipsoid,\n perPositionHeight\n );\n wall.geometry = computeAttributes(options);\n geometries.push(wall);\n }\n }\n } else {\n for (i = 0; i < polygons.length; i++) {\n const geometryInstance = new GeometryInstance({\n geometry: PolygonGeometryLibrary.createGeometryFromPositions(\n ellipsoid,\n polygons[i],\n granularity,\n perPositionHeight,\n vertexFormat,\n arcType\n ),\n });\n geometryInstance.geometry.attributes.position.values = PolygonPipeline.scaleToGeodeticHeight(\n geometryInstance.geometry.attributes.position.values,\n height,\n ellipsoid,\n !perPositionHeight\n );\n options.geometry = geometryInstance.geometry;\n geometryInstance.geometry = computeAttributes(options);\n\n if (defined(polygonGeometry._offsetAttribute)) {\n const length =\n geometryInstance.geometry.attributes.position.values.length;\n const applyOffset = new Uint8Array(length / 3);\n const offsetValue =\n polygonGeometry._offsetAttribute === GeometryOffsetAttribute.NONE\n ? 0\n : 1;\n arrayFill(applyOffset, offsetValue);\n geometryInstance.geometry.attributes.applyOffset = new GeometryAttribute(\n {\n componentDatatype: ComponentDatatype.UNSIGNED_BYTE,\n componentsPerAttribute: 1,\n values: applyOffset,\n }\n );\n }\n\n geometries.push(geometryInstance);\n }\n }\n\n const geometry = GeometryPipeline.combineInstances(geometries)[0];\n geometry.attributes.position.values = new Float64Array(\n geometry.attributes.position.values\n );\n geometry.indices = IndexDatatype.createTypedArray(\n geometry.attributes.position.values.length / 3,\n geometry.indices\n );\n\n const attributes = geometry.attributes;\n const boundingSphere = BoundingSphere.fromVertices(\n attributes.position.values\n );\n\n if (!vertexFormat.position) {\n delete attributes.position;\n }\n\n return new Geometry({\n attributes: attributes,\n indices: geometry.indices,\n primitiveType: geometry.primitiveType,\n boundingSphere: boundingSphere,\n offsetAttribute: polygonGeometry._offsetAttribute,\n });\n};\n\n/**\n * @private\n */\nPolygonGeometry.createShadowVolume = function (\n polygonGeometry,\n minHeightFunc,\n maxHeightFunc\n) {\n const granularity = polygonGeometry._granularity;\n const ellipsoid = polygonGeometry._ellipsoid;\n\n const minHeight = minHeightFunc(granularity, ellipsoid);\n const maxHeight = maxHeightFunc(granularity, ellipsoid);\n\n return new PolygonGeometry({\n polygonHierarchy: polygonGeometry._polygonHierarchy,\n ellipsoid: ellipsoid,\n stRotation: polygonGeometry._stRotation,\n granularity: granularity,\n perPositionHeight: false,\n extrudedHeight: minHeight,\n height: maxHeight,\n vertexFormat: VertexFormat.POSITION_ONLY,\n shadowVolume: true,\n arcType: polygonGeometry._arcType,\n });\n};\n\nfunction textureCoordinateRotationPoints(polygonGeometry) {\n const stRotation = -polygonGeometry._stRotation;\n if (stRotation === 0.0) {\n return [0, 0, 0, 1, 1, 0];\n }\n const ellipsoid = polygonGeometry._ellipsoid;\n const positions = polygonGeometry._polygonHierarchy.positions;\n const boundingRectangle = polygonGeometry.rectangle;\n return Geometry._textureCoordinateRotationPoints(\n positions,\n stRotation,\n ellipsoid,\n boundingRectangle\n );\n}\n\nObject.defineProperties(PolygonGeometry.prototype, {\n /**\n * @private\n */\n rectangle: {\n get: function () {\n if (!defined(this._rectangle)) {\n const positions = this._polygonHierarchy.positions;\n this._rectangle = computeRectangle(\n positions,\n this._ellipsoid,\n this._arcType,\n this._granularity\n );\n }\n\n return this._rectangle;\n },\n },\n /**\n * For remapping texture coordinates when rendering PolygonGeometries 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 PolygonGeometry;\n","import defined from \"../Core/defined.js\";\nimport Ellipsoid from \"../Core/Ellipsoid.js\";\nimport PolygonGeometry from \"../Core/PolygonGeometry.js\";\n\nfunction createPolygonGeometry(polygonGeometry, offset) {\n if (defined(offset)) {\n polygonGeometry = PolygonGeometry.unpack(polygonGeometry, offset);\n }\n polygonGeometry._ellipsoid = Ellipsoid.clone(polygonGeometry._ellipsoid);\n return PolygonGeometry.createGeometry(polygonGeometry);\n}\nexport default createPolygonGeometry;\n"],"names":["Cartographic","BoundingRectangle","Cartesian3","Cartesian2","Quaternion","Matrix3","CesiumMath","GeometryAttribute","ComponentDatatype","defined","GeometryOffsetAttribute","arrayFill","EllipsoidGeodesic","defaultValue","Rectangle","ArcType","PolygonGeometryLibrary","IndexDatatype","GeometryInstance","EllipsoidTangentPlane","PolygonPipeline","WindingOrder","Check","DeveloperError","VertexFormat","Ellipsoid","GeometryPipeline","BoundingSphere","Geometry"],"mappings":"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"}