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.
725 lines
24 KiB
725 lines
24 KiB
11 months ago
|
define([
|
||
|
'./when-229515d6',
|
||
|
'./Matrix2-f2da41d4',
|
||
|
'./GeometryOffsetAttribute-ff1e192c',
|
||
|
'./Transforms-7cd3197b',
|
||
|
'./RuntimeError-ffe03243',
|
||
|
'./ComponentDatatype-17b06483',
|
||
|
'./GeometryAttribute-80036e07',
|
||
|
'./GeometryAttributes-b253752a',
|
||
|
'./GeometryInstance-16601d2a',
|
||
|
'./GeometryPipeline-5b3fba53',
|
||
|
'./IndexDatatype-b10faa0b',
|
||
|
'./PolygonPipeline-5582b1ec',
|
||
|
'./RectangleGeometryLibrary-fbe816b1',
|
||
|
'./VertexFormat-565d6a6c',
|
||
|
'./combine-8ce3f24b',
|
||
|
'./WebGLConstants-4e26b85a',
|
||
|
'./AttributeCompression-0af3c035',
|
||
|
'./EncodedCartesian3-d4f305ce',
|
||
|
'./IntersectionTests-1b8a3cb9',
|
||
|
'./Plane-0421a8be',
|
||
|
'./EllipsoidRhumbLine-afd6cd20',
|
||
|
], function (t, e, a, r, n, i, o, s, l, u, c, m, p, d, g, y, f, h, v, b, _) {
|
||
|
'use strict';
|
||
|
var A = new e.Cartesian3(),
|
||
|
x = new e.Cartesian3(),
|
||
|
w = new e.Cartesian3(),
|
||
|
C = new e.Cartesian3(),
|
||
|
R = new e.Rectangle(),
|
||
|
E = new e.Cartesian2(),
|
||
|
F = new r.BoundingSphere(),
|
||
|
G = new r.BoundingSphere();
|
||
|
function P(t, e) {
|
||
|
var a = new o.Geometry({
|
||
|
attributes: new s.GeometryAttributes(),
|
||
|
primitiveType: o.PrimitiveType.TRIANGLES,
|
||
|
});
|
||
|
return (
|
||
|
(a.attributes.position = new o.GeometryAttribute({
|
||
|
componentDatatype: i.ComponentDatatype.DOUBLE,
|
||
|
componentsPerAttribute: 3,
|
||
|
values: e.positions,
|
||
|
})),
|
||
|
t.normal &&
|
||
|
(a.attributes.normal = new o.GeometryAttribute({
|
||
|
componentDatatype: i.ComponentDatatype.FLOAT,
|
||
|
componentsPerAttribute: 3,
|
||
|
values: e.normals,
|
||
|
})),
|
||
|
t.tangent &&
|
||
|
(a.attributes.tangent = new o.GeometryAttribute({
|
||
|
componentDatatype: i.ComponentDatatype.FLOAT,
|
||
|
componentsPerAttribute: 3,
|
||
|
values: e.tangents,
|
||
|
})),
|
||
|
t.bitangent &&
|
||
|
(a.attributes.bitangent = new o.GeometryAttribute({
|
||
|
componentDatatype: i.ComponentDatatype.FLOAT,
|
||
|
componentsPerAttribute: 3,
|
||
|
values: e.bitangents,
|
||
|
})),
|
||
|
a
|
||
|
);
|
||
|
}
|
||
|
var V = new e.Cartesian3(),
|
||
|
L = new e.Cartesian3();
|
||
|
function D(t, a) {
|
||
|
var r = t._vertexFormat,
|
||
|
n = t._ellipsoid,
|
||
|
s = a.height,
|
||
|
l = a.width,
|
||
|
u = a.northCap,
|
||
|
m = a.southCap,
|
||
|
d = 0,
|
||
|
g = s,
|
||
|
y = s,
|
||
|
f = 0;
|
||
|
u && ((d = 1), (y -= 1), (f += 1)), m && ((g -= 1), (y -= 1), (f += 1)), (f += l * y);
|
||
|
for (
|
||
|
var h = r.position ? new Float64Array(3 * f) : void 0,
|
||
|
v = r.st ? new Float32Array(2 * f) : void 0,
|
||
|
b = 0,
|
||
|
_ = 0,
|
||
|
R = A,
|
||
|
F = E,
|
||
|
G = Number.MAX_VALUE,
|
||
|
V = Number.MAX_VALUE,
|
||
|
L = -Number.MAX_VALUE,
|
||
|
D = -Number.MAX_VALUE,
|
||
|
M = d;
|
||
|
M < g;
|
||
|
++M
|
||
|
)
|
||
|
for (var T = 0; T < l; ++T)
|
||
|
p.RectangleGeometryLibrary.computePosition(a, n, r.st, M, T, R, F),
|
||
|
(h[b++] = R.x),
|
||
|
(h[b++] = R.y),
|
||
|
(h[b++] = R.z),
|
||
|
r.st &&
|
||
|
((v[_++] = F.x),
|
||
|
(v[_++] = F.y),
|
||
|
(G = Math.min(G, F.x)),
|
||
|
(V = Math.min(V, F.y)),
|
||
|
(L = Math.max(L, F.x)),
|
||
|
(D = Math.max(D, F.y)));
|
||
|
if (
|
||
|
(u &&
|
||
|
(p.RectangleGeometryLibrary.computePosition(a, n, r.st, 0, 0, R, F),
|
||
|
(h[b++] = R.x),
|
||
|
(h[b++] = R.y),
|
||
|
(h[b++] = R.z),
|
||
|
r.st && ((v[_++] = F.x), (v[_++] = F.y), (G = F.x), (V = F.y), (L = F.x), (D = F.y))),
|
||
|
m &&
|
||
|
(p.RectangleGeometryLibrary.computePosition(a, n, r.st, s - 1, 0, R, F),
|
||
|
(h[b++] = R.x),
|
||
|
(h[b++] = R.y),
|
||
|
(h[b] = R.z),
|
||
|
r.st &&
|
||
|
((v[_++] = F.x),
|
||
|
(v[_] = F.y),
|
||
|
(G = Math.min(G, F.x)),
|
||
|
(V = Math.min(V, F.y)),
|
||
|
(L = Math.max(L, F.x)),
|
||
|
(D = Math.max(D, F.y)))),
|
||
|
r.st && (G < 0 || V < 0 || L > 1 || D > 1))
|
||
|
)
|
||
|
for (var O = 0; O < v.length; O += 2)
|
||
|
(v[O] = (v[O] - G) / (L - G)), (v[O + 1] = (v[O + 1] - V) / (D - V));
|
||
|
var N = (function (t, a, r, n) {
|
||
|
var i = t.length,
|
||
|
o = a.normal ? new Float32Array(i) : void 0,
|
||
|
s = a.tangent ? new Float32Array(i) : void 0,
|
||
|
l = a.bitangent ? new Float32Array(i) : void 0,
|
||
|
u = 0,
|
||
|
c = C,
|
||
|
m = w,
|
||
|
p = x;
|
||
|
if (a.normal || a.tangent || a.bitangent)
|
||
|
for (var d = 0; d < i; d += 3) {
|
||
|
var g = e.Cartesian3.fromArray(t, d, A),
|
||
|
y = u + 1,
|
||
|
f = u + 2;
|
||
|
(p = r.geodeticSurfaceNormal(g, p)),
|
||
|
(a.tangent || a.bitangent) &&
|
||
|
(e.Cartesian3.cross(e.Cartesian3.UNIT_Z, p, m),
|
||
|
e.Matrix3.multiplyByVector(n, m, m),
|
||
|
e.Cartesian3.normalize(m, m),
|
||
|
a.bitangent && e.Cartesian3.normalize(e.Cartesian3.cross(p, m, c), c)),
|
||
|
a.normal && ((o[u] = p.x), (o[y] = p.y), (o[f] = p.z)),
|
||
|
a.tangent && ((s[u] = m.x), (s[y] = m.y), (s[f] = m.z)),
|
||
|
a.bitangent && ((l[u] = c.x), (l[y] = c.y), (l[f] = c.z)),
|
||
|
(u += 3);
|
||
|
}
|
||
|
return P(a, { positions: t, normals: o, tangents: s, bitangents: l });
|
||
|
})(h, r, n, a.tangentRotationMatrix),
|
||
|
S = 6 * (l - 1) * (y - 1);
|
||
|
u && (S += 3 * (l - 1)), m && (S += 3 * (l - 1));
|
||
|
var I,
|
||
|
k = c.IndexDatatype.createTypedArray(f, S),
|
||
|
H = 0,
|
||
|
z = 0;
|
||
|
for (I = 0; I < y - 1; ++I) {
|
||
|
for (var B = 0; B < l - 1; ++B) {
|
||
|
var U = H,
|
||
|
Y = U + l,
|
||
|
q = Y + 1,
|
||
|
X = U + 1;
|
||
|
(k[z++] = U), (k[z++] = Y), (k[z++] = X), (k[z++] = X), (k[z++] = Y), (k[z++] = q), ++H;
|
||
|
}
|
||
|
++H;
|
||
|
}
|
||
|
if (u || m) {
|
||
|
var Q,
|
||
|
W,
|
||
|
J = f - 1,
|
||
|
j = f - 1;
|
||
|
if ((u && m && (J = f - 2), (H = 0), u))
|
||
|
for (I = 0; I < l - 1; I++)
|
||
|
(W = (Q = H) + 1), (k[z++] = J), (k[z++] = Q), (k[z++] = W), ++H;
|
||
|
if (m)
|
||
|
for (H = (y - 1) * l, I = 0; I < l - 1; I++)
|
||
|
(W = (Q = H) + 1), (k[z++] = Q), (k[z++] = j), (k[z++] = W), ++H;
|
||
|
}
|
||
|
return (
|
||
|
(N.indices = k),
|
||
|
r.st &&
|
||
|
(N.attributes.st = new o.GeometryAttribute({
|
||
|
componentDatatype: i.ComponentDatatype.FLOAT,
|
||
|
componentsPerAttribute: 2,
|
||
|
values: v,
|
||
|
})),
|
||
|
N
|
||
|
);
|
||
|
}
|
||
|
function M(t, e, a, r, n) {
|
||
|
return (
|
||
|
(t[e++] = r[a]),
|
||
|
(t[e++] = r[a + 1]),
|
||
|
(t[e++] = r[a + 2]),
|
||
|
(t[e++] = n[a]),
|
||
|
(t[e++] = n[a + 1]),
|
||
|
(t[e] = n[a + 2]),
|
||
|
t
|
||
|
);
|
||
|
}
|
||
|
function T(t, e, a, r) {
|
||
|
return (t[e++] = r[a]), (t[e++] = r[a + 1]), (t[e++] = r[a]), (t[e] = r[a + 1]), t;
|
||
|
}
|
||
|
var O = new d.VertexFormat();
|
||
|
function N(r, n) {
|
||
|
var s,
|
||
|
p = r._shadowVolume,
|
||
|
g = r._offsetAttribute,
|
||
|
y = r._vertexFormat,
|
||
|
f = r._extrudedHeight,
|
||
|
h = r._surfaceHeight,
|
||
|
v = r._ellipsoid,
|
||
|
b = n.height,
|
||
|
_ = n.width;
|
||
|
if (p) {
|
||
|
var R = d.VertexFormat.clone(y, O);
|
||
|
(R.normal = !0), (r._vertexFormat = R);
|
||
|
}
|
||
|
var E = D(r, n);
|
||
|
p && (r._vertexFormat = y);
|
||
|
var F = m.PolygonPipeline.scaleToGeodeticHeight(E.attributes.position.values, h, v, !1),
|
||
|
G = (F = new Float64Array(F)).length,
|
||
|
N = 2 * G,
|
||
|
S = new Float64Array(N);
|
||
|
S.set(F);
|
||
|
var I = m.PolygonPipeline.scaleToGeodeticHeight(E.attributes.position.values, f, v);
|
||
|
S.set(I, G), (E.attributes.position.values = S);
|
||
|
var k,
|
||
|
H,
|
||
|
z,
|
||
|
B = y.normal ? new Float32Array(N) : void 0,
|
||
|
U = y.tangent ? new Float32Array(N) : void 0,
|
||
|
Y = y.bitangent ? new Float32Array(N) : void 0,
|
||
|
q = y.st ? new Float32Array((N / 3) * 2) : void 0;
|
||
|
if (y.normal) {
|
||
|
for (H = E.attributes.normal.values, B.set(H), s = 0; s < G; s++) H[s] = -H[s];
|
||
|
B.set(H, G), (E.attributes.normal.values = B);
|
||
|
}
|
||
|
if (p) {
|
||
|
(H = E.attributes.normal.values), y.normal || (E.attributes.normal = void 0);
|
||
|
var X = new Float32Array(N);
|
||
|
for (s = 0; s < G; s++) H[s] = -H[s];
|
||
|
X.set(H, G),
|
||
|
(E.attributes.extrudeDirection = new o.GeometryAttribute({
|
||
|
componentDatatype: i.ComponentDatatype.FLOAT,
|
||
|
componentsPerAttribute: 3,
|
||
|
values: X,
|
||
|
}));
|
||
|
}
|
||
|
var Q = t.defined(g);
|
||
|
if (Q) {
|
||
|
var W = (G / 3) * 2,
|
||
|
J = new Uint8Array(W);
|
||
|
g === a.GeometryOffsetAttribute.TOP
|
||
|
? (J = a.arrayFill(J, 1, 0, W / 2))
|
||
|
: ((z = g === a.GeometryOffsetAttribute.NONE ? 0 : 1), (J = a.arrayFill(J, z))),
|
||
|
(E.attributes.applyOffset = new o.GeometryAttribute({
|
||
|
componentDatatype: i.ComponentDatatype.UNSIGNED_BYTE,
|
||
|
componentsPerAttribute: 1,
|
||
|
values: J,
|
||
|
}));
|
||
|
}
|
||
|
if (y.tangent) {
|
||
|
var j = E.attributes.tangent.values;
|
||
|
for (U.set(j), s = 0; s < G; s++) j[s] = -j[s];
|
||
|
U.set(j, G), (E.attributes.tangent.values = U);
|
||
|
}
|
||
|
if (y.bitangent) {
|
||
|
var Z = E.attributes.bitangent.values;
|
||
|
Y.set(Z), Y.set(Z, G), (E.attributes.bitangent.values = Y);
|
||
|
}
|
||
|
y.st &&
|
||
|
((k = E.attributes.st.values), q.set(k), q.set(k, (G / 3) * 2), (E.attributes.st.values = q));
|
||
|
var K = E.indices,
|
||
|
$ = K.length,
|
||
|
tt = G / 3,
|
||
|
et = c.IndexDatatype.createTypedArray(N / 3, 2 * $);
|
||
|
for (et.set(K), s = 0; s < $; s += 3)
|
||
|
(et[s + $] = K[s + 2] + tt), (et[s + 1 + $] = K[s + 1] + tt), (et[s + 2 + $] = K[s] + tt);
|
||
|
E.indices = et;
|
||
|
var at = n.northCap,
|
||
|
rt = n.southCap,
|
||
|
nt = b,
|
||
|
it = 2,
|
||
|
ot = 0,
|
||
|
st = 4,
|
||
|
lt = 4;
|
||
|
at && ((it -= 1), (nt -= 1), (ot += 1), (st -= 2), (lt -= 1)),
|
||
|
rt && ((it -= 1), (nt -= 1), (ot += 1), (st -= 2), (lt -= 1));
|
||
|
var ut = 2 * ((ot += it * _ + 2 * nt - st) + lt),
|
||
|
ct = new Float64Array(3 * ut),
|
||
|
mt = p ? new Float32Array(3 * ut) : void 0,
|
||
|
pt = Q ? new Uint8Array(ut) : void 0,
|
||
|
dt = y.st ? new Float32Array(2 * ut) : void 0,
|
||
|
gt = g === a.GeometryOffsetAttribute.TOP;
|
||
|
Q && !gt && ((z = g === a.GeometryOffsetAttribute.ALL ? 1 : 0), (pt = a.arrayFill(pt, z)));
|
||
|
var yt,
|
||
|
ft = 0,
|
||
|
ht = 0,
|
||
|
vt = 0,
|
||
|
bt = 0,
|
||
|
_t = _ * nt;
|
||
|
for (s = 0; s < _t; s += _)
|
||
|
(ct = M(ct, ft, (yt = 3 * s), F, I)),
|
||
|
(ft += 6),
|
||
|
y.st && ((dt = T(dt, ht, 2 * s, k)), (ht += 4)),
|
||
|
p && ((vt += 3), (mt[vt++] = H[yt]), (mt[vt++] = H[yt + 1]), (mt[vt++] = H[yt + 2])),
|
||
|
gt && ((pt[bt++] = 1), (bt += 1));
|
||
|
if (rt) {
|
||
|
var At = at ? _t + 1 : _t;
|
||
|
for (yt = 3 * At, s = 0; s < 2; s++)
|
||
|
(ct = M(ct, ft, yt, F, I)),
|
||
|
(ft += 6),
|
||
|
y.st && ((dt = T(dt, ht, 2 * At, k)), (ht += 4)),
|
||
|
p && ((vt += 3), (mt[vt++] = H[yt]), (mt[vt++] = H[yt + 1]), (mt[vt++] = H[yt + 2])),
|
||
|
gt && ((pt[bt++] = 1), (bt += 1));
|
||
|
} else
|
||
|
for (s = _t - _; s < _t; s++)
|
||
|
(ct = M(ct, ft, (yt = 3 * s), F, I)),
|
||
|
(ft += 6),
|
||
|
y.st && ((dt = T(dt, ht, 2 * s, k)), (ht += 4)),
|
||
|
p && ((vt += 3), (mt[vt++] = H[yt]), (mt[vt++] = H[yt + 1]), (mt[vt++] = H[yt + 2])),
|
||
|
gt && ((pt[bt++] = 1), (bt += 1));
|
||
|
for (s = _t - 1; s > 0; s -= _)
|
||
|
(ct = M(ct, ft, (yt = 3 * s), F, I)),
|
||
|
(ft += 6),
|
||
|
y.st && ((dt = T(dt, ht, 2 * s, k)), (ht += 4)),
|
||
|
p && ((vt += 3), (mt[vt++] = H[yt]), (mt[vt++] = H[yt + 1]), (mt[vt++] = H[yt + 2])),
|
||
|
gt && ((pt[bt++] = 1), (bt += 1));
|
||
|
if (at) {
|
||
|
var xt = _t;
|
||
|
for (yt = 3 * xt, s = 0; s < 2; s++)
|
||
|
(ct = M(ct, ft, yt, F, I)),
|
||
|
(ft += 6),
|
||
|
y.st && ((dt = T(dt, ht, 2 * xt, k)), (ht += 4)),
|
||
|
p && ((vt += 3), (mt[vt++] = H[yt]), (mt[vt++] = H[yt + 1]), (mt[vt++] = H[yt + 2])),
|
||
|
gt && ((pt[bt++] = 1), (bt += 1));
|
||
|
} else
|
||
|
for (s = _ - 1; s >= 0; s--)
|
||
|
(ct = M(ct, ft, (yt = 3 * s), F, I)),
|
||
|
(ft += 6),
|
||
|
y.st && ((dt = T(dt, ht, 2 * s, k)), (ht += 4)),
|
||
|
p && ((vt += 3), (mt[vt++] = H[yt]), (mt[vt++] = H[yt + 1]), (mt[vt++] = H[yt + 2])),
|
||
|
gt && ((pt[bt++] = 1), (bt += 1));
|
||
|
var wt = (function (t, a, r) {
|
||
|
var n = t.length,
|
||
|
o = a.normal ? new Float32Array(n) : void 0,
|
||
|
s = a.tangent ? new Float32Array(n) : void 0,
|
||
|
l = a.bitangent ? new Float32Array(n) : void 0,
|
||
|
u = 0,
|
||
|
c = 0,
|
||
|
m = 0,
|
||
|
p = !0,
|
||
|
d = C,
|
||
|
g = w,
|
||
|
y = x;
|
||
|
if (a.normal || a.tangent || a.bitangent)
|
||
|
for (var f = 0; f < n; f += 6) {
|
||
|
var h = e.Cartesian3.fromArray(t, f, A),
|
||
|
v = e.Cartesian3.fromArray(t, (f + 6) % n, V);
|
||
|
if (p) {
|
||
|
var b = e.Cartesian3.fromArray(t, (f + 3) % n, L);
|
||
|
e.Cartesian3.subtract(v, h, v),
|
||
|
e.Cartesian3.subtract(b, h, b),
|
||
|
(y = e.Cartesian3.normalize(e.Cartesian3.cross(b, v, y), y)),
|
||
|
(p = !1);
|
||
|
}
|
||
|
e.Cartesian3.equalsEpsilon(v, h, i.CesiumMath.EPSILON10) && (p = !0),
|
||
|
(a.tangent || a.bitangent) &&
|
||
|
((d = r.geodeticSurfaceNormal(h, d)),
|
||
|
a.tangent && (g = e.Cartesian3.normalize(e.Cartesian3.cross(d, y, g), g))),
|
||
|
a.normal &&
|
||
|
((o[u++] = y.x),
|
||
|
(o[u++] = y.y),
|
||
|
(o[u++] = y.z),
|
||
|
(o[u++] = y.x),
|
||
|
(o[u++] = y.y),
|
||
|
(o[u++] = y.z)),
|
||
|
a.tangent &&
|
||
|
((s[c++] = g.x),
|
||
|
(s[c++] = g.y),
|
||
|
(s[c++] = g.z),
|
||
|
(s[c++] = g.x),
|
||
|
(s[c++] = g.y),
|
||
|
(s[c++] = g.z)),
|
||
|
a.bitangent &&
|
||
|
((l[m++] = d.x),
|
||
|
(l[m++] = d.y),
|
||
|
(l[m++] = d.z),
|
||
|
(l[m++] = d.x),
|
||
|
(l[m++] = d.y),
|
||
|
(l[m++] = d.z));
|
||
|
}
|
||
|
return P(a, { positions: t, normals: o, tangents: s, bitangents: l });
|
||
|
})(ct, y, v);
|
||
|
y.st &&
|
||
|
(wt.attributes.st = new o.GeometryAttribute({
|
||
|
componentDatatype: i.ComponentDatatype.FLOAT,
|
||
|
componentsPerAttribute: 2,
|
||
|
values: dt,
|
||
|
})),
|
||
|
p &&
|
||
|
(wt.attributes.extrudeDirection = new o.GeometryAttribute({
|
||
|
componentDatatype: i.ComponentDatatype.FLOAT,
|
||
|
componentsPerAttribute: 3,
|
||
|
values: mt,
|
||
|
})),
|
||
|
Q &&
|
||
|
(wt.attributes.applyOffset = new o.GeometryAttribute({
|
||
|
componentDatatype: i.ComponentDatatype.UNSIGNED_BYTE,
|
||
|
componentsPerAttribute: 1,
|
||
|
values: pt,
|
||
|
}));
|
||
|
var Ct,
|
||
|
Rt,
|
||
|
Et,
|
||
|
Ft,
|
||
|
Gt = c.IndexDatatype.createTypedArray(ut, 6 * ot);
|
||
|
G = ct.length / 3;
|
||
|
var Pt = 0;
|
||
|
for (s = 0; s < G - 1; s += 2) {
|
||
|
Ft = ((Ct = s) + 2) % G;
|
||
|
var Vt = e.Cartesian3.fromArray(ct, 3 * Ct, V),
|
||
|
Lt = e.Cartesian3.fromArray(ct, 3 * Ft, L);
|
||
|
e.Cartesian3.equalsEpsilon(Vt, Lt, i.CesiumMath.EPSILON10) ||
|
||
|
((Et = ((Rt = (Ct + 1) % G) + 2) % G),
|
||
|
(Gt[Pt++] = Ct),
|
||
|
(Gt[Pt++] = Rt),
|
||
|
(Gt[Pt++] = Ft),
|
||
|
(Gt[Pt++] = Ft),
|
||
|
(Gt[Pt++] = Rt),
|
||
|
(Gt[Pt++] = Et));
|
||
|
}
|
||
|
return (
|
||
|
(wt.indices = Gt),
|
||
|
(wt = u.GeometryPipeline.combineInstances([
|
||
|
new l.GeometryInstance({ geometry: E }),
|
||
|
new l.GeometryInstance({ geometry: wt }),
|
||
|
]))[0]
|
||
|
);
|
||
|
}
|
||
|
var S = [new e.Cartesian3(), new e.Cartesian3(), new e.Cartesian3(), new e.Cartesian3()],
|
||
|
I = new e.Cartographic(),
|
||
|
k = new e.Cartographic();
|
||
|
function H(t, a, r, n, i) {
|
||
|
if (0 === r) return e.Rectangle.clone(t, i);
|
||
|
var o = p.RectangleGeometryLibrary.computeOptions(t, a, r, 0, R, I),
|
||
|
s = o.height,
|
||
|
l = o.width,
|
||
|
u = S;
|
||
|
return (
|
||
|
p.RectangleGeometryLibrary.computePosition(o, n, !1, 0, 0, u[0]),
|
||
|
p.RectangleGeometryLibrary.computePosition(o, n, !1, 0, l - 1, u[1]),
|
||
|
p.RectangleGeometryLibrary.computePosition(o, n, !1, s - 1, 0, u[2]),
|
||
|
p.RectangleGeometryLibrary.computePosition(o, n, !1, s - 1, l - 1, u[3]),
|
||
|
e.Rectangle.fromCartesianArray(u, n, i)
|
||
|
);
|
||
|
}
|
||
|
function z(a) {
|
||
|
var r = (a = t.defaultValue(a, t.defaultValue.EMPTY_OBJECT)).rectangle,
|
||
|
n = t.defaultValue(a.height, 0),
|
||
|
o = t.defaultValue(a.extrudedHeight, n);
|
||
|
(this._rectangle = e.Rectangle.clone(r)),
|
||
|
(this._granularity = t.defaultValue(a.granularity, i.CesiumMath.RADIANS_PER_DEGREE)),
|
||
|
(this._ellipsoid = e.Ellipsoid.clone(t.defaultValue(a.ellipsoid, e.Ellipsoid.WGS84))),
|
||
|
(this._surfaceHeight = Math.max(n, o)),
|
||
|
(this._rotation = t.defaultValue(a.rotation, 0)),
|
||
|
(this._stRotation = t.defaultValue(a.stRotation, 0)),
|
||
|
(this._vertexFormat = d.VertexFormat.clone(
|
||
|
t.defaultValue(a.vertexFormat, d.VertexFormat.DEFAULT)
|
||
|
)),
|
||
|
(this._extrudedHeight = Math.min(n, o)),
|
||
|
(this._shadowVolume = t.defaultValue(a.shadowVolume, !1)),
|
||
|
(this._workerName = 'createRectangleGeometry'),
|
||
|
(this._offsetAttribute = a.offsetAttribute),
|
||
|
(this._rotatedRectangle = void 0),
|
||
|
(this._textureCoordinateRotationPoints = void 0);
|
||
|
}
|
||
|
(z.packedLength =
|
||
|
e.Rectangle.packedLength + e.Ellipsoid.packedLength + d.VertexFormat.packedLength + 7),
|
||
|
(z.pack = function (a, r, n) {
|
||
|
return (
|
||
|
(n = t.defaultValue(n, 0)),
|
||
|
e.Rectangle.pack(a._rectangle, r, n),
|
||
|
(n += e.Rectangle.packedLength),
|
||
|
e.Ellipsoid.pack(a._ellipsoid, r, n),
|
||
|
(n += e.Ellipsoid.packedLength),
|
||
|
d.VertexFormat.pack(a._vertexFormat, r, n),
|
||
|
(n += d.VertexFormat.packedLength),
|
||
|
(r[n++] = a._granularity),
|
||
|
(r[n++] = a._surfaceHeight),
|
||
|
(r[n++] = a._rotation),
|
||
|
(r[n++] = a._stRotation),
|
||
|
(r[n++] = a._extrudedHeight),
|
||
|
(r[n++] = a._shadowVolume ? 1 : 0),
|
||
|
(r[n] = t.defaultValue(a._offsetAttribute, -1)),
|
||
|
r
|
||
|
);
|
||
|
});
|
||
|
var B = new e.Rectangle(),
|
||
|
U = e.Ellipsoid.clone(e.Ellipsoid.UNIT_SPHERE),
|
||
|
Y = {
|
||
|
rectangle: B,
|
||
|
ellipsoid: U,
|
||
|
vertexFormat: O,
|
||
|
granularity: void 0,
|
||
|
height: void 0,
|
||
|
rotation: void 0,
|
||
|
stRotation: void 0,
|
||
|
extrudedHeight: void 0,
|
||
|
shadowVolume: void 0,
|
||
|
offsetAttribute: void 0,
|
||
|
};
|
||
|
(z.unpack = function (a, r, n) {
|
||
|
r = t.defaultValue(r, 0);
|
||
|
var i = e.Rectangle.unpack(a, r, B);
|
||
|
r += e.Rectangle.packedLength;
|
||
|
var o = e.Ellipsoid.unpack(a, r, U);
|
||
|
r += e.Ellipsoid.packedLength;
|
||
|
var s = d.VertexFormat.unpack(a, r, O);
|
||
|
r += d.VertexFormat.packedLength;
|
||
|
var l = a[r++],
|
||
|
u = a[r++],
|
||
|
c = a[r++],
|
||
|
m = a[r++],
|
||
|
p = a[r++],
|
||
|
g = 1 === a[r++],
|
||
|
y = a[r];
|
||
|
return t.defined(n)
|
||
|
? ((n._rectangle = e.Rectangle.clone(i, n._rectangle)),
|
||
|
(n._ellipsoid = e.Ellipsoid.clone(o, n._ellipsoid)),
|
||
|
(n._vertexFormat = d.VertexFormat.clone(s, n._vertexFormat)),
|
||
|
(n._granularity = l),
|
||
|
(n._surfaceHeight = u),
|
||
|
(n._rotation = c),
|
||
|
(n._stRotation = m),
|
||
|
(n._extrudedHeight = p),
|
||
|
(n._shadowVolume = g),
|
||
|
(n._offsetAttribute = -1 === y ? void 0 : y),
|
||
|
n)
|
||
|
: ((Y.granularity = l),
|
||
|
(Y.height = u),
|
||
|
(Y.rotation = c),
|
||
|
(Y.stRotation = m),
|
||
|
(Y.extrudedHeight = p),
|
||
|
(Y.shadowVolume = g),
|
||
|
(Y.offsetAttribute = -1 === y ? void 0 : y),
|
||
|
new z(Y));
|
||
|
}),
|
||
|
(z.computeRectangle = function (a, r) {
|
||
|
var n = (a = t.defaultValue(a, t.defaultValue.EMPTY_OBJECT)).rectangle,
|
||
|
o = t.defaultValue(a.granularity, i.CesiumMath.RADIANS_PER_DEGREE),
|
||
|
s = t.defaultValue(a.ellipsoid, e.Ellipsoid.WGS84);
|
||
|
return H(n, o, t.defaultValue(a.rotation, 0), s, r);
|
||
|
});
|
||
|
var q = new e.Matrix3(),
|
||
|
X = new r.Quaternion(),
|
||
|
Q = new e.Cartographic();
|
||
|
(z.createGeometry = function (n) {
|
||
|
if (
|
||
|
!i.CesiumMath.equalsEpsilon(n._rectangle.north, n._rectangle.south, i.CesiumMath.EPSILON10) &&
|
||
|
!i.CesiumMath.equalsEpsilon(n._rectangle.east, n._rectangle.west, i.CesiumMath.EPSILON10)
|
||
|
) {
|
||
|
var s = n._rectangle,
|
||
|
l = n._ellipsoid,
|
||
|
u = n._rotation,
|
||
|
c = n._stRotation,
|
||
|
d = n._vertexFormat,
|
||
|
g = p.RectangleGeometryLibrary.computeOptions(s, n._granularity, u, c, R, I, k),
|
||
|
y = q;
|
||
|
if (0 !== c || 0 !== u) {
|
||
|
var f = e.Rectangle.center(s, Q),
|
||
|
h = l.geodeticSurfaceNormalCartographic(f, V);
|
||
|
r.Quaternion.fromAxisAngle(h, -c, X), e.Matrix3.fromQuaternion(X, y);
|
||
|
} else e.Matrix3.clone(e.Matrix3.IDENTITY, y);
|
||
|
var v,
|
||
|
b,
|
||
|
_ = n._surfaceHeight,
|
||
|
A = n._extrudedHeight,
|
||
|
x = !i.CesiumMath.equalsEpsilon(_, A, 0, i.CesiumMath.EPSILON2);
|
||
|
if (
|
||
|
((g.lonScalar = 1 / n._rectangle.width),
|
||
|
(g.latScalar = 1 / n._rectangle.height),
|
||
|
(g.tangentRotationMatrix = y),
|
||
|
(s = n._rectangle),
|
||
|
x)
|
||
|
) {
|
||
|
v = N(n, g);
|
||
|
var w = r.BoundingSphere.fromRectangle3D(s, l, _, G),
|
||
|
C = r.BoundingSphere.fromRectangle3D(s, l, A, F);
|
||
|
b = r.BoundingSphere.union(w, C);
|
||
|
} else {
|
||
|
if (
|
||
|
(((v = D(n, g)).attributes.position.values = m.PolygonPipeline.scaleToGeodeticHeight(
|
||
|
v.attributes.position.values,
|
||
|
_,
|
||
|
l,
|
||
|
!1
|
||
|
)),
|
||
|
t.defined(n._offsetAttribute))
|
||
|
) {
|
||
|
var E = v.attributes.position.values.length,
|
||
|
P = new Uint8Array(E / 3),
|
||
|
L = n._offsetAttribute === a.GeometryOffsetAttribute.NONE ? 0 : 1;
|
||
|
a.arrayFill(P, L),
|
||
|
(v.attributes.applyOffset = new o.GeometryAttribute({
|
||
|
componentDatatype: i.ComponentDatatype.UNSIGNED_BYTE,
|
||
|
componentsPerAttribute: 1,
|
||
|
values: P,
|
||
|
}));
|
||
|
}
|
||
|
b = r.BoundingSphere.fromRectangle3D(s, l, _);
|
||
|
}
|
||
|
return (
|
||
|
d.position || delete v.attributes.position,
|
||
|
new o.Geometry({
|
||
|
attributes: v.attributes,
|
||
|
indices: v.indices,
|
||
|
primitiveType: v.primitiveType,
|
||
|
boundingSphere: b,
|
||
|
offsetAttribute: n._offsetAttribute,
|
||
|
})
|
||
|
);
|
||
|
}
|
||
|
}),
|
||
|
(z.createShadowVolume = function (t, e, a) {
|
||
|
var r = t._granularity,
|
||
|
n = t._ellipsoid,
|
||
|
i = e(r, n),
|
||
|
o = a(r, n);
|
||
|
return new z({
|
||
|
rectangle: t._rectangle,
|
||
|
rotation: t._rotation,
|
||
|
ellipsoid: n,
|
||
|
stRotation: t._stRotation,
|
||
|
granularity: r,
|
||
|
extrudedHeight: o,
|
||
|
height: i,
|
||
|
vertexFormat: d.VertexFormat.POSITION_ONLY,
|
||
|
shadowVolume: !0,
|
||
|
});
|
||
|
});
|
||
|
var W = new e.Rectangle(),
|
||
|
J = [new e.Cartesian2(), new e.Cartesian2(), new e.Cartesian2()],
|
||
|
j = new e.Matrix2(),
|
||
|
Z = new e.Cartographic();
|
||
|
return (
|
||
|
Object.defineProperties(z.prototype, {
|
||
|
rectangle: {
|
||
|
get: function () {
|
||
|
return (
|
||
|
t.defined(this._rotatedRectangle) ||
|
||
|
(this._rotatedRectangle = H(
|
||
|
this._rectangle,
|
||
|
this._granularity,
|
||
|
this._rotation,
|
||
|
this._ellipsoid
|
||
|
)),
|
||
|
this._rotatedRectangle
|
||
|
);
|
||
|
},
|
||
|
},
|
||
|
textureCoordinateRotationPoints: {
|
||
|
get: function () {
|
||
|
return (
|
||
|
t.defined(this._textureCoordinateRotationPoints) ||
|
||
|
(this._textureCoordinateRotationPoints = (function (t) {
|
||
|
if (0 === t._stRotation) return [0, 0, 0, 1, 1, 0];
|
||
|
var a = e.Rectangle.clone(t._rectangle, W),
|
||
|
r = t._granularity,
|
||
|
n = t._ellipsoid,
|
||
|
i = H(a, r, t._rotation - t._stRotation, n, W),
|
||
|
o = J;
|
||
|
(o[0].x = i.west),
|
||
|
(o[0].y = i.south),
|
||
|
(o[1].x = i.west),
|
||
|
(o[1].y = i.north),
|
||
|
(o[2].x = i.east),
|
||
|
(o[2].y = i.south);
|
||
|
for (
|
||
|
var s = t.rectangle,
|
||
|
l = e.Matrix2.fromRotation(t._stRotation, j),
|
||
|
u = e.Rectangle.center(s, Z),
|
||
|
c = 0;
|
||
|
c < 3;
|
||
|
++c
|
||
|
) {
|
||
|
var m = o[c];
|
||
|
(m.x -= u.longitude),
|
||
|
(m.y -= u.latitude),
|
||
|
e.Matrix2.multiplyByVector(l, m, m),
|
||
|
(m.x += u.longitude),
|
||
|
(m.y += u.latitude),
|
||
|
(m.x = (m.x - s.west) / s.width),
|
||
|
(m.y = (m.y - s.south) / s.height);
|
||
|
}
|
||
|
var p = o[0],
|
||
|
d = o[1],
|
||
|
g = o[2],
|
||
|
y = new Array(6);
|
||
|
return (
|
||
|
e.Cartesian2.pack(p, y), e.Cartesian2.pack(d, y, 2), e.Cartesian2.pack(g, y, 4), y
|
||
|
);
|
||
|
})(this)),
|
||
|
this._textureCoordinateRotationPoints
|
||
|
);
|
||
|
},
|
||
|
},
|
||
|
}),
|
||
|
function (a, r) {
|
||
|
return (
|
||
|
t.defined(r) && (a = z.unpack(a, r)),
|
||
|
(a._ellipsoid = e.Ellipsoid.clone(a._ellipsoid)),
|
||
|
(a._rectangle = e.Rectangle.clone(a._rectangle)),
|
||
|
z.createGeometry(a)
|
||
|
);
|
||
|
}
|
||
|
);
|
||
|
});
|