define([ 'exports', './GeometryOffsetAttribute-ff1e192c', './Transforms-7cd3197b', './Matrix2-f2da41d4', './ComponentDatatype-17b06483', './when-229515d6', './RuntimeError-ffe03243', './GeometryAttribute-80036e07', './GeometryAttributes-b253752a', './IndexDatatype-b10faa0b', ], function (i, t, e, a, n, r, o, s, m, u) { 'use strict'; var f = new a.Cartesian3(1, 1, 1), d = Math.cos, l = Math.sin; function c(i) { i = r.defaultValue(i, r.defaultValue.EMPTY_OBJECT); var t = r.defaultValue(i.radii, f), e = r.defaultValue(i.innerRadii, t), o = r.defaultValue(i.minimumClock, 0), s = r.defaultValue(i.maximumClock, n.CesiumMath.TWO_PI), m = r.defaultValue(i.minimumCone, 0), u = r.defaultValue(i.maximumCone, n.CesiumMath.PI), d = Math.round(r.defaultValue(i.stackPartitions, 10)), l = Math.round(r.defaultValue(i.slicePartitions, 8)), c = Math.round(r.defaultValue(i.subdivisions, 128)); (this._radii = a.Cartesian3.clone(t)), (this._innerRadii = a.Cartesian3.clone(e)), (this._minimumClock = o), (this._maximumClock = s), (this._minimumCone = m), (this._maximumCone = u), (this._stackPartitions = d), (this._slicePartitions = l), (this._subdivisions = c), (this._offsetAttribute = i.offsetAttribute), (this._workerName = 'createEllipsoidOutlineGeometry'); } (c.packedLength = 2 * a.Cartesian3.packedLength + 8), (c.pack = function (i, t, e) { return ( (e = r.defaultValue(e, 0)), a.Cartesian3.pack(i._radii, t, e), (e += a.Cartesian3.packedLength), a.Cartesian3.pack(i._innerRadii, t, e), (e += a.Cartesian3.packedLength), (t[e++] = i._minimumClock), (t[e++] = i._maximumClock), (t[e++] = i._minimumCone), (t[e++] = i._maximumCone), (t[e++] = i._stackPartitions), (t[e++] = i._slicePartitions), (t[e++] = i._subdivisions), (t[e] = r.defaultValue(i._offsetAttribute, -1)), t ); }); var C = new a.Cartesian3(), _ = new a.Cartesian3(), p = { radii: C, innerRadii: _, minimumClock: void 0, maximumClock: void 0, minimumCone: void 0, maximumCone: void 0, stackPartitions: void 0, slicePartitions: void 0, subdivisions: void 0, offsetAttribute: void 0, }; (c.unpack = function (i, t, e) { t = r.defaultValue(t, 0); var n = a.Cartesian3.unpack(i, t, C); t += a.Cartesian3.packedLength; var o = a.Cartesian3.unpack(i, t, _); t += a.Cartesian3.packedLength; var s = i[t++], m = i[t++], u = i[t++], f = i[t++], d = i[t++], l = i[t++], h = i[t++], v = i[t]; return r.defined(e) ? ((e._radii = a.Cartesian3.clone(n, e._radii)), (e._innerRadii = a.Cartesian3.clone(o, e._innerRadii)), (e._minimumClock = s), (e._maximumClock = m), (e._minimumCone = u), (e._maximumCone = f), (e._stackPartitions = d), (e._slicePartitions = l), (e._subdivisions = h), (e._offsetAttribute = -1 === v ? void 0 : v), e) : ((p.minimumClock = s), (p.maximumClock = m), (p.minimumCone = u), (p.maximumCone = f), (p.stackPartitions = d), (p.slicePartitions = l), (p.subdivisions = h), (p.offsetAttribute = -1 === v ? void 0 : v), new c(p)); }), (c.createGeometry = function (i) { var o = i._radii; if (!(o.x <= 0 || o.y <= 0 || o.z <= 0)) { var f = i._innerRadii; if (!(f.x <= 0 || f.y <= 0 || f.z <= 0)) { var c = i._minimumClock, C = i._maximumClock, _ = i._minimumCone, p = i._maximumCone, h = i._subdivisions, v = a.Ellipsoid.fromCartesian3(o), y = i._slicePartitions + 1, b = i._stackPartitions + 1; (y = Math.round((y * Math.abs(C - c)) / n.CesiumMath.TWO_PI)) < 2 && (y = 2), (b = Math.round((b * Math.abs(p - _)) / n.CesiumMath.PI)) < 2 && (b = 2); var k = 0, x = 1, A = f.x !== o.x || f.y !== o.y || f.z !== o.z, P = !1, w = !1; A && ((x = 2), _ > 0 && ((P = !0), (k += y)), p < Math.PI && ((w = !0), (k += y))); var M, V, g, E, G = h * x * (b + y), O = new Float64Array(3 * G), D = 2 * (G + k - (y + b) * x), I = u.IndexDatatype.createTypedArray(G, D), T = 0, z = new Array(b), L = new Array(b); for (M = 0; M < b; M++) (E = _ + (M * (p - _)) / (b - 1)), (z[M] = l(E)), (L[M] = d(E)); var R = new Array(h), N = new Array(h); for (M = 0; M < h; M++) (g = c + (M * (C - c)) / (h - 1)), (R[M] = l(g)), (N[M] = d(g)); for (M = 0; M < b; M++) for (V = 0; V < h; V++) (O[T++] = o.x * z[M] * N[V]), (O[T++] = o.y * z[M] * R[V]), (O[T++] = o.z * L[M]); if (A) for (M = 0; M < b; M++) for (V = 0; V < h; V++) (O[T++] = f.x * z[M] * N[V]), (O[T++] = f.y * z[M] * R[V]), (O[T++] = f.z * L[M]); for (z.length = h, L.length = h, M = 0; M < h; M++) (E = _ + (M * (p - _)) / (h - 1)), (z[M] = l(E)), (L[M] = d(E)); for (R.length = y, N.length = y, M = 0; M < y; M++) (g = c + (M * (C - c)) / (y - 1)), (R[M] = l(g)), (N[M] = d(g)); for (M = 0; M < h; M++) for (V = 0; V < y; V++) (O[T++] = o.x * z[M] * N[V]), (O[T++] = o.y * z[M] * R[V]), (O[T++] = o.z * L[M]); if (A) for (M = 0; M < h; M++) for (V = 0; V < y; V++) (O[T++] = f.x * z[M] * N[V]), (O[T++] = f.y * z[M] * R[V]), (O[T++] = f.z * L[M]); for (T = 0, M = 0; M < b * x; M++) { var B = M * h; for (V = 0; V < h - 1; V++) (I[T++] = B + V), (I[T++] = B + V + 1); } var S = b * h * x; for (M = 0; M < y; M++) for (V = 0; V < h - 1; V++) (I[T++] = S + M + V * y), (I[T++] = S + M + (V + 1) * y); if (A) for (S = b * h * x + y * h, M = 0; M < y; M++) for (V = 0; V < h - 1; V++) (I[T++] = S + M + V * y), (I[T++] = S + M + (V + 1) * y); if (A) { var U = b * h * x, F = U + h * y; if (P) for (M = 0; M < y; M++) (I[T++] = U + M), (I[T++] = F + M); if (w) for (U += h * y - y, F += h * y - y, M = 0; M < y; M++) (I[T++] = U + M), (I[T++] = F + M); } var W = new m.GeometryAttributes({ position: new s.GeometryAttribute({ componentDatatype: n.ComponentDatatype.DOUBLE, componentsPerAttribute: 3, values: O, }), }); if (r.defined(i._offsetAttribute)) { var Y = O.length, J = new Uint8Array(Y / 3), j = i._offsetAttribute === t.GeometryOffsetAttribute.NONE ? 0 : 1; t.arrayFill(J, j), (W.applyOffset = new s.GeometryAttribute({ componentDatatype: n.ComponentDatatype.UNSIGNED_BYTE, componentsPerAttribute: 1, values: J, })); } return new s.Geometry({ attributes: W, indices: I, primitiveType: s.PrimitiveType.LINES, boundingSphere: e.BoundingSphere.fromEllipsoid(v), offsetAttribute: i._offsetAttribute, }); } } }), (i.EllipsoidOutlineGeometry = c); });