define([ './arrayRemoveDuplicates-bb548aa3', './BoundingRectangle-18e42324', './Transforms-7cd3197b', './Matrix2-f2da41d4', './RuntimeError-ffe03243', './ComponentDatatype-17b06483', './CoplanarPolygonGeometryLibrary-4653bf5b', './when-229515d6', './GeometryAttribute-80036e07', './GeometryAttributes-b253752a', './GeometryInstance-16601d2a', './GeometryPipeline-5b3fba53', './IndexDatatype-b10faa0b', './PolygonGeometryLibrary-f129e954', './PolygonPipeline-5582b1ec', './VertexFormat-565d6a6c', './combine-8ce3f24b', './WebGLConstants-4e26b85a', './OrientedBoundingBox-86debc5a', './EllipsoidTangentPlane-b27cd2f7', './AxisAlignedBoundingBox-1feb0c48', './IntersectionTests-1b8a3cb9', './Plane-0421a8be', './AttributeCompression-0af3c035', './EncodedCartesian3-d4f305ce', './ArcType-1da7fdca', './EllipsoidRhumbLine-afd6cd20', ], function (e, t, a, n, r, o, i, l, s, p, y, c, m, u, d, g, b, v, f, h, x, C, P, A, w, F, G) { 'use strict'; var L = new n.Cartesian3(), E = new t.BoundingRectangle(), T = new n.Cartesian2(), D = new n.Cartesian2(), _ = new n.Cartesian3(), V = new n.Cartesian3(), k = new n.Cartesian3(), R = new n.Cartesian3(), I = new n.Cartesian3(), M = new n.Cartesian3(), B = new a.Quaternion(), H = new n.Matrix3(), O = new n.Matrix3(), z = new n.Cartesian3(); function S(e, t, r, i, l, y, c, u) { var g = e.positions, b = d.PolygonPipeline.triangulate(e.positions2D, e.holes); b.length < 3 && (b = [0, 1, 2]); var v = m.IndexDatatype.createTypedArray(g.length, b.length); v.set(b); var f = H; if (0 !== i) { var h = a.Quaternion.fromAxisAngle(y, i, B); if (((f = n.Matrix3.fromQuaternion(h, f)), t.tangent || t.bitangent)) { h = a.Quaternion.fromAxisAngle(y, -i, B); var x = n.Matrix3.fromQuaternion(h, O); (c = n.Cartesian3.normalize(n.Matrix3.multiplyByVector(x, c, c), c)), t.bitangent && (u = n.Cartesian3.normalize(n.Cartesian3.cross(y, c, u), u)); } } else f = n.Matrix3.clone(n.Matrix3.IDENTITY, f); var C = D; t.st && ((C.x = r.x), (C.y = r.y)); for ( var P = g.length, A = 3 * P, w = new Float64Array(A), F = t.normal ? new Float32Array(A) : void 0, G = t.tangent ? new Float32Array(A) : void 0, E = t.bitangent ? new Float32Array(A) : void 0, _ = t.st ? new Float32Array(2 * P) : void 0, V = 0, k = 0, R = 0, I = 0, M = 0, z = 0; z < P; z++ ) { var S = g[z]; if (((w[V++] = S.x), (w[V++] = S.y), (w[V++] = S.z), t.st)) { var N = l(n.Matrix3.multiplyByVector(f, S, L), T); n.Cartesian2.subtract(N, C, N); var Q = o.CesiumMath.clamp(N.x / r.width, 0, 1), j = o.CesiumMath.clamp(N.y / r.height, 0, 1); (_[M++] = Q), (_[M++] = j); } t.normal && ((F[k++] = y.x), (F[k++] = y.y), (F[k++] = y.z)), t.tangent && ((G[I++] = c.x), (G[I++] = c.y), (G[I++] = c.z)), t.bitangent && ((E[R++] = u.x), (E[R++] = u.y), (E[R++] = u.z)); } var U = new p.GeometryAttributes(); return ( t.position && (U.position = new s.GeometryAttribute({ componentDatatype: o.ComponentDatatype.DOUBLE, componentsPerAttribute: 3, values: w, })), t.normal && (U.normal = new s.GeometryAttribute({ componentDatatype: o.ComponentDatatype.FLOAT, componentsPerAttribute: 3, values: F, })), t.tangent && (U.tangent = new s.GeometryAttribute({ componentDatatype: o.ComponentDatatype.FLOAT, componentsPerAttribute: 3, values: G, })), t.bitangent && (U.bitangent = new s.GeometryAttribute({ componentDatatype: o.ComponentDatatype.FLOAT, componentsPerAttribute: 3, values: E, })), t.st && (U.st = new s.GeometryAttribute({ componentDatatype: o.ComponentDatatype.FLOAT, componentsPerAttribute: 2, values: _, })), new s.Geometry({ attributes: U, indices: v, primitiveType: s.PrimitiveType.TRIANGLES }) ); } function N(e) { var t = (e = l.defaultValue(e, l.defaultValue.EMPTY_OBJECT)).polygonHierarchy, a = l.defaultValue(e.vertexFormat, g.VertexFormat.DEFAULT); (this._vertexFormat = g.VertexFormat.clone(a)), (this._polygonHierarchy = t), (this._stRotation = l.defaultValue(e.stRotation, 0)), (this._ellipsoid = n.Ellipsoid.clone(l.defaultValue(e.ellipsoid, n.Ellipsoid.WGS84))), (this._workerName = 'createCoplanarPolygonGeometry'), (this.packedLength = u.PolygonGeometryLibrary.computeHierarchyPackedLength(t) + g.VertexFormat.packedLength + n.Ellipsoid.packedLength + 2); } (N.fromPositions = function (e) { return new N({ polygonHierarchy: { positions: (e = l.defaultValue(e, l.defaultValue.EMPTY_OBJECT)).positions, }, vertexFormat: e.vertexFormat, stRotation: e.stRotation, ellipsoid: e.ellipsoid, }); }), (N.pack = function (e, t, a) { return ( (a = l.defaultValue(a, 0)), (a = u.PolygonGeometryLibrary.packPolygonHierarchy(e._polygonHierarchy, t, a)), n.Ellipsoid.pack(e._ellipsoid, t, a), (a += n.Ellipsoid.packedLength), g.VertexFormat.pack(e._vertexFormat, t, a), (a += g.VertexFormat.packedLength), (t[a++] = e._stRotation), (t[a] = e.packedLength), t ); }); var Q = n.Ellipsoid.clone(n.Ellipsoid.UNIT_SPHERE), j = new g.VertexFormat(), U = { polygonHierarchy: {} }; return ( (N.unpack = function (e, t, a) { t = l.defaultValue(t, 0); var r = u.PolygonGeometryLibrary.unpackPolygonHierarchy(e, t); (t = r.startingIndex), delete r.startingIndex; var o = n.Ellipsoid.unpack(e, t, Q); t += n.Ellipsoid.packedLength; var i = g.VertexFormat.unpack(e, t, j); t += g.VertexFormat.packedLength; var s = e[t++], p = e[t]; return ( l.defined(a) || (a = new N(U)), (a._polygonHierarchy = r), (a._ellipsoid = n.Ellipsoid.clone(o, a._ellipsoid)), (a._vertexFormat = g.VertexFormat.clone(i, a._vertexFormat)), (a._stRotation = s), (a.packedLength = p), a ); }), (N.createGeometry = function (t) { var r = t._vertexFormat, l = t._polygonHierarchy, p = t._stRotation, d = l.positions; if (!((d = e.arrayRemoveDuplicates(d, n.Cartesian3.equalsEpsilon, !0)).length < 3)) { var g = _, b = V, v = k, f = I, h = M; if (i.CoplanarPolygonGeometryLibrary.computeProjectTo2DArguments(d, R, f, h)) { if ( ((g = n.Cartesian3.cross(f, h, g)), (g = n.Cartesian3.normalize(g, g)), !n.Cartesian3.equalsEpsilon(R, n.Cartesian3.ZERO, o.CesiumMath.EPSILON6)) ) { var x = t._ellipsoid.geodeticSurfaceNormal(R, z); n.Cartesian3.dot(g, x) < 0 && ((g = n.Cartesian3.negate(g, g)), (f = n.Cartesian3.negate(f, f))); } var C = i.CoplanarPolygonGeometryLibrary.createProjectPointsTo2DFunction(R, f, h), P = i.CoplanarPolygonGeometryLibrary.createProjectPointTo2DFunction(R, f, h); r.tangent && (b = n.Cartesian3.clone(f, b)), r.bitangent && (v = n.Cartesian3.clone(h, v)); var A = u.PolygonGeometryLibrary.polygonsFromHierarchy(l, C, !1), w = A.hierarchy, F = A.polygons; if (0 !== w.length) { d = w[0].outerRing; for ( var G = a.BoundingSphere.fromPoints(d), L = u.PolygonGeometryLibrary.computeBoundingRectangle(g, P, d, p, E), T = [], D = 0; D < F.length; D++ ) { var B = new y.GeometryInstance({ geometry: S(F[D], r, L, p, P, g, b, v) }); T.push(B); } var H = c.GeometryPipeline.combineInstances(T)[0]; (H.attributes.position.values = new Float64Array(H.attributes.position.values)), (H.indices = m.IndexDatatype.createTypedArray( H.attributes.position.values.length / 3, H.indices )); var O = H.attributes; return ( r.position || delete O.position, new s.Geometry({ attributes: O, indices: H.indices, primitiveType: H.primitiveType, boundingSphere: G, }) ); } } } }), function (e, t) { return l.defined(t) && (e = N.unpack(e, t)), N.createGeometry(e); } ); });