{"version":3,"file":"PolygonPipeline-5fd67ae2.js","sources":["../../../../Source/ThirdParty/earcut.js","../../../../Source/Core/WindingOrder.js","../../../../Source/Core/PolygonPipeline.js"],"sourcesContent":["/* This file is automatically rebuilt by the Cesium build process. */\nvar earcut_1 = earcut;\nvar _default = earcut;\n\nfunction earcut(data, holeIndices, dim) {\n\n dim = dim || 2;\n\n var hasHoles = holeIndices && holeIndices.length,\n outerLen = hasHoles ? holeIndices[0] * dim : data.length,\n outerNode = linkedList(data, 0, outerLen, dim, true),\n triangles = [];\n\n if (!outerNode || outerNode.next === outerNode.prev) return triangles;\n\n var minX, minY, maxX, maxY, x, y, invSize;\n\n if (hasHoles) outerNode = eliminateHoles(data, holeIndices, outerNode, dim);\n\n // if the shape is not too simple, we'll use z-order curve hash later; calculate polygon bbox\n if (data.length > 80 * dim) {\n minX = maxX = data[0];\n minY = maxY = data[1];\n\n for (var i = dim; i < outerLen; i += dim) {\n x = data[i];\n y = data[i + 1];\n if (x < minX) minX = x;\n if (y < minY) minY = y;\n if (x > maxX) maxX = x;\n if (y > maxY) maxY = y;\n }\n\n // minX, minY and invSize are later used to transform coords into integers for z-order calculation\n invSize = Math.max(maxX - minX, maxY - minY);\n invSize = invSize !== 0 ? 1 / invSize : 0;\n }\n\n earcutLinked(outerNode, triangles, dim, minX, minY, invSize);\n\n return triangles;\n}\n\n// create a circular doubly linked list from polygon points in the specified winding order\nfunction linkedList(data, start, end, dim, clockwise) {\n var i, last;\n\n if (clockwise === (signedArea(data, start, end, dim) > 0)) {\n for (i = start; i < end; i += dim) last = insertNode(i, data[i], data[i + 1], last);\n } else {\n for (i = end - dim; i >= start; i -= dim) last = insertNode(i, data[i], data[i + 1], last);\n }\n\n if (last && equals(last, last.next)) {\n removeNode(last);\n last = last.next;\n }\n\n return last;\n}\n\n// eliminate colinear or duplicate points\nfunction filterPoints(start, end) {\n if (!start) return start;\n if (!end) end = start;\n\n var p = start,\n again;\n do {\n again = false;\n\n if (!p.steiner && (equals(p, p.next) || area(p.prev, p, p.next) === 0)) {\n removeNode(p);\n p = end = p.prev;\n if (p === p.next) break;\n again = true;\n\n } else {\n p = p.next;\n }\n } while (again || p !== end);\n\n return end;\n}\n\n// main ear slicing loop which triangulates a polygon (given as a linked list)\nfunction earcutLinked(ear, triangles, dim, minX, minY, invSize, pass) {\n if (!ear) return;\n\n // interlink polygon nodes in z-order\n if (!pass && invSize) indexCurve(ear, minX, minY, invSize);\n\n var stop = ear,\n prev, next;\n\n // iterate through ears, slicing them one by one\n while (ear.prev !== ear.next) {\n prev = ear.prev;\n next = ear.next;\n\n if (invSize ? isEarHashed(ear, minX, minY, invSize) : isEar(ear)) {\n // cut off the triangle\n triangles.push(prev.i / dim);\n triangles.push(ear.i / dim);\n triangles.push(next.i / dim);\n\n removeNode(ear);\n\n // skipping the next vertex leads to less sliver triangles\n ear = next.next;\n stop = next.next;\n\n continue;\n }\n\n ear = next;\n\n // if we looped through the whole remaining polygon and can't find any more ears\n if (ear === stop) {\n // try filtering points and slicing again\n if (!pass) {\n earcutLinked(filterPoints(ear), triangles, dim, minX, minY, invSize, 1);\n\n // if this didn't work, try curing all small self-intersections locally\n } else if (pass === 1) {\n ear = cureLocalIntersections(filterPoints(ear), triangles, dim);\n earcutLinked(ear, triangles, dim, minX, minY, invSize, 2);\n\n // as a last resort, try splitting the remaining polygon into two\n } else if (pass === 2) {\n splitEarcut(ear, triangles, dim, minX, minY, invSize);\n }\n\n break;\n }\n }\n}\n\n// check whether a polygon node forms a valid ear with adjacent nodes\nfunction isEar(ear) {\n var a = ear.prev,\n b = ear,\n c = ear.next;\n\n if (area(a, b, c) >= 0) return false; // reflex, can't be an ear\n\n // now make sure we don't have other points inside the potential ear\n var p = ear.next.next;\n\n while (p !== ear.prev) {\n if (pointInTriangle(a.x, a.y, b.x, b.y, c.x, c.y, p.x, p.y) &&\n area(p.prev, p, p.next) >= 0) return false;\n p = p.next;\n }\n\n return true;\n}\n\nfunction isEarHashed(ear, minX, minY, invSize) {\n var a = ear.prev,\n b = ear,\n c = ear.next;\n\n if (area(a, b, c) >= 0) return false; // reflex, can't be an ear\n\n // triangle bbox; min & max are calculated like this for speed\n var minTX = a.x < b.x ? (a.x < c.x ? a.x : c.x) : (b.x < c.x ? b.x : c.x),\n minTY = a.y < b.y ? (a.y < c.y ? a.y : c.y) : (b.y < c.y ? b.y : c.y),\n maxTX = a.x > b.x ? (a.x > c.x ? a.x : c.x) : (b.x > c.x ? b.x : c.x),\n maxTY = a.y > b.y ? (a.y > c.y ? a.y : c.y) : (b.y > c.y ? b.y : c.y);\n\n // z-order range for the current triangle bbox;\n var minZ = zOrder(minTX, minTY, minX, minY, invSize),\n maxZ = zOrder(maxTX, maxTY, minX, minY, invSize);\n\n var p = ear.prevZ,\n n = ear.nextZ;\n\n // look for points inside the triangle in both directions\n while (p && p.z >= minZ && n && n.z <= maxZ) {\n if (p !== ear.prev && p !== ear.next &&\n pointInTriangle(a.x, a.y, b.x, b.y, c.x, c.y, p.x, p.y) &&\n area(p.prev, p, p.next) >= 0) return false;\n p = p.prevZ;\n\n if (n !== ear.prev && n !== ear.next &&\n pointInTriangle(a.x, a.y, b.x, b.y, c.x, c.y, n.x, n.y) &&\n area(n.prev, n, n.next) >= 0) return false;\n n = n.nextZ;\n }\n\n // look for remaining points in decreasing z-order\n while (p && p.z >= minZ) {\n if (p !== ear.prev && p !== ear.next &&\n pointInTriangle(a.x, a.y, b.x, b.y, c.x, c.y, p.x, p.y) &&\n area(p.prev, p, p.next) >= 0) return false;\n p = p.prevZ;\n }\n\n // look for remaining points in increasing z-order\n while (n && n.z <= maxZ) {\n if (n !== ear.prev && n !== ear.next &&\n pointInTriangle(a.x, a.y, b.x, b.y, c.x, c.y, n.x, n.y) &&\n area(n.prev, n, n.next) >= 0) return false;\n n = n.nextZ;\n }\n\n return true;\n}\n\n// go through all polygon nodes and cure small local self-intersections\nfunction cureLocalIntersections(start, triangles, dim) {\n var p = start;\n do {\n var a = p.prev,\n b = p.next.next;\n\n if (!equals(a, b) && intersects(a, p, p.next, b) && locallyInside(a, b) && locallyInside(b, a)) {\n\n triangles.push(a.i / dim);\n triangles.push(p.i / dim);\n triangles.push(b.i / dim);\n\n // remove two nodes involved\n removeNode(p);\n removeNode(p.next);\n\n p = start = b;\n }\n p = p.next;\n } while (p !== start);\n\n return filterPoints(p);\n}\n\n// try splitting polygon into two and triangulate them independently\nfunction splitEarcut(start, triangles, dim, minX, minY, invSize) {\n // look for a valid diagonal that divides the polygon into two\n var a = start;\n do {\n var b = a.next.next;\n while (b !== a.prev) {\n if (a.i !== b.i && isValidDiagonal(a, b)) {\n // split the polygon in two by the diagonal\n var c = splitPolygon(a, b);\n\n // filter colinear points around the cuts\n a = filterPoints(a, a.next);\n c = filterPoints(c, c.next);\n\n // run earcut on each half\n earcutLinked(a, triangles, dim, minX, minY, invSize);\n earcutLinked(c, triangles, dim, minX, minY, invSize);\n return;\n }\n b = b.next;\n }\n a = a.next;\n } while (a !== start);\n}\n\n// link every hole into the outer loop, producing a single-ring polygon without holes\nfunction eliminateHoles(data, holeIndices, outerNode, dim) {\n var queue = [],\n i, len, start, end, list;\n\n for (i = 0, len = holeIndices.length; i < len; i++) {\n start = holeIndices[i] * dim;\n end = i < len - 1 ? holeIndices[i + 1] * dim : data.length;\n list = linkedList(data, start, end, dim, false);\n if (list === list.next) list.steiner = true;\n queue.push(getLeftmost(list));\n }\n\n queue.sort(compareX);\n\n // process holes from left to right\n for (i = 0; i < queue.length; i++) {\n outerNode = eliminateHole(queue[i], outerNode);\n outerNode = filterPoints(outerNode, outerNode.next);\n }\n\n return outerNode;\n}\n\nfunction compareX(a, b) {\n return a.x - b.x;\n}\n\n// find a bridge between vertices that connects hole with an outer ring and and link it\nfunction eliminateHole(hole, outerNode) {\n var bridge = findHoleBridge(hole, outerNode);\n if (!bridge) {\n return outerNode;\n }\n\n var bridgeReverse = splitPolygon(bridge, hole);\n\n // filter collinear points around the cuts\n var filteredBridge = filterPoints(bridge, bridge.next);\n filterPoints(bridgeReverse, bridgeReverse.next);\n\n // Check if input node was removed by the filtering\n return outerNode === bridge ? filteredBridge : outerNode;\n}\n\n// David Eberly's algorithm for finding a bridge between hole and outer polygon\nfunction findHoleBridge(hole, outerNode) {\n var p = outerNode,\n hx = hole.x,\n hy = hole.y,\n qx = -Infinity,\n m;\n\n // find a segment intersected by a ray from the hole's leftmost point to the left;\n // segment's endpoint with lesser x will be potential connection point\n do {\n if (hy <= p.y && hy >= p.next.y && p.next.y !== p.y) {\n var x = p.x + (hy - p.y) * (p.next.x - p.x) / (p.next.y - p.y);\n if (x <= hx && x > qx) {\n qx = x;\n if (x === hx) {\n if (hy === p.y) return p;\n if (hy === p.next.y) return p.next;\n }\n m = p.x < p.next.x ? p : p.next;\n }\n }\n p = p.next;\n } while (p !== outerNode);\n\n if (!m) return null;\n\n if (hx === qx) return m; // hole touches outer segment; pick leftmost endpoint\n\n // look for points inside the triangle of hole point, segment intersection and endpoint;\n // if there are no points found, we have a valid connection;\n // otherwise choose the point of the minimum angle with the ray as connection point\n\n var stop = m,\n mx = m.x,\n my = m.y,\n tanMin = Infinity,\n tan;\n\n p = m;\n\n do {\n if (hx >= p.x && p.x >= mx && hx !== p.x &&\n pointInTriangle(hy < my ? hx : qx, hy, mx, my, hy < my ? qx : hx, hy, p.x, p.y)) {\n\n tan = Math.abs(hy - p.y) / (hx - p.x); // tangential\n\n if (locallyInside(p, hole) &&\n (tan < tanMin || (tan === tanMin && (p.x > m.x || (p.x === m.x && sectorContainsSector(m, p)))))) {\n m = p;\n tanMin = tan;\n }\n }\n\n p = p.next;\n } while (p !== stop);\n\n return m;\n}\n\n// whether sector in vertex m contains sector in vertex p in the same coordinates\nfunction sectorContainsSector(m, p) {\n return area(m.prev, m, p.prev) < 0 && area(p.next, m, m.next) < 0;\n}\n\n// interlink polygon nodes in z-order\nfunction indexCurve(start, minX, minY, invSize) {\n var p = start;\n do {\n if (p.z === null) p.z = zOrder(p.x, p.y, minX, minY, invSize);\n p.prevZ = p.prev;\n p.nextZ = p.next;\n p = p.next;\n } while (p !== start);\n\n p.prevZ.nextZ = null;\n p.prevZ = null;\n\n sortLinked(p);\n}\n\n// Simon Tatham's linked list merge sort algorithm\n// http://www.chiark.greenend.org.uk/~sgtatham/algorithms/listsort.html\nfunction sortLinked(list) {\n var i, p, q, e, tail, numMerges, pSize, qSize,\n inSize = 1;\n\n do {\n p = list;\n list = null;\n tail = null;\n numMerges = 0;\n\n while (p) {\n numMerges++;\n q = p;\n pSize = 0;\n for (i = 0; i < inSize; i++) {\n pSize++;\n q = q.nextZ;\n if (!q) break;\n }\n qSize = inSize;\n\n while (pSize > 0 || (qSize > 0 && q)) {\n\n if (pSize !== 0 && (qSize === 0 || !q || p.z <= q.z)) {\n e = p;\n p = p.nextZ;\n pSize--;\n } else {\n e = q;\n q = q.nextZ;\n qSize--;\n }\n\n if (tail) tail.nextZ = e;\n else list = e;\n\n e.prevZ = tail;\n tail = e;\n }\n\n p = q;\n }\n\n tail.nextZ = null;\n inSize *= 2;\n\n } while (numMerges > 1);\n\n return list;\n}\n\n// z-order of a point given coords and inverse of the longer side of data bbox\nfunction zOrder(x, y, minX, minY, invSize) {\n // coords are transformed into non-negative 15-bit integer range\n x = 32767 * (x - minX) * invSize;\n y = 32767 * (y - minY) * invSize;\n\n x = (x | (x << 8)) & 0x00FF00FF;\n x = (x | (x << 4)) & 0x0F0F0F0F;\n x = (x | (x << 2)) & 0x33333333;\n x = (x | (x << 1)) & 0x55555555;\n\n y = (y | (y << 8)) & 0x00FF00FF;\n y = (y | (y << 4)) & 0x0F0F0F0F;\n y = (y | (y << 2)) & 0x33333333;\n y = (y | (y << 1)) & 0x55555555;\n\n return x | (y << 1);\n}\n\n// find the leftmost node of a polygon ring\nfunction getLeftmost(start) {\n var p = start,\n leftmost = start;\n do {\n if (p.x < leftmost.x || (p.x === leftmost.x && p.y < leftmost.y)) leftmost = p;\n p = p.next;\n } while (p !== start);\n\n return leftmost;\n}\n\n// check if a point lies within a convex triangle\nfunction pointInTriangle(ax, ay, bx, by, cx, cy, px, py) {\n return (cx - px) * (ay - py) - (ax - px) * (cy - py) >= 0 &&\n (ax - px) * (by - py) - (bx - px) * (ay - py) >= 0 &&\n (bx - px) * (cy - py) - (cx - px) * (by - py) >= 0;\n}\n\n// check if a diagonal between two polygon nodes is valid (lies in polygon interior)\nfunction isValidDiagonal(a, b) {\n return a.next.i !== b.i && a.prev.i !== b.i && !intersectsPolygon(a, b) && // dones't intersect other edges\n (locallyInside(a, b) && locallyInside(b, a) && middleInside(a, b) && // locally visible\n (area(a.prev, a, b.prev) || area(a, b.prev, b)) || // does not create opposite-facing sectors\n equals(a, b) && area(a.prev, a, a.next) > 0 && area(b.prev, b, b.next) > 0); // special zero-length case\n}\n\n// signed area of a triangle\nfunction area(p, q, r) {\n return (q.y - p.y) * (r.x - q.x) - (q.x - p.x) * (r.y - q.y);\n}\n\n// check if two points are equal\nfunction equals(p1, p2) {\n return p1.x === p2.x && p1.y === p2.y;\n}\n\n// check if two segments intersect\nfunction intersects(p1, q1, p2, q2) {\n var o1 = sign(area(p1, q1, p2));\n var o2 = sign(area(p1, q1, q2));\n var o3 = sign(area(p2, q2, p1));\n var o4 = sign(area(p2, q2, q1));\n\n if (o1 !== o2 && o3 !== o4) return true; // general case\n\n if (o1 === 0 && onSegment(p1, p2, q1)) return true; // p1, q1 and p2 are collinear and p2 lies on p1q1\n if (o2 === 0 && onSegment(p1, q2, q1)) return true; // p1, q1 and q2 are collinear and q2 lies on p1q1\n if (o3 === 0 && onSegment(p2, p1, q2)) return true; // p2, q2 and p1 are collinear and p1 lies on p2q2\n if (o4 === 0 && onSegment(p2, q1, q2)) return true; // p2, q2 and q1 are collinear and q1 lies on p2q2\n\n return false;\n}\n\n// for collinear points p, q, r, check if point q lies on segment pr\nfunction onSegment(p, q, r) {\n return q.x <= Math.max(p.x, r.x) && q.x >= Math.min(p.x, r.x) && q.y <= Math.max(p.y, r.y) && q.y >= Math.min(p.y, r.y);\n}\n\nfunction sign(num) {\n return num > 0 ? 1 : num < 0 ? -1 : 0;\n}\n\n// check if a polygon diagonal intersects any polygon segments\nfunction intersectsPolygon(a, b) {\n var p = a;\n do {\n if (p.i !== a.i && p.next.i !== a.i && p.i !== b.i && p.next.i !== b.i &&\n intersects(p, p.next, a, b)) return true;\n p = p.next;\n } while (p !== a);\n\n return false;\n}\n\n// check if a polygon diagonal is locally inside the polygon\nfunction locallyInside(a, b) {\n return area(a.prev, a, a.next) < 0 ?\n area(a, b, a.next) >= 0 && area(a, a.prev, b) >= 0 :\n area(a, b, a.prev) < 0 || area(a, a.next, b) < 0;\n}\n\n// check if the middle point of a polygon diagonal is inside the polygon\nfunction middleInside(a, b) {\n var p = a,\n inside = false,\n px = (a.x + b.x) / 2,\n py = (a.y + b.y) / 2;\n do {\n if (((p.y > py) !== (p.next.y > py)) && p.next.y !== p.y &&\n (px < (p.next.x - p.x) * (py - p.y) / (p.next.y - p.y) + p.x))\n inside = !inside;\n p = p.next;\n } while (p !== a);\n\n return inside;\n}\n\n// link two polygon vertices with a bridge; if the vertices belong to the same ring, it splits polygon into two;\n// if one belongs to the outer ring and another to a hole, it merges it into a single ring\nfunction splitPolygon(a, b) {\n var a2 = new Node(a.i, a.x, a.y),\n b2 = new Node(b.i, b.x, b.y),\n an = a.next,\n bp = b.prev;\n\n a.next = b;\n b.prev = a;\n\n a2.next = an;\n an.prev = a2;\n\n b2.next = a2;\n a2.prev = b2;\n\n bp.next = b2;\n b2.prev = bp;\n\n return b2;\n}\n\n// create a node and optionally link it with previous one (in a circular doubly linked list)\nfunction insertNode(i, x, y, last) {\n var p = new Node(i, x, y);\n\n if (!last) {\n p.prev = p;\n p.next = p;\n\n } else {\n p.next = last.next;\n p.prev = last;\n last.next.prev = p;\n last.next = p;\n }\n return p;\n}\n\nfunction removeNode(p) {\n p.next.prev = p.prev;\n p.prev.next = p.next;\n\n if (p.prevZ) p.prevZ.nextZ = p.nextZ;\n if (p.nextZ) p.nextZ.prevZ = p.prevZ;\n}\n\nfunction Node(i, x, y) {\n // vertex index in coordinates array\n this.i = i;\n\n // vertex coordinates\n this.x = x;\n this.y = y;\n\n // previous and next vertex nodes in a polygon ring\n this.prev = null;\n this.next = null;\n\n // z-order curve value\n this.z = null;\n\n // previous and next nodes in z-order\n this.prevZ = null;\n this.nextZ = null;\n\n // indicates whether this is a steiner point\n this.steiner = false;\n}\n\n// return a percentage difference between the polygon area and its triangulation area;\n// used to verify correctness of triangulation\nearcut.deviation = function (data, holeIndices, dim, triangles) {\n var hasHoles = holeIndices && holeIndices.length;\n var outerLen = hasHoles ? holeIndices[0] * dim : data.length;\n\n var polygonArea = Math.abs(signedArea(data, 0, outerLen, dim));\n if (hasHoles) {\n for (var i = 0, len = holeIndices.length; i < len; i++) {\n var start = holeIndices[i] * dim;\n var end = i < len - 1 ? holeIndices[i + 1] * dim : data.length;\n polygonArea -= Math.abs(signedArea(data, start, end, dim));\n }\n }\n\n var trianglesArea = 0;\n for (i = 0; i < triangles.length; i += 3) {\n var a = triangles[i] * dim;\n var b = triangles[i + 1] * dim;\n var c = triangles[i + 2] * dim;\n trianglesArea += Math.abs(\n (data[a] - data[c]) * (data[b + 1] - data[a + 1]) -\n (data[a] - data[b]) * (data[c + 1] - data[a + 1]));\n }\n\n return polygonArea === 0 && trianglesArea === 0 ? 0 :\n Math.abs((trianglesArea - polygonArea) / polygonArea);\n};\n\nfunction signedArea(data, start, end, dim) {\n var sum = 0;\n for (var i = start, j = end - dim; i < end; i += dim) {\n sum += (data[j] - data[i]) * (data[i + 1] + data[j + 1]);\n j = i;\n }\n return sum;\n}\n\n// turn a polygon in a multi-dimensional array form (e.g. as in GeoJSON) into a form Earcut accepts\nearcut.flatten = function (data) {\n var dim = data[0][0].length,\n result = {vertices: [], holes: [], dimensions: dim},\n holeIndex = 0;\n\n for (var i = 0; i < data.length; i++) {\n for (var j = 0; j < data[i].length; j++) {\n for (var d = 0; d < dim; d++) result.vertices.push(data[i][j][d]);\n }\n if (i > 0) {\n holeIndex += data[i - 1].length;\n result.holes.push(holeIndex);\n }\n }\n return result;\n};\nearcut_1.default = _default;\n\nexport { earcut_1 as default };\n","import WebGLConstants from \"./WebGLConstants.js\";\n\n/**\n * Winding order defines the order of vertices for a triangle to be considered front-facing.\n *\n * @enum {Number}\n */\nconst WindingOrder = {\n /**\n * Vertices are in clockwise order.\n *\n * @type {Number}\n * @constant\n */\n CLOCKWISE: WebGLConstants.CW,\n\n /**\n * Vertices are in counter-clockwise order.\n *\n * @type {Number}\n * @constant\n */\n COUNTER_CLOCKWISE: WebGLConstants.CCW,\n};\n\n/**\n * @private\n */\nWindingOrder.validate = function (windingOrder) {\n return (\n windingOrder === WindingOrder.CLOCKWISE ||\n windingOrder === WindingOrder.COUNTER_CLOCKWISE\n );\n};\n\nexport default Object.freeze(WindingOrder);\n","import earcut from \"../ThirdParty/earcut.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 Ellipsoid from \"./Ellipsoid.js\";\nimport EllipsoidRhumbLine from \"./EllipsoidRhumbLine.js\";\nimport Geometry from \"./Geometry.js\";\nimport GeometryAttribute from \"./GeometryAttribute.js\";\nimport CesiumMath from \"./Math.js\";\nimport PrimitiveType from \"./PrimitiveType.js\";\nimport WindingOrder from \"./WindingOrder.js\";\n\nconst scaleToGeodeticHeightN = new Cartesian3();\nconst scaleToGeodeticHeightP = new Cartesian3();\n\n/**\n * @private\n */\nconst PolygonPipeline = {};\n\n/**\n * @exception {DeveloperError} At least three positions are required.\n */\nPolygonPipeline.computeArea2D = function (positions) {\n //>>includeStart('debug', pragmas.debug);\n Check.defined(\"positions\", positions);\n Check.typeOf.number.greaterThanOrEquals(\n \"positions.length\",\n positions.length,\n 3\n );\n //>>includeEnd('debug');\n\n const length = positions.length;\n let area = 0.0;\n\n for (let i0 = length - 1, i1 = 0; i1 < length; i0 = i1++) {\n const v0 = positions[i0];\n const v1 = positions[i1];\n\n area += v0.x * v1.y - v1.x * v0.y;\n }\n\n return area * 0.5;\n};\n\n/**\n * @returns {WindingOrder} The winding order.\n *\n * @exception {DeveloperError} At least three positions are required.\n */\nPolygonPipeline.computeWindingOrder2D = function (positions) {\n const area = PolygonPipeline.computeArea2D(positions);\n return area > 0.0 ? WindingOrder.COUNTER_CLOCKWISE : WindingOrder.CLOCKWISE;\n};\n\n/**\n * Triangulate a polygon.\n *\n * @param {Cartesian2[]} positions Cartesian2 array containing the vertices of the polygon\n * @param {Number[]} [holes] An array of the staring indices of the holes.\n * @returns {Number[]} Index array representing triangles that fill the polygon\n */\nPolygonPipeline.triangulate = function (positions, holes) {\n //>>includeStart('debug', pragmas.debug);\n Check.defined(\"positions\", positions);\n //>>includeEnd('debug');\n\n const flattenedPositions = Cartesian2.packArray(positions);\n return earcut(flattenedPositions, holes, 2);\n};\n\nconst subdivisionV0Scratch = new Cartesian3();\nconst subdivisionV1Scratch = new Cartesian3();\nconst subdivisionV2Scratch = new Cartesian3();\nconst subdivisionS0Scratch = new Cartesian3();\nconst subdivisionS1Scratch = new Cartesian3();\nconst subdivisionS2Scratch = new Cartesian3();\nconst subdivisionMidScratch = new Cartesian3();\n\n/**\n * Subdivides positions and raises points to the surface of the ellipsoid.\n *\n * @param {Ellipsoid} ellipsoid The ellipsoid the polygon in on.\n * @param {Cartesian3[]} positions An array of {@link Cartesian3} positions of the polygon.\n * @param {Number[]} indices An array of indices that determines the triangles in the polygon.\n * @param {Number} [granularity=CesiumMath.RADIANS_PER_DEGREE] The distance, in radians, between each latitude and longitude. Determines the number of positions in the buffer.\n *\n * @exception {DeveloperError} At least three indices are required.\n * @exception {DeveloperError} The number of indices must be divisable by three.\n * @exception {DeveloperError} Granularity must be greater than zero.\n */\nPolygonPipeline.computeSubdivision = function (\n ellipsoid,\n positions,\n indices,\n granularity\n) {\n granularity = defaultValue(granularity, CesiumMath.RADIANS_PER_DEGREE);\n\n //>>includeStart('debug', pragmas.debug);\n Check.typeOf.object(\"ellipsoid\", ellipsoid);\n Check.defined(\"positions\", positions);\n Check.defined(\"indices\", indices);\n Check.typeOf.number.greaterThanOrEquals(\"indices.length\", indices.length, 3);\n Check.typeOf.number.equals(\"indices.length % 3\", \"0\", indices.length % 3, 0);\n Check.typeOf.number.greaterThan(\"granularity\", granularity, 0.0);\n //>>includeEnd('debug');\n\n // triangles that need (or might need) to be subdivided.\n const triangles = indices.slice(0);\n\n // New positions due to edge splits are appended to the positions list.\n let i;\n const length = positions.length;\n const subdividedPositions = new Array(length * 3);\n let q = 0;\n for (i = 0; i < length; i++) {\n const item = positions[i];\n subdividedPositions[q++] = item.x;\n subdividedPositions[q++] = item.y;\n subdividedPositions[q++] = item.z;\n }\n\n const subdividedIndices = [];\n\n // Used to make sure shared edges are not split more than once.\n const edges = {};\n\n const radius = ellipsoid.maximumRadius;\n const minDistance = CesiumMath.chordLength(granularity, radius);\n const minDistanceSqrd = minDistance * minDistance;\n\n while (triangles.length > 0) {\n const i2 = triangles.pop();\n const i1 = triangles.pop();\n const i0 = triangles.pop();\n\n const v0 = Cartesian3.fromArray(\n subdividedPositions,\n i0 * 3,\n subdivisionV0Scratch\n );\n const v1 = Cartesian3.fromArray(\n subdividedPositions,\n i1 * 3,\n subdivisionV1Scratch\n );\n const v2 = Cartesian3.fromArray(\n subdividedPositions,\n i2 * 3,\n subdivisionV2Scratch\n );\n\n const s0 = Cartesian3.multiplyByScalar(\n Cartesian3.normalize(v0, subdivisionS0Scratch),\n radius,\n subdivisionS0Scratch\n );\n const s1 = Cartesian3.multiplyByScalar(\n Cartesian3.normalize(v1, subdivisionS1Scratch),\n radius,\n subdivisionS1Scratch\n );\n const s2 = Cartesian3.multiplyByScalar(\n Cartesian3.normalize(v2, subdivisionS2Scratch),\n radius,\n subdivisionS2Scratch\n );\n\n const g0 = Cartesian3.magnitudeSquared(\n Cartesian3.subtract(s0, s1, subdivisionMidScratch)\n );\n const g1 = Cartesian3.magnitudeSquared(\n Cartesian3.subtract(s1, s2, subdivisionMidScratch)\n );\n const g2 = Cartesian3.magnitudeSquared(\n Cartesian3.subtract(s2, s0, subdivisionMidScratch)\n );\n\n const max = Math.max(g0, g1, g2);\n let edge;\n let mid;\n\n // if the max length squared of a triangle edge is greater than the chord length of squared\n // of the granularity, subdivide the triangle\n if (max > minDistanceSqrd) {\n if (g0 === max) {\n edge = `${Math.min(i0, i1)} ${Math.max(i0, i1)}`;\n\n i = edges[edge];\n if (!defined(i)) {\n mid = Cartesian3.add(v0, v1, subdivisionMidScratch);\n Cartesian3.multiplyByScalar(mid, 0.5, mid);\n subdividedPositions.push(mid.x, mid.y, mid.z);\n i = subdividedPositions.length / 3 - 1;\n edges[edge] = i;\n }\n\n triangles.push(i0, i, i2);\n triangles.push(i, i1, i2);\n } else if (g1 === max) {\n edge = `${Math.min(i1, i2)} ${Math.max(i1, i2)}`;\n\n i = edges[edge];\n if (!defined(i)) {\n mid = Cartesian3.add(v1, v2, subdivisionMidScratch);\n Cartesian3.multiplyByScalar(mid, 0.5, mid);\n subdividedPositions.push(mid.x, mid.y, mid.z);\n i = subdividedPositions.length / 3 - 1;\n edges[edge] = i;\n }\n\n triangles.push(i1, i, i0);\n triangles.push(i, i2, i0);\n } else if (g2 === max) {\n edge = `${Math.min(i2, i0)} ${Math.max(i2, i0)}`;\n\n i = edges[edge];\n if (!defined(i)) {\n mid = Cartesian3.add(v2, v0, subdivisionMidScratch);\n Cartesian3.multiplyByScalar(mid, 0.5, mid);\n subdividedPositions.push(mid.x, mid.y, mid.z);\n i = subdividedPositions.length / 3 - 1;\n edges[edge] = i;\n }\n\n triangles.push(i2, i, i1);\n triangles.push(i, i0, i1);\n }\n } else {\n subdividedIndices.push(i0);\n subdividedIndices.push(i1);\n subdividedIndices.push(i2);\n }\n }\n\n return new Geometry({\n attributes: {\n position: new GeometryAttribute({\n componentDatatype: ComponentDatatype.DOUBLE,\n componentsPerAttribute: 3,\n values: subdividedPositions,\n }),\n },\n indices: subdividedIndices,\n primitiveType: PrimitiveType.TRIANGLES,\n });\n};\n\nconst subdivisionC0Scratch = new Cartographic();\nconst subdivisionC1Scratch = new Cartographic();\nconst subdivisionC2Scratch = new Cartographic();\nconst subdivisionCartographicScratch = new Cartographic();\n\n/**\n * Subdivides positions on rhumb lines and raises points to the surface of the ellipsoid.\n *\n * @param {Ellipsoid} ellipsoid The ellipsoid the polygon in on.\n * @param {Cartesian3[]} positions An array of {@link Cartesian3} positions of the polygon.\n * @param {Number[]} indices An array of indices that determines the triangles in the polygon.\n * @param {Number} [granularity=CesiumMath.RADIANS_PER_DEGREE] The distance, in radians, between each latitude and longitude. Determines the number of positions in the buffer.\n *\n * @exception {DeveloperError} At least three indices are required.\n * @exception {DeveloperError} The number of indices must be divisable by three.\n * @exception {DeveloperError} Granularity must be greater than zero.\n */\nPolygonPipeline.computeRhumbLineSubdivision = function (\n ellipsoid,\n positions,\n indices,\n granularity\n) {\n granularity = defaultValue(granularity, CesiumMath.RADIANS_PER_DEGREE);\n\n //>>includeStart('debug', pragmas.debug);\n Check.typeOf.object(\"ellipsoid\", ellipsoid);\n Check.defined(\"positions\", positions);\n Check.defined(\"indices\", indices);\n Check.typeOf.number.greaterThanOrEquals(\"indices.length\", indices.length, 3);\n Check.typeOf.number.equals(\"indices.length % 3\", \"0\", indices.length % 3, 0);\n Check.typeOf.number.greaterThan(\"granularity\", granularity, 0.0);\n //>>includeEnd('debug');\n\n // triangles that need (or might need) to be subdivided.\n const triangles = indices.slice(0);\n\n // New positions due to edge splits are appended to the positions list.\n let i;\n const length = positions.length;\n const subdividedPositions = new Array(length * 3);\n let q = 0;\n for (i = 0; i < length; i++) {\n const item = positions[i];\n subdividedPositions[q++] = item.x;\n subdividedPositions[q++] = item.y;\n subdividedPositions[q++] = item.z;\n }\n\n const subdividedIndices = [];\n\n // Used to make sure shared edges are not split more than once.\n const edges = {};\n\n const radius = ellipsoid.maximumRadius;\n const minDistance = CesiumMath.chordLength(granularity, radius);\n\n const rhumb0 = new EllipsoidRhumbLine(undefined, undefined, ellipsoid);\n const rhumb1 = new EllipsoidRhumbLine(undefined, undefined, ellipsoid);\n const rhumb2 = new EllipsoidRhumbLine(undefined, undefined, ellipsoid);\n\n while (triangles.length > 0) {\n const i2 = triangles.pop();\n const i1 = triangles.pop();\n const i0 = triangles.pop();\n\n const v0 = Cartesian3.fromArray(\n subdividedPositions,\n i0 * 3,\n subdivisionV0Scratch\n );\n const v1 = Cartesian3.fromArray(\n subdividedPositions,\n i1 * 3,\n subdivisionV1Scratch\n );\n const v2 = Cartesian3.fromArray(\n subdividedPositions,\n i2 * 3,\n subdivisionV2Scratch\n );\n\n const c0 = ellipsoid.cartesianToCartographic(v0, subdivisionC0Scratch);\n const c1 = ellipsoid.cartesianToCartographic(v1, subdivisionC1Scratch);\n const c2 = ellipsoid.cartesianToCartographic(v2, subdivisionC2Scratch);\n\n rhumb0.setEndPoints(c0, c1);\n const g0 = rhumb0.surfaceDistance;\n rhumb1.setEndPoints(c1, c2);\n const g1 = rhumb1.surfaceDistance;\n rhumb2.setEndPoints(c2, c0);\n const g2 = rhumb2.surfaceDistance;\n\n const max = Math.max(g0, g1, g2);\n let edge;\n let mid;\n let midHeight;\n let midCartesian3;\n\n // if the max length squared of a triangle edge is greater than granularity, subdivide the triangle\n if (max > minDistance) {\n if (g0 === max) {\n edge = `${Math.min(i0, i1)} ${Math.max(i0, i1)}`;\n\n i = edges[edge];\n if (!defined(i)) {\n mid = rhumb0.interpolateUsingFraction(\n 0.5,\n subdivisionCartographicScratch\n );\n midHeight = (c0.height + c1.height) * 0.5;\n midCartesian3 = Cartesian3.fromRadians(\n mid.longitude,\n mid.latitude,\n midHeight,\n ellipsoid,\n subdivisionMidScratch\n );\n subdividedPositions.push(\n midCartesian3.x,\n midCartesian3.y,\n midCartesian3.z\n );\n i = subdividedPositions.length / 3 - 1;\n edges[edge] = i;\n }\n\n triangles.push(i0, i, i2);\n triangles.push(i, i1, i2);\n } else if (g1 === max) {\n edge = `${Math.min(i1, i2)} ${Math.max(i1, i2)}`;\n\n i = edges[edge];\n if (!defined(i)) {\n mid = rhumb1.interpolateUsingFraction(\n 0.5,\n subdivisionCartographicScratch\n );\n midHeight = (c1.height + c2.height) * 0.5;\n midCartesian3 = Cartesian3.fromRadians(\n mid.longitude,\n mid.latitude,\n midHeight,\n ellipsoid,\n subdivisionMidScratch\n );\n subdividedPositions.push(\n midCartesian3.x,\n midCartesian3.y,\n midCartesian3.z\n );\n i = subdividedPositions.length / 3 - 1;\n edges[edge] = i;\n }\n\n triangles.push(i1, i, i0);\n triangles.push(i, i2, i0);\n } else if (g2 === max) {\n edge = `${Math.min(i2, i0)} ${Math.max(i2, i0)}`;\n\n i = edges[edge];\n if (!defined(i)) {\n mid = rhumb2.interpolateUsingFraction(\n 0.5,\n subdivisionCartographicScratch\n );\n midHeight = (c2.height + c0.height) * 0.5;\n midCartesian3 = Cartesian3.fromRadians(\n mid.longitude,\n mid.latitude,\n midHeight,\n ellipsoid,\n subdivisionMidScratch\n );\n subdividedPositions.push(\n midCartesian3.x,\n midCartesian3.y,\n midCartesian3.z\n );\n i = subdividedPositions.length / 3 - 1;\n edges[edge] = i;\n }\n\n triangles.push(i2, i, i1);\n triangles.push(i, i0, i1);\n }\n } else {\n subdividedIndices.push(i0);\n subdividedIndices.push(i1);\n subdividedIndices.push(i2);\n }\n }\n\n return new Geometry({\n attributes: {\n position: new GeometryAttribute({\n componentDatatype: ComponentDatatype.DOUBLE,\n componentsPerAttribute: 3,\n values: subdividedPositions,\n }),\n },\n indices: subdividedIndices,\n primitiveType: PrimitiveType.TRIANGLES,\n });\n};\n\n/**\n * Scales each position of a geometry's position attribute to a height, in place.\n *\n * @param {Number[]} positions The array of numbers representing the positions to be scaled\n * @param {Number} [height=0.0] The desired height to add to the positions\n * @param {Ellipsoid} [ellipsoid=Ellipsoid.WGS84] The ellipsoid on which the positions lie.\n * @param {Boolean} [scaleToSurface=true] true if the positions need to be scaled to the surface before the height is added.\n * @returns {Number[]} The input array of positions, scaled to height\n */\nPolygonPipeline.scaleToGeodeticHeight = function (\n positions,\n height,\n ellipsoid,\n scaleToSurface\n) {\n ellipsoid = defaultValue(ellipsoid, Ellipsoid.WGS84);\n\n let n = scaleToGeodeticHeightN;\n let p = scaleToGeodeticHeightP;\n\n height = defaultValue(height, 0.0);\n scaleToSurface = defaultValue(scaleToSurface, true);\n\n if (defined(positions)) {\n const length = positions.length;\n\n for (let i = 0; i < length; i += 3) {\n Cartesian3.fromArray(positions, i, p);\n\n if (scaleToSurface) {\n p = ellipsoid.scaleToGeodeticSurface(p, p);\n }\n\n if (height !== 0) {\n n = ellipsoid.geodeticSurfaceNormal(p, n);\n\n Cartesian3.multiplyByScalar(n, height, n);\n Cartesian3.add(p, n, p);\n }\n\n positions[i] = p.x;\n positions[i + 1] = p.y;\n positions[i + 2] = p.z;\n }\n }\n\n return positions;\n};\nexport default PolygonPipeline;\n"],"names":["WebGLConstants","Cartesian3","Check","WindingOrder","Cartesian2","earcut","defaultValue","CesiumMath","defined","Geometry","GeometryAttribute","ComponentDatatype","PrimitiveType","Cartographic","EllipsoidRhumbLine","Ellipsoid"],"mappings":"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"}