You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
211 lines
7.6 KiB
211 lines
7.6 KiB
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);
|
|
});
|