{"version":3,"file":"PolygonGeometryLibrary-0f4bb1aa.js","sources":["../../../../Source/Core/Queue.js","../../../../Source/Core/PolygonGeometryLibrary.js"],"sourcesContent":["/**\n * A queue that can enqueue items at the end, and dequeue items from the front.\n *\n * @alias Queue\n * @constructor\n */\nfunction Queue() {\n this._array = [];\n this._offset = 0;\n this._length = 0;\n}\n\nObject.defineProperties(Queue.prototype, {\n /**\n * The length of the queue.\n *\n * @memberof Queue.prototype\n *\n * @type {Number}\n * @readonly\n */\n length: {\n get: function () {\n return this._length;\n },\n },\n});\n\n/**\n * Enqueues the specified item.\n *\n * @param {*} item The item to enqueue.\n */\nQueue.prototype.enqueue = function (item) {\n this._array.push(item);\n this._length++;\n};\n\n/**\n * Dequeues an item. Returns undefined if the queue is empty.\n *\n * @returns {*} The the dequeued item.\n */\nQueue.prototype.dequeue = function () {\n if (this._length === 0) {\n return undefined;\n }\n\n const array = this._array;\n let offset = this._offset;\n const item = array[offset];\n array[offset] = undefined;\n\n offset++;\n if (offset > 10 && offset * 2 > array.length) {\n //compact array\n this._array = array.slice(offset);\n offset = 0;\n }\n\n this._offset = offset;\n this._length--;\n\n return item;\n};\n\n/**\n * Returns the item at the front of the queue. Returns undefined if the queue is empty.\n *\n * @returns {*} The item at the front of the queue.\n */\nQueue.prototype.peek = function () {\n if (this._length === 0) {\n return undefined;\n }\n\n return this._array[this._offset];\n};\n\n/**\n * Check whether this queue contains the specified item.\n *\n * @param {*} item The item to search for.\n */\nQueue.prototype.contains = function (item) {\n return this._array.indexOf(item) !== -1;\n};\n\n/**\n * Remove all items from the queue.\n */\nQueue.prototype.clear = function () {\n this._array.length = this._offset = this._length = 0;\n};\n\n/**\n * Sort the items in the queue in-place.\n *\n * @param {Queue.Comparator} compareFunction A function that defines the sort order.\n */\nQueue.prototype.sort = function (compareFunction) {\n if (this._offset > 0) {\n //compact array\n this._array = this._array.slice(this._offset);\n this._offset = 0;\n }\n\n this._array.sort(compareFunction);\n};\n\n/**\n * A function used to compare two items while sorting a queue.\n * @callback Queue.Comparator\n *\n * @param {*} a An item in the array.\n * @param {*} b An item in the array.\n * @returns {Number} Returns a negative value if a is less than b,\n * a positive value if a is greater than b, or\n * 0 if a is equal to b.\n *\n * @example\n * function compareNumbers(a, b) {\n * return a - b;\n * }\n */\nexport default Queue;\n","import ArcType from \"./ArcType.js\";\nimport arrayRemoveDuplicates from \"./arrayRemoveDuplicates.js\";\nimport Cartesian2 from \"./Cartesian2.js\";\nimport Cartesian3 from \"./Cartesian3.js\";\nimport Cartographic from \"./Cartographic.js\";\nimport ComponentDatatype from \"./ComponentDatatype.js\";\nimport defaultValue from \"./defaultValue.js\";\nimport defined from \"./defined.js\";\nimport Ellipsoid from \"./Ellipsoid.js\";\nimport EllipsoidRhumbLine from \"./EllipsoidRhumbLine.js\";\nimport Geometry from \"./Geometry.js\";\nimport GeometryAttribute from \"./GeometryAttribute.js\";\nimport GeometryAttributes from \"./GeometryAttributes.js\";\nimport GeometryPipeline from \"./GeometryPipeline.js\";\nimport IndexDatatype from \"./IndexDatatype.js\";\nimport CesiumMath from \"./Math.js\";\nimport Matrix3 from \"./Matrix3.js\";\nimport PolygonPipeline from \"./PolygonPipeline.js\";\nimport PrimitiveType from \"./PrimitiveType.js\";\nimport Quaternion from \"./Quaternion.js\";\nimport Queue from \"./Queue.js\";\nimport WindingOrder from \"./WindingOrder.js\";\n\n/**\n * @private\n */\nconst PolygonGeometryLibrary = {};\n\nPolygonGeometryLibrary.computeHierarchyPackedLength = function (\n polygonHierarchy,\n CartesianX\n) {\n let numComponents = 0;\n const stack = [polygonHierarchy];\n while (stack.length > 0) {\n const hierarchy = stack.pop();\n if (!defined(hierarchy)) {\n continue;\n }\n\n numComponents += 2;\n\n const positions = hierarchy.positions;\n const holes = hierarchy.holes;\n\n if (defined(positions) && positions.length > 0) {\n numComponents += positions.length * CartesianX.packedLength;\n }\n\n if (defined(holes)) {\n const length = holes.length;\n for (let i = 0; i < length; ++i) {\n stack.push(holes[i]);\n }\n }\n }\n\n return numComponents;\n};\n\nPolygonGeometryLibrary.packPolygonHierarchy = function (\n polygonHierarchy,\n array,\n startingIndex,\n CartesianX\n) {\n const stack = [polygonHierarchy];\n while (stack.length > 0) {\n const hierarchy = stack.pop();\n if (!defined(hierarchy)) {\n continue;\n }\n\n const positions = hierarchy.positions;\n const holes = hierarchy.holes;\n\n array[startingIndex++] = defined(positions) ? positions.length : 0;\n array[startingIndex++] = defined(holes) ? holes.length : 0;\n\n if (defined(positions)) {\n const positionsLength = positions.length;\n for (\n let i = 0;\n i < positionsLength;\n ++i, startingIndex += CartesianX.packedLength\n ) {\n CartesianX.pack(positions[i], array, startingIndex);\n }\n }\n\n if (defined(holes)) {\n const holesLength = holes.length;\n for (let j = 0; j < holesLength; ++j) {\n stack.push(holes[j]);\n }\n }\n }\n\n return startingIndex;\n};\n\nPolygonGeometryLibrary.unpackPolygonHierarchy = function (\n array,\n startingIndex,\n CartesianX\n) {\n const positionsLength = array[startingIndex++];\n const holesLength = array[startingIndex++];\n\n const positions = new Array(positionsLength);\n const holes = holesLength > 0 ? new Array(holesLength) : undefined;\n\n for (\n let i = 0;\n i < positionsLength;\n ++i, startingIndex += CartesianX.packedLength\n ) {\n positions[i] = CartesianX.unpack(array, startingIndex);\n }\n\n for (let j = 0; j < holesLength; ++j) {\n holes[j] = PolygonGeometryLibrary.unpackPolygonHierarchy(\n array,\n startingIndex,\n CartesianX\n );\n startingIndex = holes[j].startingIndex;\n delete holes[j].startingIndex;\n }\n\n return {\n positions: positions,\n holes: holes,\n startingIndex: startingIndex,\n };\n};\n\nconst distance2DScratch = new Cartesian2();\nfunction getPointAtDistance2D(p0, p1, distance, length) {\n Cartesian2.subtract(p1, p0, distance2DScratch);\n Cartesian2.multiplyByScalar(\n distance2DScratch,\n distance / length,\n distance2DScratch\n );\n Cartesian2.add(p0, distance2DScratch, distance2DScratch);\n return [distance2DScratch.x, distance2DScratch.y];\n}\n\nconst distanceScratch = new Cartesian3();\nfunction getPointAtDistance(p0, p1, distance, length) {\n Cartesian3.subtract(p1, p0, distanceScratch);\n Cartesian3.multiplyByScalar(\n distanceScratch,\n distance / length,\n distanceScratch\n );\n Cartesian3.add(p0, distanceScratch, distanceScratch);\n return [distanceScratch.x, distanceScratch.y, distanceScratch.z];\n}\n\nPolygonGeometryLibrary.subdivideLineCount = function (p0, p1, minDistance) {\n const distance = Cartesian3.distance(p0, p1);\n const n = distance / minDistance;\n const countDivide = Math.max(0, Math.ceil(CesiumMath.log2(n)));\n return Math.pow(2, countDivide);\n};\n\nconst scratchCartographic0 = new Cartographic();\nconst scratchCartographic1 = new Cartographic();\nconst scratchCartographic2 = new Cartographic();\nconst scratchCartesian0 = new Cartesian3();\nconst scratchRhumbLine = new EllipsoidRhumbLine();\nPolygonGeometryLibrary.subdivideRhumbLineCount = function (\n ellipsoid,\n p0,\n p1,\n minDistance\n) {\n const c0 = ellipsoid.cartesianToCartographic(p0, scratchCartographic0);\n const c1 = ellipsoid.cartesianToCartographic(p1, scratchCartographic1);\n const rhumb = new EllipsoidRhumbLine(c0, c1, ellipsoid);\n const n = rhumb.surfaceDistance / minDistance;\n const countDivide = Math.max(0, Math.ceil(CesiumMath.log2(n)));\n return Math.pow(2, countDivide);\n};\n\n/**\n * Subdivides texture coordinates based on the subdivision of the associated world positions.\n *\n * @param {Cartesian2} t0 First texture coordinate.\n * @param {Cartesian2} t1 Second texture coordinate.\n * @param {Cartesian3} p0 First world position.\n * @param {Cartesian3} p1 Second world position.\n * @param {Number} minDistance Minimum distance for a segment.\n * @param {Array} result The subdivided texture coordinates.\n *\n * @private\n */\nPolygonGeometryLibrary.subdivideTexcoordLine = function (\n t0,\n t1,\n p0,\n p1,\n minDistance,\n result\n) {\n // Compute the number of subdivisions.\n const subdivisions = PolygonGeometryLibrary.subdivideLineCount(\n p0,\n p1,\n minDistance\n );\n\n // Compute the distance between each subdivided point.\n const length2D = Cartesian2.distance(t0, t1);\n const distanceBetweenCoords = length2D / subdivisions;\n\n // Resize the result array.\n const texcoords = result;\n texcoords.length = subdivisions * 2;\n\n // Compute texture coordinates using linear interpolation.\n let index = 0;\n for (let i = 0; i < subdivisions; i++) {\n const t = getPointAtDistance2D(t0, t1, i * distanceBetweenCoords, length2D);\n texcoords[index++] = t[0];\n texcoords[index++] = t[1];\n }\n\n return texcoords;\n};\n\nPolygonGeometryLibrary.subdivideLine = function (p0, p1, minDistance, result) {\n const numVertices = PolygonGeometryLibrary.subdivideLineCount(\n p0,\n p1,\n minDistance\n );\n const length = Cartesian3.distance(p0, p1);\n const distanceBetweenVertices = length / numVertices;\n\n if (!defined(result)) {\n result = [];\n }\n\n const positions = result;\n positions.length = numVertices * 3;\n\n let index = 0;\n for (let i = 0; i < numVertices; i++) {\n const p = getPointAtDistance(p0, p1, i * distanceBetweenVertices, length);\n positions[index++] = p[0];\n positions[index++] = p[1];\n positions[index++] = p[2];\n }\n\n return positions;\n};\n\n/**\n * Subdivides texture coordinates based on the subdivision of the associated world positions using a rhumb line.\n *\n * @param {Cartesian2} t0 First texture coordinate.\n * @param {Cartesian2} t1 Second texture coordinate.\n * @param {Ellipsoid} ellipsoid The ellipsoid.\n * @param {Cartesian3} p0 First world position.\n * @param {Cartesian3} p1 Second world position.\n * @param {Number} minDistance Minimum distance for a segment.\n * @param {Array} result The subdivided texture coordinates.\n *\n * @private\n */\nPolygonGeometryLibrary.subdivideTexcoordRhumbLine = function (\n t0,\n t1,\n ellipsoid,\n p0,\n p1,\n minDistance,\n result\n) {\n // Compute the surface distance.\n const c0 = ellipsoid.cartesianToCartographic(p0, scratchCartographic0);\n const c1 = ellipsoid.cartesianToCartographic(p1, scratchCartographic1);\n scratchRhumbLine.setEndPoints(c0, c1);\n const n = scratchRhumbLine.surfaceDistance / minDistance;\n\n // Compute the number of subdivisions.\n const countDivide = Math.max(0, Math.ceil(CesiumMath.log2(n)));\n const subdivisions = Math.pow(2, countDivide);\n\n // Compute the distance between each subdivided point.\n const length2D = Cartesian2.distance(t0, t1);\n const distanceBetweenCoords = length2D / subdivisions;\n\n // Resize the result array.\n const texcoords = result;\n texcoords.length = subdivisions * 2;\n\n // Compute texture coordinates using linear interpolation.\n let index = 0;\n for (let i = 0; i < subdivisions; i++) {\n const t = getPointAtDistance2D(t0, t1, i * distanceBetweenCoords, length2D);\n texcoords[index++] = t[0];\n texcoords[index++] = t[1];\n }\n\n return texcoords;\n};\n\nPolygonGeometryLibrary.subdivideRhumbLine = function (\n ellipsoid,\n p0,\n p1,\n minDistance,\n result\n) {\n const c0 = ellipsoid.cartesianToCartographic(p0, scratchCartographic0);\n const c1 = ellipsoid.cartesianToCartographic(p1, scratchCartographic1);\n const rhumb = new EllipsoidRhumbLine(c0, c1, ellipsoid);\n\n const n = rhumb.surfaceDistance / minDistance;\n const countDivide = Math.max(0, Math.ceil(CesiumMath.log2(n)));\n const numVertices = Math.pow(2, countDivide);\n const distanceBetweenVertices = rhumb.surfaceDistance / numVertices;\n\n if (!defined(result)) {\n result = [];\n }\n\n const positions = result;\n positions.length = numVertices * 3;\n\n let index = 0;\n for (let i = 0; i < numVertices; i++) {\n const c = rhumb.interpolateUsingSurfaceDistance(\n i * distanceBetweenVertices,\n scratchCartographic2\n );\n const p = ellipsoid.cartographicToCartesian(c, scratchCartesian0);\n positions[index++] = p.x;\n positions[index++] = p.y;\n positions[index++] = p.z;\n }\n\n return positions;\n};\n\nconst scaleToGeodeticHeightN1 = new Cartesian3();\nconst scaleToGeodeticHeightN2 = new Cartesian3();\nconst scaleToGeodeticHeightP1 = new Cartesian3();\nconst scaleToGeodeticHeightP2 = new Cartesian3();\n\nPolygonGeometryLibrary.scaleToGeodeticHeightExtruded = function (\n geometry,\n maxHeight,\n minHeight,\n ellipsoid,\n perPositionHeight\n) {\n ellipsoid = defaultValue(ellipsoid, Ellipsoid.WGS84);\n\n const n1 = scaleToGeodeticHeightN1;\n let n2 = scaleToGeodeticHeightN2;\n const p = scaleToGeodeticHeightP1;\n let p2 = scaleToGeodeticHeightP2;\n\n if (\n defined(geometry) &&\n defined(geometry.attributes) &&\n defined(geometry.attributes.position)\n ) {\n const positions = geometry.attributes.position.values;\n const length = positions.length / 2;\n\n for (let i = 0; i < length; i += 3) {\n Cartesian3.fromArray(positions, i, p);\n\n ellipsoid.geodeticSurfaceNormal(p, n1);\n p2 = ellipsoid.scaleToGeodeticSurface(p, p2);\n n2 = Cartesian3.multiplyByScalar(n1, minHeight, n2);\n n2 = Cartesian3.add(p2, n2, n2);\n positions[i + length] = n2.x;\n positions[i + 1 + length] = n2.y;\n positions[i + 2 + length] = n2.z;\n\n if (perPositionHeight) {\n p2 = Cartesian3.clone(p, p2);\n }\n n2 = Cartesian3.multiplyByScalar(n1, maxHeight, n2);\n n2 = Cartesian3.add(p2, n2, n2);\n positions[i] = n2.x;\n positions[i + 1] = n2.y;\n positions[i + 2] = n2.z;\n }\n }\n return geometry;\n};\n\nPolygonGeometryLibrary.polygonOutlinesFromHierarchy = function (\n polygonHierarchy,\n scaleToEllipsoidSurface,\n ellipsoid\n) {\n // create from a polygon hierarchy\n // Algorithm adapted from http://www.geometrictools.com/Documentation/TriangulationByEarClipping.pdf\n const polygons = [];\n const queue = new Queue();\n queue.enqueue(polygonHierarchy);\n let i;\n let j;\n let length;\n while (queue.length !== 0) {\n const outerNode = queue.dequeue();\n let outerRing = outerNode.positions;\n if (scaleToEllipsoidSurface) {\n length = outerRing.length;\n for (i = 0; i < length; i++) {\n ellipsoid.scaleToGeodeticSurface(outerRing[i], outerRing[i]);\n }\n }\n outerRing = arrayRemoveDuplicates(\n outerRing,\n Cartesian3.equalsEpsilon,\n true\n );\n if (outerRing.length < 3) {\n continue;\n }\n\n const numChildren = outerNode.holes ? outerNode.holes.length : 0;\n // The outer polygon contains inner polygons\n for (i = 0; i < numChildren; i++) {\n const hole = outerNode.holes[i];\n let holePositions = hole.positions;\n if (scaleToEllipsoidSurface) {\n length = holePositions.length;\n for (j = 0; j < length; ++j) {\n ellipsoid.scaleToGeodeticSurface(holePositions[j], holePositions[j]);\n }\n }\n holePositions = arrayRemoveDuplicates(\n holePositions,\n Cartesian3.equalsEpsilon,\n true\n );\n if (holePositions.length < 3) {\n continue;\n }\n polygons.push(holePositions);\n\n let numGrandchildren = 0;\n if (defined(hole.holes)) {\n numGrandchildren = hole.holes.length;\n }\n\n for (j = 0; j < numGrandchildren; j++) {\n queue.enqueue(hole.holes[j]);\n }\n }\n\n polygons.push(outerRing);\n }\n\n return polygons;\n};\n\nPolygonGeometryLibrary.polygonsFromHierarchy = function (\n polygonHierarchy,\n keepDuplicates,\n projectPointsTo2D,\n scaleToEllipsoidSurface,\n ellipsoid\n) {\n // create from a polygon hierarchy\n // Algorithm adapted from http://www.geometrictools.com/Documentation/TriangulationByEarClipping.pdf\n const hierarchy = [];\n const polygons = [];\n\n const queue = new Queue();\n queue.enqueue(polygonHierarchy);\n\n while (queue.length !== 0) {\n const outerNode = queue.dequeue();\n let outerRing = outerNode.positions;\n const holes = outerNode.holes;\n\n let i;\n let length;\n if (scaleToEllipsoidSurface) {\n length = outerRing.length;\n for (i = 0; i < length; i++) {\n ellipsoid.scaleToGeodeticSurface(outerRing[i], outerRing[i]);\n }\n }\n\n if (!keepDuplicates) {\n outerRing = arrayRemoveDuplicates(\n outerRing,\n Cartesian3.equalsEpsilon,\n true\n );\n }\n if (outerRing.length < 3) {\n continue;\n }\n\n let positions2D = projectPointsTo2D(outerRing);\n if (!defined(positions2D)) {\n continue;\n }\n const holeIndices = [];\n\n let originalWindingOrder = PolygonPipeline.computeWindingOrder2D(\n positions2D\n );\n if (originalWindingOrder === WindingOrder.CLOCKWISE) {\n positions2D.reverse();\n outerRing = outerRing.slice().reverse();\n }\n\n let positions = outerRing.slice();\n const numChildren = defined(holes) ? holes.length : 0;\n const polygonHoles = [];\n let j;\n\n for (i = 0; i < numChildren; i++) {\n const hole = holes[i];\n let holePositions = hole.positions;\n if (scaleToEllipsoidSurface) {\n length = holePositions.length;\n for (j = 0; j < length; ++j) {\n ellipsoid.scaleToGeodeticSurface(holePositions[j], holePositions[j]);\n }\n }\n\n if (!keepDuplicates) {\n holePositions = arrayRemoveDuplicates(\n holePositions,\n Cartesian3.equalsEpsilon,\n true\n );\n }\n if (holePositions.length < 3) {\n continue;\n }\n\n const holePositions2D = projectPointsTo2D(holePositions);\n if (!defined(holePositions2D)) {\n continue;\n }\n\n originalWindingOrder = PolygonPipeline.computeWindingOrder2D(\n holePositions2D\n );\n if (originalWindingOrder === WindingOrder.CLOCKWISE) {\n holePositions2D.reverse();\n holePositions = holePositions.slice().reverse();\n }\n\n polygonHoles.push(holePositions);\n holeIndices.push(positions.length);\n positions = positions.concat(holePositions);\n positions2D = positions2D.concat(holePositions2D);\n\n let numGrandchildren = 0;\n if (defined(hole.holes)) {\n numGrandchildren = hole.holes.length;\n }\n\n for (j = 0; j < numGrandchildren; j++) {\n queue.enqueue(hole.holes[j]);\n }\n }\n\n hierarchy.push({\n outerRing: outerRing,\n holes: polygonHoles,\n });\n polygons.push({\n positions: positions,\n positions2D: positions2D,\n holes: holeIndices,\n });\n }\n\n return {\n hierarchy: hierarchy,\n polygons: polygons,\n };\n};\n\nconst computeBoundingRectangleCartesian2 = new Cartesian2();\nconst computeBoundingRectangleCartesian3 = new Cartesian3();\nconst computeBoundingRectangleQuaternion = new Quaternion();\nconst computeBoundingRectangleMatrix3 = new Matrix3();\nPolygonGeometryLibrary.computeBoundingRectangle = function (\n planeNormal,\n projectPointTo2D,\n positions,\n angle,\n result\n) {\n const rotation = Quaternion.fromAxisAngle(\n planeNormal,\n angle,\n computeBoundingRectangleQuaternion\n );\n const textureMatrix = Matrix3.fromQuaternion(\n rotation,\n computeBoundingRectangleMatrix3\n );\n\n let minX = Number.POSITIVE_INFINITY;\n let maxX = Number.NEGATIVE_INFINITY;\n let minY = Number.POSITIVE_INFINITY;\n let maxY = Number.NEGATIVE_INFINITY;\n\n const length = positions.length;\n for (let i = 0; i < length; ++i) {\n const p = Cartesian3.clone(\n positions[i],\n computeBoundingRectangleCartesian3\n );\n Matrix3.multiplyByVector(textureMatrix, p, p);\n const st = projectPointTo2D(p, computeBoundingRectangleCartesian2);\n\n if (defined(st)) {\n minX = Math.min(minX, st.x);\n maxX = Math.max(maxX, st.x);\n\n minY = Math.min(minY, st.y);\n maxY = Math.max(maxY, st.y);\n }\n }\n\n result.x = minX;\n result.y = minY;\n result.width = maxX - minX;\n result.height = maxY - minY;\n return result;\n};\n\nPolygonGeometryLibrary.createGeometryFromPositions = function (\n ellipsoid,\n polygon,\n textureCoordinates,\n granularity,\n perPositionHeight,\n vertexFormat,\n arcType\n) {\n let indices = PolygonPipeline.triangulate(polygon.positions2D, polygon.holes);\n\n /* If polygon is completely unrenderable, just use the first three vertices */\n if (indices.length < 3) {\n indices = [0, 1, 2];\n }\n\n const positions = polygon.positions;\n\n const hasTexcoords = defined(textureCoordinates);\n const texcoords = hasTexcoords ? textureCoordinates.positions : undefined;\n\n if (perPositionHeight) {\n const length = positions.length;\n const flattenedPositions = new Array(length * 3);\n let index = 0;\n for (let i = 0; i < length; i++) {\n const p = positions[i];\n flattenedPositions[index++] = p.x;\n flattenedPositions[index++] = p.y;\n flattenedPositions[index++] = p.z;\n }\n\n const geometryOptions = {\n attributes: {\n position: new GeometryAttribute({\n componentDatatype: ComponentDatatype.DOUBLE,\n componentsPerAttribute: 3,\n values: flattenedPositions,\n }),\n },\n indices: indices,\n primitiveType: PrimitiveType.TRIANGLES,\n };\n\n if (hasTexcoords) {\n geometryOptions.attributes.st = new GeometryAttribute({\n componentDatatype: ComponentDatatype.FLOAT,\n componentsPerAttribute: 2,\n values: Cartesian2.packArray(texcoords),\n });\n }\n\n const geometry = new Geometry(geometryOptions);\n\n if (vertexFormat.normal) {\n return GeometryPipeline.computeNormal(geometry);\n }\n\n return geometry;\n }\n\n if (arcType === ArcType.GEODESIC) {\n return PolygonPipeline.computeSubdivision(\n ellipsoid,\n positions,\n indices,\n texcoords,\n granularity\n );\n } else if (arcType === ArcType.RHUMB) {\n return PolygonPipeline.computeRhumbLineSubdivision(\n ellipsoid,\n positions,\n indices,\n texcoords,\n granularity\n );\n }\n};\n\nconst computeWallTexcoordsSubdivided = [];\nconst computeWallIndicesSubdivided = [];\nconst p1Scratch = new Cartesian3();\nconst p2Scratch = new Cartesian3();\n\nPolygonGeometryLibrary.computeWallGeometry = function (\n positions,\n textureCoordinates,\n ellipsoid,\n granularity,\n perPositionHeight,\n arcType\n) {\n let edgePositions;\n let topEdgeLength;\n let i;\n let p1;\n let p2;\n let t1;\n let t2;\n let edgeTexcoords;\n let topEdgeTexcoordLength;\n\n let length = positions.length;\n let index = 0;\n let textureIndex = 0;\n\n const hasTexcoords = defined(textureCoordinates);\n const texcoords = hasTexcoords ? textureCoordinates.positions : undefined;\n\n if (!perPositionHeight) {\n const minDistance = CesiumMath.chordLength(\n granularity,\n ellipsoid.maximumRadius\n );\n\n let numVertices = 0;\n if (arcType === ArcType.GEODESIC) {\n for (i = 0; i < length; i++) {\n numVertices += PolygonGeometryLibrary.subdivideLineCount(\n positions[i],\n positions[(i + 1) % length],\n minDistance\n );\n }\n } else if (arcType === ArcType.RHUMB) {\n for (i = 0; i < length; i++) {\n numVertices += PolygonGeometryLibrary.subdivideRhumbLineCount(\n ellipsoid,\n positions[i],\n positions[(i + 1) % length],\n minDistance\n );\n }\n }\n\n topEdgeLength = (numVertices + length) * 3;\n edgePositions = new Array(topEdgeLength * 2);\n\n if (hasTexcoords) {\n topEdgeTexcoordLength = (numVertices + length) * 2;\n edgeTexcoords = new Array(topEdgeTexcoordLength * 2);\n }\n\n for (i = 0; i < length; i++) {\n p1 = positions[i];\n p2 = positions[(i + 1) % length];\n\n let tempPositions;\n let tempTexcoords;\n\n if (hasTexcoords) {\n t1 = texcoords[i];\n t2 = texcoords[(i + 1) % length];\n }\n\n if (arcType === ArcType.GEODESIC) {\n tempPositions = PolygonGeometryLibrary.subdivideLine(\n p1,\n p2,\n minDistance,\n computeWallIndicesSubdivided\n );\n if (hasTexcoords) {\n tempTexcoords = PolygonGeometryLibrary.subdivideTexcoordLine(\n t1,\n t2,\n p1,\n p2,\n minDistance,\n computeWallTexcoordsSubdivided\n );\n }\n } else if (arcType === ArcType.RHUMB) {\n tempPositions = PolygonGeometryLibrary.subdivideRhumbLine(\n ellipsoid,\n p1,\n p2,\n minDistance,\n computeWallIndicesSubdivided\n );\n if (hasTexcoords) {\n tempTexcoords = PolygonGeometryLibrary.subdivideTexcoordRhumbLine(\n t1,\n t2,\n ellipsoid,\n p1,\n p2,\n minDistance,\n computeWallTexcoordsSubdivided\n );\n }\n }\n const tempPositionsLength = tempPositions.length;\n for (let j = 0; j < tempPositionsLength; ++j, ++index) {\n edgePositions[index] = tempPositions[j];\n edgePositions[index + topEdgeLength] = tempPositions[j];\n }\n\n edgePositions[index] = p2.x;\n edgePositions[index + topEdgeLength] = p2.x;\n ++index;\n\n edgePositions[index] = p2.y;\n edgePositions[index + topEdgeLength] = p2.y;\n ++index;\n\n edgePositions[index] = p2.z;\n edgePositions[index + topEdgeLength] = p2.z;\n ++index;\n\n if (hasTexcoords) {\n const tempTexcoordsLength = tempTexcoords.length;\n for (let k = 0; k < tempTexcoordsLength; ++k, ++textureIndex) {\n edgeTexcoords[textureIndex] = tempTexcoords[k];\n edgeTexcoords[textureIndex + topEdgeTexcoordLength] =\n tempTexcoords[k];\n }\n\n edgeTexcoords[textureIndex] = t2.x;\n edgeTexcoords[textureIndex + topEdgeTexcoordLength] = t2.x;\n ++textureIndex;\n\n edgeTexcoords[textureIndex] = t2.y;\n edgeTexcoords[textureIndex + topEdgeTexcoordLength] = t2.y;\n ++textureIndex;\n }\n }\n } else {\n topEdgeLength = length * 3 * 2;\n edgePositions = new Array(topEdgeLength * 2);\n\n if (hasTexcoords) {\n topEdgeTexcoordLength = length * 2 * 2;\n edgeTexcoords = new Array(topEdgeTexcoordLength * 2);\n }\n\n for (i = 0; i < length; i++) {\n p1 = positions[i];\n p2 = positions[(i + 1) % length];\n edgePositions[index] = edgePositions[index + topEdgeLength] = p1.x;\n ++index;\n edgePositions[index] = edgePositions[index + topEdgeLength] = p1.y;\n ++index;\n edgePositions[index] = edgePositions[index + topEdgeLength] = p1.z;\n ++index;\n edgePositions[index] = edgePositions[index + topEdgeLength] = p2.x;\n ++index;\n edgePositions[index] = edgePositions[index + topEdgeLength] = p2.y;\n ++index;\n edgePositions[index] = edgePositions[index + topEdgeLength] = p2.z;\n ++index;\n\n if (hasTexcoords) {\n t1 = texcoords[i];\n t2 = texcoords[(i + 1) % length];\n edgeTexcoords[textureIndex] = edgeTexcoords[\n textureIndex + topEdgeTexcoordLength\n ] = t1.x;\n ++textureIndex;\n edgeTexcoords[textureIndex] = edgeTexcoords[\n textureIndex + topEdgeTexcoordLength\n ] = t1.y;\n ++textureIndex;\n edgeTexcoords[textureIndex] = edgeTexcoords[\n textureIndex + topEdgeTexcoordLength\n ] = t2.x;\n ++textureIndex;\n edgeTexcoords[textureIndex] = edgeTexcoords[\n textureIndex + topEdgeTexcoordLength\n ] = t2.y;\n ++textureIndex;\n }\n }\n }\n\n length = edgePositions.length;\n const indices = IndexDatatype.createTypedArray(\n length / 3,\n length - positions.length * 6\n );\n let edgeIndex = 0;\n length /= 6;\n\n for (i = 0; i < length; i++) {\n const UL = i;\n const UR = UL + 1;\n const LL = UL + length;\n const LR = LL + 1;\n\n p1 = Cartesian3.fromArray(edgePositions, UL * 3, p1Scratch);\n p2 = Cartesian3.fromArray(edgePositions, UR * 3, p2Scratch);\n if (\n Cartesian3.equalsEpsilon(\n p1,\n p2,\n CesiumMath.EPSILON10,\n CesiumMath.EPSILON10\n )\n ) {\n //skip corner\n continue;\n }\n\n indices[edgeIndex++] = UL;\n indices[edgeIndex++] = LL;\n indices[edgeIndex++] = UR;\n indices[edgeIndex++] = UR;\n indices[edgeIndex++] = LL;\n indices[edgeIndex++] = LR;\n }\n\n const geometryOptions = {\n attributes: new GeometryAttributes({\n position: new GeometryAttribute({\n componentDatatype: ComponentDatatype.DOUBLE,\n componentsPerAttribute: 3,\n values: edgePositions,\n }),\n }),\n indices: indices,\n primitiveType: PrimitiveType.TRIANGLES,\n };\n\n if (hasTexcoords) {\n geometryOptions.attributes.st = new GeometryAttribute({\n componentDatatype: ComponentDatatype.FLOAT,\n componentsPerAttribute: 2,\n values: edgeTexcoords,\n });\n }\n\n const geometry = new Geometry(geometryOptions);\n\n return geometry;\n};\nexport default PolygonGeometryLibrary;\n"],"names":["defined","Cartesian2","Cartesian3","CesiumMath","Cartographic","EllipsoidRhumbLine","defaultValue","Ellipsoid","arrayRemoveDuplicates","PolygonPipeline","WindingOrder","Quaternion","Matrix3","GeometryAttribute","ComponentDatatype","PrimitiveType","Geometry","GeometryPipeline","ArcType","IndexDatatype","GeometryAttributes"],"mappings":"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"}