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.
guanyun3d/public/lib/Cesium/Workers/createGroundPolylineGeometr...

858 lines
28 KiB

11 months ago
define([
'./Transforms-7cd3197b',
'./Matrix2-f2da41d4',
'./RuntimeError-ffe03243',
'./when-229515d6',
'./ComponentDatatype-17b06483',
'./ArcType-1da7fdca',
'./arrayRemoveDuplicates-bb548aa3',
'./EllipsoidGeodesic-43ba18de',
'./EllipsoidRhumbLine-afd6cd20',
'./EncodedCartesian3-d4f305ce',
'./GeometryAttribute-80036e07',
'./IntersectionTests-1b8a3cb9',
'./Plane-0421a8be',
'./WebMercatorProjection-d69cec15',
'./combine-8ce3f24b',
'./WebGLConstants-4e26b85a',
], function (e, a, t, n, i, r, s, o, l, u, c, C, p, d, h, g) {
'use strict';
function f(t) {
(t = n.defaultValue(t, n.defaultValue.EMPTY_OBJECT)),
(this._ellipsoid = n.defaultValue(t.ellipsoid, a.Ellipsoid.WGS84)),
(this._rectangle = n.defaultValue(t.rectangle, a.Rectangle.MAX_VALUE)),
(this._projection = new e.GeographicProjection(this._ellipsoid)),
(this._numberOfLevelZeroTilesX = n.defaultValue(t.numberOfLevelZeroTilesX, 2)),
(this._numberOfLevelZeroTilesY = n.defaultValue(t.numberOfLevelZeroTilesY, 1));
}
Object.defineProperties(f.prototype, {
ellipsoid: {
get: function () {
return this._ellipsoid;
},
},
rectangle: {
get: function () {
return this._rectangle;
},
},
projection: {
get: function () {
return this._projection;
},
},
}),
(f.prototype.getNumberOfXTilesAtLevel = function (e) {
return this._numberOfLevelZeroTilesX << e;
}),
(f.prototype.getNumberOfYTilesAtLevel = function (e) {
return this._numberOfLevelZeroTilesY << e;
}),
(f.prototype.rectangleToNativeRectangle = function (e, t) {
var r = i.CesiumMath.toDegrees(e.west),
s = i.CesiumMath.toDegrees(e.south),
o = i.CesiumMath.toDegrees(e.east),
l = i.CesiumMath.toDegrees(e.north);
return n.defined(t)
? ((t.west = r), (t.south = s), (t.east = o), (t.north = l), t)
: new a.Rectangle(r, s, o, l);
}),
(f.prototype.tileXYToNativeRectangle = function (e, a, t, n) {
var r = this.tileXYToRectangle(e, a, t, n);
return (
(r.west = i.CesiumMath.toDegrees(r.west)),
(r.south = i.CesiumMath.toDegrees(r.south)),
(r.east = i.CesiumMath.toDegrees(r.east)),
(r.north = i.CesiumMath.toDegrees(r.north)),
r
);
}),
(f.prototype.tileXYToRectangle = function (e, t, i, r) {
var s = this._rectangle,
o = this.getNumberOfXTilesAtLevel(i),
l = this.getNumberOfYTilesAtLevel(i),
u = s.width / o,
c = e * u + s.west,
C = (e + 1) * u + s.west,
p = s.height / l,
d = s.north - t * p,
h = s.north - (t + 1) * p;
return (
n.defined(r) || (r = new a.Rectangle(c, h, C, d)),
(r.west = c),
(r.south = h),
(r.east = C),
(r.north = d),
r
);
}),
(f.prototype.positionToTileXY = function (e, t, r) {
var s = this._rectangle;
if (a.Rectangle.contains(s, e)) {
var o = this.getNumberOfXTilesAtLevel(t),
l = this.getNumberOfYTilesAtLevel(t),
u = s.width / o,
c = s.height / l,
C = e.longitude;
s.east < s.west && (C += i.CesiumMath.TWO_PI);
var p = ((C - s.west) / u) | 0;
p >= o && (p = o - 1);
var d = ((s.north - e.latitude) / c) | 0;
return (
d >= l && (d = l - 1), n.defined(r) ? ((r.x = p), (r.y = d), r) : new a.Cartesian2(p, d)
);
}
});
var m = new a.Cartesian3(),
w = new a.Cartesian3(),
v = new a.Cartographic(),
y = new a.Cartesian3(),
M = new a.Cartesian3(),
T = new e.BoundingSphere(),
E = new f(),
_ = [new a.Cartographic(), new a.Cartographic(), new a.Cartographic(), new a.Cartographic()],
O = new a.Cartesian2(),
b = {};
function P(e) {
a.Cartographic.fromRadians(e.east, e.north, 0, _[0]),
a.Cartographic.fromRadians(e.west, e.north, 0, _[1]),
a.Cartographic.fromRadians(e.east, e.south, 0, _[2]),
a.Cartographic.fromRadians(e.west, e.south, 0, _[3]);
var t,
n = 0,
i = 0,
r = 0,
s = 0,
o = b._terrainHeightsMaxLevel;
for (t = 0; t <= o; ++t) {
for (var l = !1, u = 0; u < 4; ++u) {
var c = _[u];
if ((E.positionToTileXY(c, t, O), 0 === u)) (r = O.x), (s = O.y);
else if (r !== O.x || s !== O.y) {
l = !0;
break;
}
}
if (l) break;
(n = r), (i = s);
}
if (0 !== t) return { x: n, y: i, level: t > o ? o : t - 1 };
}
(b.initialize = function () {
var a = b._initPromise;
return (
n.defined(a) ||
((a = e.Resource.fetchJson(e.buildModuleUrl('Assets/approximateTerrainHeights.json')).then(
function (e) {
b._terrainHeights = e;
}
)),
(b._initPromise = a)),
a
);
}),
(b.getMinimumMaximumHeights = function (e, t) {
t = n.defaultValue(t, a.Ellipsoid.WGS84);
var i = P(e),
r = b._defaultMinTerrainHeight,
s = b._defaultMaxTerrainHeight;
if (n.defined(i)) {
var o = i.level + '-' + i.x + '-' + i.y,
l = b._terrainHeights[o];
n.defined(l) && ((r = l[0]), (s = l[1])),
t.cartographicToCartesian(a.Rectangle.northeast(e, v), m),
t.cartographicToCartesian(a.Rectangle.southwest(e, v), w),
a.Cartesian3.midpoint(w, m, y);
var u = t.scaleToGeodeticSurface(y, M);
if (n.defined(u)) {
var c = a.Cartesian3.distance(y, u);
r = Math.min(r, -c);
} else r = b._defaultMinTerrainHeight;
}
return {
minimumTerrainHeight: (r = Math.max(b._defaultMinTerrainHeight, r)),
maximumTerrainHeight: s,
};
}),
(b.getBoundingSphere = function (t, i) {
i = n.defaultValue(i, a.Ellipsoid.WGS84);
var r = P(t),
s = b._defaultMaxTerrainHeight;
if (n.defined(r)) {
var o = r.level + '-' + r.x + '-' + r.y,
l = b._terrainHeights[o];
n.defined(l) && (s = l[1]);
}
var u = e.BoundingSphere.fromRectangle3D(t, i, 0);
return e.BoundingSphere.fromRectangle3D(t, i, s, T), e.BoundingSphere.union(u, T, u);
}),
(b._terrainHeightsMaxLevel = 6),
(b._defaultMaxTerrainHeight = 9e3),
(b._defaultMinTerrainHeight = -1e5),
(b._terrainHeights = void 0),
(b._initPromise = void 0),
Object.defineProperties(b, {
initialized: {
get: function () {
return n.defined(b._terrainHeights);
},
},
});
var A = [e.GeographicProjection, d.WebMercatorProjection],
k = A.length,
L = Math.cos(i.CesiumMath.toRadians(30)),
S = Math.cos(i.CesiumMath.toRadians(150));
function x(e) {
var t = (e = n.defaultValue(e, n.defaultValue.EMPTY_OBJECT)).positions;
(this.width = n.defaultValue(e.width, 1)),
(this._positions = t),
(this.granularity = n.defaultValue(e.granularity, 9999)),
(this.loop = n.defaultValue(e.loop, !1)),
(this.arcType = n.defaultValue(e.arcType, r.ArcType.GEODESIC)),
(this._ellipsoid = a.Ellipsoid.WGS84),
(this._projectionIndex = 0),
(this._workerName = 'createGroundPolylineGeometry'),
(this._scene3DOnly = !1);
}
Object.defineProperties(x.prototype, {
packedLength: {
get: function () {
return 1 + 3 * this._positions.length + 1 + 1 + 1 + a.Ellipsoid.packedLength + 1 + 1;
},
},
}),
(x.setProjectionAndEllipsoid = function (e, a) {
for (var t = 0, n = 0; n < k; n++)
if (a instanceof A[n]) {
t = n;
break;
}
(e._projectionIndex = t), (e._ellipsoid = a.ellipsoid);
});
var I = new a.Cartesian3(),
N = new a.Cartesian3(),
R = new a.Cartesian3();
function D(e, t, n, i, r) {
var s = Y(i, e, 0, I),
o = Y(i, e, n, N),
l = Y(i, t, 0, R),
u = F(o, s, N),
c = F(l, s, R);
return a.Cartesian3.cross(c, u, r), a.Cartesian3.normalize(r, r);
}
var z = new a.Cartographic(),
H = new a.Cartesian3(),
B = new a.Cartesian3(),
j = new a.Cartesian3();
function G(e, t, n, i, s, u, c, C, p, d, h) {
if (0 !== s) {
var g;
u === r.ArcType.GEODESIC
? (g = new o.EllipsoidGeodesic(e, t, c))
: u === r.ArcType.RHUMB && (g = new l.EllipsoidRhumbLine(e, t, c));
var f = g.surfaceDistance;
if (!(f < s))
for (
var m = D(e, t, i, c, j),
w = Math.ceil(f / s),
v = f / w,
y = v,
M = w - 1,
T = C.length,
E = 0;
E < M;
E++
) {
var _ = g.interpolateUsingSurfaceDistance(y, z),
O = Y(c, _, n, H),
b = Y(c, _, i, B);
a.Cartesian3.pack(m, C, T),
a.Cartesian3.pack(O, p, T),
a.Cartesian3.pack(b, d, T),
h.push(_.latitude),
h.push(_.longitude),
(T += 3),
(y += v);
}
}
}
var V = new a.Cartographic();
function Y(e, t, n, i) {
return a.Cartographic.clone(t, V), (V.height = n), a.Cartographic.toCartesian(V, e, i);
}
function F(e, t, n) {
return a.Cartesian3.subtract(e, t, n), a.Cartesian3.normalize(n, n), n;
}
function q(e, t, n, i) {
return (
(i = F(e, t, i)),
(i = a.Cartesian3.cross(i, n, i)),
(i = a.Cartesian3.normalize(i, i)),
(i = a.Cartesian3.cross(n, i, i))
);
}
(x.pack = function (e, t, i) {
var r = n.defaultValue(i, 0),
s = e._positions,
o = s.length;
t[r++] = o;
for (var l = 0; l < o; ++l) {
var u = s[l];
a.Cartesian3.pack(u, t, r), (r += 3);
}
return (
(t[r++] = e.granularity),
(t[r++] = e.loop ? 1 : 0),
(t[r++] = e.arcType),
a.Ellipsoid.pack(e._ellipsoid, t, r),
(r += a.Ellipsoid.packedLength),
(t[r++] = e._projectionIndex),
(t[r++] = e._scene3DOnly ? 1 : 0),
t
);
}),
(x.unpack = function (e, t, i) {
for (var r = n.defaultValue(t, 0), s = e[r++], o = new Array(s), l = 0; l < s; l++)
(o[l] = a.Cartesian3.unpack(e, r)), (r += 3);
var u = e[r++],
c = 1 === e[r++],
C = e[r++],
p = a.Ellipsoid.unpack(e, r);
r += a.Ellipsoid.packedLength;
var d = e[r++],
h = 1 === e[r++];
return (
n.defined(i) || (i = new x({ positions: o })),
(i._positions = o),
(i.granularity = u),
(i.loop = c),
(i.arcType = C),
(i._ellipsoid = p),
(i._projectionIndex = d),
(i._scene3DOnly = h),
i
);
});
var X = new a.Cartesian3(),
W = new a.Cartesian3(),
U = new a.Cartesian3(),
Z = new a.Cartesian3();
function J(e, t, n, r, s) {
var o = F(n, t, Z),
l = q(e, t, o, X),
u = q(r, t, o, W);
if (i.CesiumMath.equalsEpsilon(a.Cartesian3.dot(l, u), -1, i.CesiumMath.EPSILON5))
return (s = a.Cartesian3.cross(o, l, s)), (s = a.Cartesian3.normalize(s, s));
(s = a.Cartesian3.add(u, l, s)), (s = a.Cartesian3.normalize(s, s));
var c = a.Cartesian3.cross(o, s, U);
return a.Cartesian3.dot(u, c) < 0 && (s = a.Cartesian3.negate(s, s)), s;
}
var Q = p.Plane.fromPointNormal(a.Cartesian3.ZERO, a.Cartesian3.UNIT_Y),
K = new a.Cartesian3(),
$ = new a.Cartesian3(),
ee = new a.Cartesian3(),
ae = new a.Cartesian3(),
te = new a.Cartesian3(),
ne = new a.Cartesian3(),
ie = new a.Cartographic(),
re = new a.Cartographic(),
se = new a.Cartographic();
x.createGeometry = function (t) {
var o,
p,
d,
h,
g,
f,
m = !t._scene3DOnly,
w = t.loop,
v = t._ellipsoid,
y = t.granularity,
M = t.arcType,
T = new A[t._projectionIndex](v),
E = 1e3,
_ = t._positions,
O = _.length;
2 === O && (w = !1);
var P,
k,
S,
x = new l.EllipsoidRhumbLine(void 0, void 0, v),
I = [_[0]];
for (p = 0; p < O - 1; p++)
(d = _[p]),
(h = _[p + 1]),
(P = C.IntersectionTests.lineSegmentPlane(d, h, Q, ne)),
!n.defined(P) ||
a.Cartesian3.equalsEpsilon(P, d, i.CesiumMath.EPSILON7) ||
a.Cartesian3.equalsEpsilon(P, h, i.CesiumMath.EPSILON7) ||
(t.arcType === r.ArcType.GEODESIC
? I.push(a.Cartesian3.clone(P))
: t.arcType === r.ArcType.RHUMB &&
((S = v.cartesianToCartographic(P, ie).longitude),
(g = v.cartesianToCartographic(d, ie)),
(f = v.cartesianToCartographic(h, re)),
x.setEndPoints(g, f),
(k = x.findIntersectionWithLongitude(S, se)),
(P = v.cartographicToCartesian(k, ne)),
!n.defined(P) ||
a.Cartesian3.equalsEpsilon(P, d, i.CesiumMath.EPSILON7) ||
a.Cartesian3.equalsEpsilon(P, h, i.CesiumMath.EPSILON7) ||
I.push(a.Cartesian3.clone(P)))),
I.push(h);
w &&
((d = _[O - 1]),
(h = _[0]),
(P = C.IntersectionTests.lineSegmentPlane(d, h, Q, ne)),
!n.defined(P) ||
a.Cartesian3.equalsEpsilon(P, d, i.CesiumMath.EPSILON7) ||
a.Cartesian3.equalsEpsilon(P, h, i.CesiumMath.EPSILON7) ||
(t.arcType === r.ArcType.GEODESIC
? I.push(a.Cartesian3.clone(P))
: t.arcType === r.ArcType.RHUMB &&
((S = v.cartesianToCartographic(P, ie).longitude),
(g = v.cartesianToCartographic(d, ie)),
(f = v.cartesianToCartographic(h, re)),
x.setEndPoints(g, f),
(k = x.findIntersectionWithLongitude(S, se)),
(P = v.cartographicToCartesian(k, ne)),
!n.defined(P) ||
a.Cartesian3.equalsEpsilon(P, d, i.CesiumMath.EPSILON7) ||
a.Cartesian3.equalsEpsilon(P, h, i.CesiumMath.EPSILON7) ||
I.push(a.Cartesian3.clone(P)))));
var N = I.length,
R = new Array(N);
for (p = 0; p < N; p++) {
var z = a.Cartographic.fromCartesian(I[p], v);
(z.height = 0), (R[p] = z);
}
if (!((N = (R = s.arrayRemoveDuplicates(R, a.Cartographic.equalsEpsilon)).length) < 2)) {
var H = [],
B = [],
j = [],
V = [],
q = K,
X = $,
W = ee,
U = ae,
Z = te,
oe = R[0],
le = R[1];
for (
q = Y(v, R[N - 1], 0, q),
U = Y(v, le, 0, U),
X = Y(v, oe, 0, X),
W = Y(v, oe, E, W),
Z = w ? J(q, X, W, U, Z) : D(oe, le, E, v, Z),
a.Cartesian3.pack(Z, B, 0),
a.Cartesian3.pack(X, j, 0),
a.Cartesian3.pack(W, V, 0),
H.push(oe.latitude),
H.push(oe.longitude),
G(oe, le, 0, E, y, M, v, B, j, V, H),
p = 1;
p < N - 1;
++p
) {
(q = a.Cartesian3.clone(X, q)), (X = a.Cartesian3.clone(U, X));
var ue = R[p];
Y(v, ue, E, W),
Y(v, R[p + 1], 0, U),
J(q, X, W, U, Z),
(o = B.length),
a.Cartesian3.pack(Z, B, o),
a.Cartesian3.pack(X, j, o),
a.Cartesian3.pack(W, V, o),
H.push(ue.latitude),
H.push(ue.longitude),
G(R[p], R[p + 1], 0, E, y, M, v, B, j, V, H);
}
var Ce = R[N - 1],
pe = R[N - 2];
if (((X = Y(v, Ce, 0, X)), (W = Y(v, Ce, E, W)), w)) {
var de = R[0];
Z = J((q = Y(v, pe, 0, q)), X, W, (U = Y(v, de, 0, U)), Z);
} else Z = D(pe, Ce, E, v, Z);
if (
((o = B.length),
a.Cartesian3.pack(Z, B, o),
a.Cartesian3.pack(X, j, o),
a.Cartesian3.pack(W, V, o),
H.push(Ce.latitude),
H.push(Ce.longitude),
w)
) {
for (G(Ce, oe, 0, E, y, M, v, B, j, V, H), o = B.length, p = 0; p < 3; ++p)
(B[o + p] = B[p]), (j[o + p] = j[p]), (V[o + p] = V[p]);
H.push(oe.latitude), H.push(oe.longitude);
}
return (function (t, n, r, s, o, l, C) {
var p,
d,
h,
g,
f,
m,
w = n._ellipsoid,
v = r.length / 3 - 1,
y = 8 * v,
M = 4 * y,
T = 36 * v,
E = y > 65535 ? new Uint32Array(T) : new Uint16Array(T),
_ = new Float64Array(3 * y),
O = new Float32Array(M),
P = new Float32Array(M),
A = new Float32Array(M),
k = new Float32Array(M),
S = new Float32Array(M);
C &&
((h = new Float32Array(M)),
(g = new Float32Array(M)),
(f = new Float32Array(M)),
(m = new Float32Array(2 * y)));
var x = l.length / 2,
I = 0,
N = Me;
N.height = 0;
var R = Te;
R.height = 0;
var D = Ee,
z = _e;
if (C)
for (d = 0, p = 1; p < x; p++)
(N.latitude = l[d]),
(N.longitude = l[d + 1]),
(R.latitude = l[d + 2]),
(R.longitude = l[d + 3]),
(D = n.project(N, D)),
(z = n.project(R, z)),
(I += a.Cartesian3.distance(D, z)),
(d += 2);
var H = s.length / 3;
z = a.Cartesian3.unpack(s, 0, z);
var B,
j = 0;
for (d = 3, p = 1; p < H; p++)
(D = a.Cartesian3.clone(z, D)),
(z = a.Cartesian3.unpack(s, d, z)),
(j += a.Cartesian3.distance(D, z)),
(d += 3);
d = 3;
var G = 0,
V = 0,
Y = 0,
q = 0,
X = !1,
W = a.Cartesian3.unpack(r, 0, be),
U = a.Cartesian3.unpack(s, 0, _e),
Z = a.Cartesian3.unpack(o, 0, Ae);
if (t) {
ce(Z, a.Cartesian3.unpack(r, r.length - 6, Oe), W, U) && (Z = a.Cartesian3.negate(Z, Z));
}
var J = 0,
Q = 0,
K = 0;
for (p = 0; p < v; p++) {
var $,
ee,
ae,
te,
ne = a.Cartesian3.clone(W, Oe),
ie = a.Cartesian3.clone(U, Ee),
re = a.Cartesian3.clone(Z, Pe);
if (
(X && (re = a.Cartesian3.negate(re, re)),
(W = a.Cartesian3.unpack(r, d, be)),
(U = a.Cartesian3.unpack(s, d, _e)),
(X = ce((Z = a.Cartesian3.unpack(o, d, Ae)), ne, W, U)),
(N.latitude = l[G]),
(N.longitude = l[G + 1]),
(R.latitude = l[G + 2]),
(R.longitude = l[G + 3]),
C)
) {
var se = ye(N, R);
$ = n.project(N, Re);
var oe = F((ee = n.project(R, De)), $, We);
(oe.y = Math.abs(oe.y)),
(ae = ze),
(te = He),
0 === se || a.Cartesian3.dot(oe, a.Cartesian3.UNIT_Y) > L
? ((ae = he(n, N, re, $, ze)), (te = he(n, R, Z, ee, He)))
: 1 === se
? ((te = he(n, R, Z, ee, He)),
(ae.x = 0),
(ae.y = i.CesiumMath.sign(N.longitude - Math.abs(R.longitude))),
(ae.z = 0))
: ((ae = he(n, N, re, $, ze)),
(te.x = 0),
(te.y = i.CesiumMath.sign(N.longitude - R.longitude)),
(te.z = 0));
}
var le = a.Cartesian3.distance(ie, U),
ue = u.EncodedCartesian3.fromCartesian(ne, qe),
Ce = a.Cartesian3.subtract(W, ne, Be),
pe = a.Cartesian3.normalize(Ce, Ve),
de = a.Cartesian3.subtract(ie, ne, je);
de = a.Cartesian3.normalize(de, de);
var ge = a.Cartesian3.cross(pe, de, Ve);
ge = a.Cartesian3.normalize(ge, ge);
var fe = a.Cartesian3.cross(de, re, Ye);
fe = a.Cartesian3.normalize(fe, fe);
var we = a.Cartesian3.subtract(U, W, Ge);
we = a.Cartesian3.normalize(we, we);
var ea = a.Cartesian3.cross(Z, we, Fe);
ea = a.Cartesian3.normalize(ea, ea);
var aa,
ta,
na,
ia = le / j,
ra = J / j,
sa = 0,
oa = 0,
la = 0;
if (C) {
(sa = a.Cartesian3.distance($, ee)),
(aa = u.EncodedCartesian3.fromCartesian($, Xe)),
(ta = a.Cartesian3.subtract(ee, $, We));
var ua = (na = a.Cartesian3.normalize(ta, Ue)).x;
(na.x = na.y), (na.y = -ua), (oa = sa / I), (la = Q / I);
}
for (B = 0; B < 8; B++) {
var ca = q + 4 * B,
Ca = V + 2 * B,
pa = ca + 3,
da = B < 4 ? 1 : -1,
ha = 2 === B || 3 === B || 6 === B || 7 === B ? 1 : -1;
a.Cartesian3.pack(ue.high, O, ca),
(O[pa] = Ce.x),
a.Cartesian3.pack(ue.low, P, ca),
(P[pa] = Ce.y),
a.Cartesian3.pack(fe, A, ca),
(A[pa] = Ce.z),
a.Cartesian3.pack(ea, k, ca),
(k[pa] = ia * da),
a.Cartesian3.pack(ge, S, ca);
var ga = ra * ha;
0 === ga && ha < 0 && (ga = 9),
(S[pa] = ga),
C &&
((h[ca] = aa.high.x),
(h[ca + 1] = aa.high.y),
(h[ca + 2] = aa.low.x),
(h[ca + 3] = aa.low.y),
(f[ca] = -ae.y),
(f[ca + 1] = ae.x),
(f[ca + 2] = te.y),
(f[ca + 3] = -te.x),
(g[ca] = ta.x),
(g[ca + 1] = ta.y),
(g[ca + 2] = na.x),
(g[ca + 3] = na.y),
(m[Ca] = oa * da),
0 === (ga = la * ha) && ha < 0 && (ga = 9),
(m[Ca + 1] = ga));
}
var fa = Ie,
ma = Ne,
wa = Se,
va = xe,
ya = a.Rectangle.fromCartographicArray(ke, Le),
Ma = b.getMinimumMaximumHeights(ya, w),
Ta = Ma.minimumTerrainHeight,
Ea = Ma.maximumTerrainHeight;
(K += Ta), (K += Ea), me(ne, ie, Ta, Ea, fa, wa), me(W, U, Ta, Ea, ma, va);
var _a = a.Cartesian3.multiplyByScalar(ge, i.CesiumMath.EPSILON5, Ze);
a.Cartesian3.add(fa, _a, fa),
a.Cartesian3.add(ma, _a, ma),
a.Cartesian3.add(wa, _a, wa),
a.Cartesian3.add(va, _a, va),
ve(fa, ma),
ve(wa, va),
a.Cartesian3.pack(fa, _, Y),
a.Cartesian3.pack(ma, _, Y + 3),
a.Cartesian3.pack(va, _, Y + 6),
a.Cartesian3.pack(wa, _, Y + 9),
(_a = a.Cartesian3.multiplyByScalar(ge, -2 * i.CesiumMath.EPSILON5, Ze)),
a.Cartesian3.add(fa, _a, fa),
a.Cartesian3.add(ma, _a, ma),
a.Cartesian3.add(wa, _a, wa),
a.Cartesian3.add(va, _a, va),
ve(fa, ma),
ve(wa, va),
a.Cartesian3.pack(fa, _, Y + 12),
a.Cartesian3.pack(ma, _, Y + 15),
a.Cartesian3.pack(va, _, Y + 18),
a.Cartesian3.pack(wa, _, Y + 21),
(G += 2),
(d += 3),
(V += 16),
(Y += 24),
(q += 32),
(J += le),
(Q += sa);
}
d = 0;
var Oa = 0;
for (p = 0; p < v; p++) {
for (B = 0; B < Ke; B++) E[d + B] = Qe[B] + Oa;
(Oa += 8), (d += Ke);
}
var ba = Je;
e.BoundingSphere.fromVertices(r, a.Cartesian3.ZERO, 3, ba[0]),
e.BoundingSphere.fromVertices(s, a.Cartesian3.ZERO, 3, ba[1]);
var Pa = e.BoundingSphere.fromBoundingSpheres(ba);
Pa.radius += K / (2 * v);
var Aa = {
position: new c.GeometryAttribute({
componentDatatype: i.ComponentDatatype.DOUBLE,
componentsPerAttribute: 3,
normalize: !1,
values: _,
}),
startHiAndForwardOffsetX: $e(O),
startLoAndForwardOffsetY: $e(P),
startNormalAndForwardOffsetZ: $e(A),
endNormalAndTextureCoordinateNormalizationX: $e(k),
rightNormalAndTextureCoordinateNormalizationY: $e(S),
};
C &&
((Aa.startHiLo2D = $e(h)),
(Aa.offsetAndRight2D = $e(g)),
(Aa.startEndNormals2D = $e(f)),
(Aa.texcoordNormalization2D = new c.GeometryAttribute({
componentDatatype: i.ComponentDatatype.FLOAT,
componentsPerAttribute: 2,
normalize: !1,
values: m,
})));
return new c.Geometry({ attributes: Aa, indices: E, boundingSphere: Pa });
})(w, T, j, V, B, H, m);
}
};
var oe = new a.Cartesian3(),
le = new a.Matrix3(),
ue = new e.Quaternion();
function ce(t, n, r, s) {
var o = F(r, n, oe),
l = a.Cartesian3.dot(o, t);
if (l > L || l < S) {
var u = F(s, r, Z),
c = l < S ? i.CesiumMath.PI_OVER_TWO : -i.CesiumMath.PI_OVER_TWO,
C = e.Quaternion.fromAxisAngle(u, c, ue),
p = a.Matrix3.fromQuaternion(C, le);
return a.Matrix3.multiplyByVector(p, t, t), !0;
}
return !1;
}
var Ce = new a.Cartographic(),
pe = new a.Cartesian3(),
de = new a.Cartesian3();
function he(e, t, n, r, s) {
var o = a.Cartographic.toCartesian(t, e._ellipsoid, pe),
l = a.Cartesian3.add(o, n, de),
u = !1,
c = e._ellipsoid,
C = c.cartesianToCartographic(l, Ce);
Math.abs(t.longitude - C.longitude) > i.CesiumMath.PI_OVER_TWO &&
((u = !0), (l = a.Cartesian3.subtract(o, n, de)), (C = c.cartesianToCartographic(l, Ce))),
(C.height = 0);
var p = e.project(C, s);
return (
((s = a.Cartesian3.subtract(p, r, s)).z = 0),
(s = a.Cartesian3.normalize(s, s)),
u && a.Cartesian3.negate(s, s),
s
);
}
var ge = new a.Cartesian3(),
fe = new a.Cartesian3();
function me(e, t, n, i, r, s) {
var o = a.Cartesian3.subtract(t, e, ge);
a.Cartesian3.normalize(o, o);
var l = n - 0,
u = a.Cartesian3.multiplyByScalar(o, l, fe);
a.Cartesian3.add(e, u, r);
var c = i - 1e3;
(u = a.Cartesian3.multiplyByScalar(o, c, fe)), a.Cartesian3.add(t, u, s);
}
var we = new a.Cartesian3();
function ve(e, t) {
var n = p.Plane.getPointDistance(Q, e),
r = p.Plane.getPointDistance(Q, t),
s = we;
i.CesiumMath.equalsEpsilon(n, 0, i.CesiumMath.EPSILON2)
? ((s = F(t, e, s)),
a.Cartesian3.multiplyByScalar(s, i.CesiumMath.EPSILON2, s),
a.Cartesian3.add(e, s, e))
: i.CesiumMath.equalsEpsilon(r, 0, i.CesiumMath.EPSILON2) &&
((s = F(e, t, s)),
a.Cartesian3.multiplyByScalar(s, i.CesiumMath.EPSILON2, s),
a.Cartesian3.add(t, s, t));
}
function ye(e, a) {
var t = Math.abs(e.longitude),
n = Math.abs(a.longitude);
if (i.CesiumMath.equalsEpsilon(t, i.CesiumMath.PI, i.CesiumMath.EPSILON11)) {
var r = i.CesiumMath.sign(a.longitude);
return (e.longitude = r * (t - i.CesiumMath.EPSILON11)), 1;
}
if (i.CesiumMath.equalsEpsilon(n, i.CesiumMath.PI, i.CesiumMath.EPSILON11)) {
var s = i.CesiumMath.sign(e.longitude);
return (a.longitude = s * (n - i.CesiumMath.EPSILON11)), 2;
}
return 0;
}
var Me = new a.Cartographic(),
Te = new a.Cartographic(),
Ee = new a.Cartesian3(),
_e = new a.Cartesian3(),
Oe = new a.Cartesian3(),
be = new a.Cartesian3(),
Pe = new a.Cartesian3(),
Ae = new a.Cartesian3(),
ke = [Me, Te],
Le = new a.Rectangle(),
Se = new a.Cartesian3(),
xe = new a.Cartesian3(),
Ie = new a.Cartesian3(),
Ne = new a.Cartesian3(),
Re = new a.Cartesian3(),
De = new a.Cartesian3(),
ze = new a.Cartesian3(),
He = new a.Cartesian3(),
Be = new a.Cartesian3(),
je = new a.Cartesian3(),
Ge = new a.Cartesian3(),
Ve = new a.Cartesian3(),
Ye = new a.Cartesian3(),
Fe = new a.Cartesian3(),
qe = new u.EncodedCartesian3(),
Xe = new u.EncodedCartesian3(),
We = new a.Cartesian3(),
Ue = new a.Cartesian3(),
Ze = new a.Cartesian3(),
Je = [new e.BoundingSphere(), new e.BoundingSphere()],
Qe = [
0, 2, 1, 0, 3, 2, 0, 7, 3, 0, 4, 7, 0, 5, 4, 0, 1, 5, 5, 7, 4, 5, 6, 7, 5, 2, 6, 5, 1, 2, 3,
6, 2, 3, 7, 6,
],
Ke = Qe.length;
function $e(e) {
return new c.GeometryAttribute({
componentDatatype: i.ComponentDatatype.FLOAT,
componentsPerAttribute: 4,
normalize: !1,
values: e,
});
}
return (
(x._projectNormal = he),
function (e, a) {
return b.initialize().then(function () {
return n.defined(a) && (e = x.unpack(e, a)), x.createGeometry(e);
});
}
);
});