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.
953 lines
29 KiB
953 lines
29 KiB
9 months ago
|
define([
|
||
|
'exports',
|
||
|
'./Transforms-7cd3197b',
|
||
|
'./Matrix2-f2da41d4',
|
||
|
'./RuntimeError-ffe03243',
|
||
|
'./ComponentDatatype-17b06483',
|
||
|
'./when-229515d6',
|
||
|
'./GeometryAttribute-80036e07',
|
||
|
'./GeometryAttributes-b253752a',
|
||
|
'./Plane-0421a8be',
|
||
|
'./VertexFormat-565d6a6c',
|
||
|
], function (t, e, a, i, r, n, o, s, f, u) {
|
||
|
'use strict';
|
||
|
function l(t) {
|
||
|
this.planes = n.defaultValue(t, []);
|
||
|
}
|
||
|
var h = [new a.Cartesian3(), new a.Cartesian3(), new a.Cartesian3()];
|
||
|
a.Cartesian3.clone(a.Cartesian3.UNIT_X, h[0]),
|
||
|
a.Cartesian3.clone(a.Cartesian3.UNIT_Y, h[1]),
|
||
|
a.Cartesian3.clone(a.Cartesian3.UNIT_Z, h[2]);
|
||
|
var p = new a.Cartesian3(),
|
||
|
d = new a.Cartesian3(),
|
||
|
c = new f.Plane(new a.Cartesian3(1, 0, 0), 0);
|
||
|
function m(t) {
|
||
|
(t = n.defaultValue(t, n.defaultValue.EMPTY_OBJECT)),
|
||
|
(this.left = t.left),
|
||
|
(this._left = void 0),
|
||
|
(this.right = t.right),
|
||
|
(this._right = void 0),
|
||
|
(this.top = t.top),
|
||
|
(this._top = void 0),
|
||
|
(this.bottom = t.bottom),
|
||
|
(this._bottom = void 0),
|
||
|
(this.near = n.defaultValue(t.near, 1)),
|
||
|
(this._near = this.near),
|
||
|
(this.far = n.defaultValue(t.far, 5e8)),
|
||
|
(this._far = this.far),
|
||
|
(this._cullingVolume = new l()),
|
||
|
(this._orthographicMatrix = new a.Matrix4());
|
||
|
}
|
||
|
function C(t) {
|
||
|
(t.top === t._top &&
|
||
|
t.bottom === t._bottom &&
|
||
|
t.left === t._left &&
|
||
|
t.right === t._right &&
|
||
|
t.near === t._near &&
|
||
|
t.far === t._far) ||
|
||
|
((t._left = t.left),
|
||
|
(t._right = t.right),
|
||
|
(t._top = t.top),
|
||
|
(t._bottom = t.bottom),
|
||
|
(t._near = t.near),
|
||
|
(t._far = t.far),
|
||
|
(t._orthographicMatrix = a.Matrix4.computeOrthographicOffCenter(
|
||
|
t.left,
|
||
|
t.right,
|
||
|
t.bottom,
|
||
|
t.top,
|
||
|
t.near,
|
||
|
t.far,
|
||
|
t._orthographicMatrix
|
||
|
)));
|
||
|
}
|
||
|
(l.fromBoundingSphere = function (t, e) {
|
||
|
n.defined(e) || (e = new l());
|
||
|
var i = h.length,
|
||
|
r = e.planes;
|
||
|
r.length = 2 * i;
|
||
|
for (var o = t.center, s = t.radius, f = 0, u = 0; u < i; ++u) {
|
||
|
var c = h[u],
|
||
|
m = r[f],
|
||
|
C = r[f + 1];
|
||
|
n.defined(m) || (m = r[f] = new a.Cartesian4()),
|
||
|
n.defined(C) || (C = r[f + 1] = new a.Cartesian4()),
|
||
|
a.Cartesian3.multiplyByScalar(c, -s, p),
|
||
|
a.Cartesian3.add(o, p, p),
|
||
|
(m.x = c.x),
|
||
|
(m.y = c.y),
|
||
|
(m.z = c.z),
|
||
|
(m.w = -a.Cartesian3.dot(c, p)),
|
||
|
a.Cartesian3.multiplyByScalar(c, s, p),
|
||
|
a.Cartesian3.add(o, p, p),
|
||
|
(C.x = -c.x),
|
||
|
(C.y = -c.y),
|
||
|
(C.z = -c.z),
|
||
|
(C.w = -a.Cartesian3.dot(a.Cartesian3.negate(c, d), p)),
|
||
|
(f += 2);
|
||
|
}
|
||
|
return e;
|
||
|
}),
|
||
|
(l.prototype.computeVisibility = function (t) {
|
||
|
for (var a = this.planes, i = !1, r = 0, n = a.length; r < n; ++r) {
|
||
|
var o = t.intersectPlane(f.Plane.fromCartesian4(a[r], c));
|
||
|
if (o === e.Intersect.OUTSIDE) return e.Intersect.OUTSIDE;
|
||
|
o === e.Intersect.INTERSECTING && (i = !0);
|
||
|
}
|
||
|
return i ? e.Intersect.INTERSECTING : e.Intersect.INSIDE;
|
||
|
}),
|
||
|
(l.prototype.computeVisibilityWithPlaneMask = function (t, a) {
|
||
|
if (a === l.MASK_OUTSIDE || a === l.MASK_INSIDE) return a;
|
||
|
for (var i = l.MASK_INSIDE, r = this.planes, n = 0, o = r.length; n < o; ++n) {
|
||
|
var s = n < 31 ? 1 << n : 0;
|
||
|
if (!(n < 31 && 0 == (a & s))) {
|
||
|
var u = t.intersectPlane(f.Plane.fromCartesian4(r[n], c));
|
||
|
if (u === e.Intersect.OUTSIDE) return l.MASK_OUTSIDE;
|
||
|
u === e.Intersect.INTERSECTING && (i |= s);
|
||
|
}
|
||
|
}
|
||
|
return i;
|
||
|
}),
|
||
|
(l.MASK_OUTSIDE = 4294967295),
|
||
|
(l.MASK_INSIDE = 0),
|
||
|
(l.MASK_INDETERMINATE = 2147483647),
|
||
|
Object.defineProperties(m.prototype, {
|
||
|
projectionMatrix: {
|
||
|
get: function () {
|
||
|
return C(this), this._orthographicMatrix;
|
||
|
},
|
||
|
},
|
||
|
});
|
||
|
var _ = new a.Cartesian3(),
|
||
|
y = new a.Cartesian3(),
|
||
|
v = new a.Cartesian3(),
|
||
|
g = new a.Cartesian3();
|
||
|
function w(t) {
|
||
|
(t = n.defaultValue(t, n.defaultValue.EMPTY_OBJECT)),
|
||
|
(this._offCenterFrustum = new m()),
|
||
|
(this.width = t.width),
|
||
|
(this._width = void 0),
|
||
|
(this.aspectRatio = t.aspectRatio),
|
||
|
(this._aspectRatio = void 0),
|
||
|
(this.near = n.defaultValue(t.near, 1)),
|
||
|
(this._near = this.near),
|
||
|
(this.far = n.defaultValue(t.far, 5e8)),
|
||
|
(this._far = this.far);
|
||
|
}
|
||
|
function x(t) {
|
||
|
var e = t._offCenterFrustum;
|
||
|
if (
|
||
|
t.width !== t._width ||
|
||
|
t.aspectRatio !== t._aspectRatio ||
|
||
|
t.near !== t._near ||
|
||
|
t.far !== t._far
|
||
|
) {
|
||
|
(t._aspectRatio = t.aspectRatio), (t._width = t.width), (t._near = t.near), (t._far = t.far);
|
||
|
var a = 1 / t.aspectRatio;
|
||
|
(e.right = 0.5 * t.width),
|
||
|
(e.left = -e.right),
|
||
|
(e.top = a * e.right),
|
||
|
(e.bottom = -e.top),
|
||
|
(e.near = t.near),
|
||
|
(e.far = t.far);
|
||
|
}
|
||
|
}
|
||
|
function M(t) {
|
||
|
(t = n.defaultValue(t, n.defaultValue.EMPTY_OBJECT)),
|
||
|
(this.left = t.left),
|
||
|
(this._left = void 0),
|
||
|
(this.right = t.right),
|
||
|
(this._right = void 0),
|
||
|
(this.top = t.top),
|
||
|
(this._top = void 0),
|
||
|
(this.bottom = t.bottom),
|
||
|
(this._bottom = void 0),
|
||
|
(this.near = n.defaultValue(t.near, 1)),
|
||
|
(this._near = this.near),
|
||
|
(this.far = n.defaultValue(t.far, 5e8)),
|
||
|
(this._far = this.far),
|
||
|
(this._cullingVolume = new l()),
|
||
|
(this._perspectiveMatrix = new a.Matrix4()),
|
||
|
(this._infinitePerspective = new a.Matrix4());
|
||
|
}
|
||
|
function b(t) {
|
||
|
var e = t.top,
|
||
|
i = t.bottom,
|
||
|
r = t.right,
|
||
|
n = t.left,
|
||
|
o = t.near,
|
||
|
s = t.far;
|
||
|
(e === t._top &&
|
||
|
i === t._bottom &&
|
||
|
n === t._left &&
|
||
|
r === t._right &&
|
||
|
o === t._near &&
|
||
|
s === t._far) ||
|
||
|
((t._left = n),
|
||
|
(t._right = r),
|
||
|
(t._top = e),
|
||
|
(t._bottom = i),
|
||
|
(t._near = o),
|
||
|
(t._far = s),
|
||
|
(t._perspectiveMatrix = a.Matrix4.computePerspectiveOffCenter(
|
||
|
n,
|
||
|
r,
|
||
|
i,
|
||
|
e,
|
||
|
o,
|
||
|
s,
|
||
|
t._perspectiveMatrix
|
||
|
)),
|
||
|
(t._infinitePerspective = a.Matrix4.computeInfinitePerspectiveOffCenter(
|
||
|
n,
|
||
|
r,
|
||
|
i,
|
||
|
e,
|
||
|
o,
|
||
|
t._infinitePerspective
|
||
|
)));
|
||
|
}
|
||
|
(m.prototype.computeCullingVolume = function (t, e, i) {
|
||
|
var r = this._cullingVolume.planes,
|
||
|
o = this.top,
|
||
|
s = this.bottom,
|
||
|
f = this.right,
|
||
|
u = this.left,
|
||
|
l = this.near,
|
||
|
h = this.far,
|
||
|
p = a.Cartesian3.cross(e, i, _);
|
||
|
a.Cartesian3.normalize(p, p);
|
||
|
var d = y;
|
||
|
a.Cartesian3.multiplyByScalar(e, l, d), a.Cartesian3.add(t, d, d);
|
||
|
var c = v;
|
||
|
a.Cartesian3.multiplyByScalar(p, u, c), a.Cartesian3.add(d, c, c);
|
||
|
var m = r[0];
|
||
|
return (
|
||
|
n.defined(m) || (m = r[0] = new a.Cartesian4()),
|
||
|
(m.x = p.x),
|
||
|
(m.y = p.y),
|
||
|
(m.z = p.z),
|
||
|
(m.w = -a.Cartesian3.dot(p, c)),
|
||
|
a.Cartesian3.multiplyByScalar(p, f, c),
|
||
|
a.Cartesian3.add(d, c, c),
|
||
|
(m = r[1]),
|
||
|
n.defined(m) || (m = r[1] = new a.Cartesian4()),
|
||
|
(m.x = -p.x),
|
||
|
(m.y = -p.y),
|
||
|
(m.z = -p.z),
|
||
|
(m.w = -a.Cartesian3.dot(a.Cartesian3.negate(p, g), c)),
|
||
|
a.Cartesian3.multiplyByScalar(i, s, c),
|
||
|
a.Cartesian3.add(d, c, c),
|
||
|
(m = r[2]),
|
||
|
n.defined(m) || (m = r[2] = new a.Cartesian4()),
|
||
|
(m.x = i.x),
|
||
|
(m.y = i.y),
|
||
|
(m.z = i.z),
|
||
|
(m.w = -a.Cartesian3.dot(i, c)),
|
||
|
a.Cartesian3.multiplyByScalar(i, o, c),
|
||
|
a.Cartesian3.add(d, c, c),
|
||
|
(m = r[3]),
|
||
|
n.defined(m) || (m = r[3] = new a.Cartesian4()),
|
||
|
(m.x = -i.x),
|
||
|
(m.y = -i.y),
|
||
|
(m.z = -i.z),
|
||
|
(m.w = -a.Cartesian3.dot(a.Cartesian3.negate(i, g), c)),
|
||
|
(m = r[4]),
|
||
|
n.defined(m) || (m = r[4] = new a.Cartesian4()),
|
||
|
(m.x = e.x),
|
||
|
(m.y = e.y),
|
||
|
(m.z = e.z),
|
||
|
(m.w = -a.Cartesian3.dot(e, d)),
|
||
|
a.Cartesian3.multiplyByScalar(e, h, c),
|
||
|
a.Cartesian3.add(t, c, c),
|
||
|
(m = r[5]),
|
||
|
n.defined(m) || (m = r[5] = new a.Cartesian4()),
|
||
|
(m.x = -e.x),
|
||
|
(m.y = -e.y),
|
||
|
(m.z = -e.z),
|
||
|
(m.w = -a.Cartesian3.dot(a.Cartesian3.negate(e, g), c)),
|
||
|
this._cullingVolume
|
||
|
);
|
||
|
}),
|
||
|
(m.prototype.getPixelDimensions = function (t, e, a, i, r) {
|
||
|
C(this);
|
||
|
var n = (i * (this.right - this.left)) / t,
|
||
|
o = (i * (this.top - this.bottom)) / e;
|
||
|
return (r.x = n), (r.y = o), r;
|
||
|
}),
|
||
|
(m.prototype.clone = function (t) {
|
||
|
return (
|
||
|
n.defined(t) || (t = new m()),
|
||
|
(t.left = this.left),
|
||
|
(t.right = this.right),
|
||
|
(t.top = this.top),
|
||
|
(t.bottom = this.bottom),
|
||
|
(t.near = this.near),
|
||
|
(t.far = this.far),
|
||
|
(t._left = void 0),
|
||
|
(t._right = void 0),
|
||
|
(t._top = void 0),
|
||
|
(t._bottom = void 0),
|
||
|
(t._near = void 0),
|
||
|
(t._far = void 0),
|
||
|
t
|
||
|
);
|
||
|
}),
|
||
|
(m.prototype.equals = function (t) {
|
||
|
return (
|
||
|
n.defined(t) &&
|
||
|
t instanceof m &&
|
||
|
this.right === t.right &&
|
||
|
this.left === t.left &&
|
||
|
this.top === t.top &&
|
||
|
this.bottom === t.bottom &&
|
||
|
this.near === t.near &&
|
||
|
this.far === t.far
|
||
|
);
|
||
|
}),
|
||
|
(m.prototype.equalsEpsilon = function (t, e, a) {
|
||
|
return (
|
||
|
t === this ||
|
||
|
(n.defined(t) &&
|
||
|
t instanceof m &&
|
||
|
r.CesiumMath.equalsEpsilon(this.right, t.right, e, a) &&
|
||
|
r.CesiumMath.equalsEpsilon(this.left, t.left, e, a) &&
|
||
|
r.CesiumMath.equalsEpsilon(this.top, t.top, e, a) &&
|
||
|
r.CesiumMath.equalsEpsilon(this.bottom, t.bottom, e, a) &&
|
||
|
r.CesiumMath.equalsEpsilon(this.near, t.near, e, a) &&
|
||
|
r.CesiumMath.equalsEpsilon(this.far, t.far, e, a))
|
||
|
);
|
||
|
}),
|
||
|
(w.packedLength = 4),
|
||
|
(w.pack = function (t, e, a) {
|
||
|
return (
|
||
|
(a = n.defaultValue(a, 0)),
|
||
|
(e[a++] = t.width),
|
||
|
(e[a++] = t.aspectRatio),
|
||
|
(e[a++] = t.near),
|
||
|
(e[a] = t.far),
|
||
|
e
|
||
|
);
|
||
|
}),
|
||
|
(w.unpack = function (t, e, a) {
|
||
|
return (
|
||
|
(e = n.defaultValue(e, 0)),
|
||
|
n.defined(a) || (a = new w()),
|
||
|
(a.width = t[e++]),
|
||
|
(a.aspectRatio = t[e++]),
|
||
|
(a.near = t[e++]),
|
||
|
(a.far = t[e]),
|
||
|
a
|
||
|
);
|
||
|
}),
|
||
|
Object.defineProperties(w.prototype, {
|
||
|
projectionMatrix: {
|
||
|
get: function () {
|
||
|
return x(this), this._offCenterFrustum.projectionMatrix;
|
||
|
},
|
||
|
},
|
||
|
}),
|
||
|
(w.prototype.computeCullingVolume = function (t, e, a) {
|
||
|
return x(this), this._offCenterFrustum.computeCullingVolume(t, e, a);
|
||
|
}),
|
||
|
(w.prototype.getPixelDimensions = function (t, e, a, i, r) {
|
||
|
return x(this), this._offCenterFrustum.getPixelDimensions(t, e, a, i, r);
|
||
|
}),
|
||
|
(w.prototype.clone = function (t) {
|
||
|
return (
|
||
|
n.defined(t) || (t = new w()),
|
||
|
(t.aspectRatio = this.aspectRatio),
|
||
|
(t.width = this.width),
|
||
|
(t.near = this.near),
|
||
|
(t.far = this.far),
|
||
|
(t._aspectRatio = void 0),
|
||
|
(t._width = void 0),
|
||
|
(t._near = void 0),
|
||
|
(t._far = void 0),
|
||
|
this._offCenterFrustum.clone(t._offCenterFrustum),
|
||
|
t
|
||
|
);
|
||
|
}),
|
||
|
(w.prototype.equals = function (t) {
|
||
|
return (
|
||
|
!!(n.defined(t) && t instanceof w) &&
|
||
|
(x(this),
|
||
|
x(t),
|
||
|
this.width === t.width &&
|
||
|
this.aspectRatio === t.aspectRatio &&
|
||
|
this._offCenterFrustum.equals(t._offCenterFrustum))
|
||
|
);
|
||
|
}),
|
||
|
(w.prototype.equalsEpsilon = function (t, e, a) {
|
||
|
return (
|
||
|
!!(n.defined(t) && t instanceof w) &&
|
||
|
(x(this),
|
||
|
x(t),
|
||
|
r.CesiumMath.equalsEpsilon(this.width, t.width, e, a) &&
|
||
|
r.CesiumMath.equalsEpsilon(this.aspectRatio, t.aspectRatio, e, a) &&
|
||
|
this._offCenterFrustum.equalsEpsilon(t._offCenterFrustum, e, a))
|
||
|
);
|
||
|
}),
|
||
|
Object.defineProperties(M.prototype, {
|
||
|
projectionMatrix: {
|
||
|
get: function () {
|
||
|
return b(this), this._perspectiveMatrix;
|
||
|
},
|
||
|
},
|
||
|
infiniteProjectionMatrix: {
|
||
|
get: function () {
|
||
|
return b(this), this._infinitePerspective;
|
||
|
},
|
||
|
},
|
||
|
});
|
||
|
var F = new a.Cartesian3(),
|
||
|
V = new a.Cartesian3(),
|
||
|
E = new a.Cartesian3(),
|
||
|
O = new a.Cartesian3();
|
||
|
function P(t) {
|
||
|
(t = n.defaultValue(t, n.defaultValue.EMPTY_OBJECT)),
|
||
|
(this._offCenterFrustum = new M()),
|
||
|
(this.fov = t.fov),
|
||
|
(this._fov = void 0),
|
||
|
(this._fovy = void 0),
|
||
|
(this._sseDenominator = void 0),
|
||
|
(this.aspectRatio = t.aspectRatio),
|
||
|
(this._aspectRatio = void 0),
|
||
|
(this.near = n.defaultValue(t.near, 1)),
|
||
|
(this._near = this.near),
|
||
|
(this.far = n.defaultValue(t.far, 5e8)),
|
||
|
(this._far = this.far),
|
||
|
(this.xOffset = n.defaultValue(t.xOffset, 0)),
|
||
|
(this._xOffset = this.xOffset),
|
||
|
(this.yOffset = n.defaultValue(t.yOffset, 0)),
|
||
|
(this._yOffset = this.yOffset);
|
||
|
}
|
||
|
function z(t) {
|
||
|
var e = t._offCenterFrustum;
|
||
|
(t.fov === t._fov &&
|
||
|
t.aspectRatio === t._aspectRatio &&
|
||
|
t.near === t._near &&
|
||
|
t.far === t._far &&
|
||
|
t.xOffset === t._xOffset &&
|
||
|
t.yOffset === t._yOffset) ||
|
||
|
((t._aspectRatio = t.aspectRatio),
|
||
|
(t._fov = t.fov),
|
||
|
(t._fovy = t.aspectRatio <= 1 ? t.fov : 2 * Math.atan(Math.tan(0.5 * t.fov) / t.aspectRatio)),
|
||
|
(t._near = t.near),
|
||
|
(t._far = t.far),
|
||
|
(t._sseDenominator = 2 * Math.tan(0.5 * t._fovy)),
|
||
|
(t._xOffset = t.xOffset),
|
||
|
(t._yOffset = t.yOffset),
|
||
|
(e.top = t.near * Math.tan(0.5 * t._fovy)),
|
||
|
(e.bottom = -e.top),
|
||
|
(e.right = t.aspectRatio * e.top),
|
||
|
(e.left = -e.right),
|
||
|
(e.near = t.near),
|
||
|
(e.far = t.far),
|
||
|
(e.right += t.xOffset),
|
||
|
(e.left += t.xOffset),
|
||
|
(e.top += t.yOffset),
|
||
|
(e.bottom += t.yOffset));
|
||
|
}
|
||
|
(M.prototype.computeCullingVolume = function (t, e, i) {
|
||
|
var r = this._cullingVolume.planes,
|
||
|
o = this.top,
|
||
|
s = this.bottom,
|
||
|
f = this.right,
|
||
|
u = this.left,
|
||
|
l = this.near,
|
||
|
h = this.far,
|
||
|
p = a.Cartesian3.cross(e, i, F),
|
||
|
d = V;
|
||
|
a.Cartesian3.multiplyByScalar(e, l, d), a.Cartesian3.add(t, d, d);
|
||
|
var c = E;
|
||
|
a.Cartesian3.multiplyByScalar(e, h, c), a.Cartesian3.add(t, c, c);
|
||
|
var m = O;
|
||
|
a.Cartesian3.multiplyByScalar(p, u, m),
|
||
|
a.Cartesian3.add(d, m, m),
|
||
|
a.Cartesian3.subtract(m, t, m),
|
||
|
a.Cartesian3.normalize(m, m),
|
||
|
a.Cartesian3.cross(m, i, m),
|
||
|
a.Cartesian3.normalize(m, m);
|
||
|
var C = r[0];
|
||
|
return (
|
||
|
n.defined(C) || (C = r[0] = new a.Cartesian4()),
|
||
|
(C.x = m.x),
|
||
|
(C.y = m.y),
|
||
|
(C.z = m.z),
|
||
|
(C.w = -a.Cartesian3.dot(m, t)),
|
||
|
a.Cartesian3.multiplyByScalar(p, f, m),
|
||
|
a.Cartesian3.add(d, m, m),
|
||
|
a.Cartesian3.subtract(m, t, m),
|
||
|
a.Cartesian3.cross(i, m, m),
|
||
|
a.Cartesian3.normalize(m, m),
|
||
|
(C = r[1]),
|
||
|
n.defined(C) || (C = r[1] = new a.Cartesian4()),
|
||
|
(C.x = m.x),
|
||
|
(C.y = m.y),
|
||
|
(C.z = m.z),
|
||
|
(C.w = -a.Cartesian3.dot(m, t)),
|
||
|
a.Cartesian3.multiplyByScalar(i, s, m),
|
||
|
a.Cartesian3.add(d, m, m),
|
||
|
a.Cartesian3.subtract(m, t, m),
|
||
|
a.Cartesian3.cross(p, m, m),
|
||
|
a.Cartesian3.normalize(m, m),
|
||
|
(C = r[2]),
|
||
|
n.defined(C) || (C = r[2] = new a.Cartesian4()),
|
||
|
(C.x = m.x),
|
||
|
(C.y = m.y),
|
||
|
(C.z = m.z),
|
||
|
(C.w = -a.Cartesian3.dot(m, t)),
|
||
|
a.Cartesian3.multiplyByScalar(i, o, m),
|
||
|
a.Cartesian3.add(d, m, m),
|
||
|
a.Cartesian3.subtract(m, t, m),
|
||
|
a.Cartesian3.cross(m, p, m),
|
||
|
a.Cartesian3.normalize(m, m),
|
||
|
(C = r[3]),
|
||
|
n.defined(C) || (C = r[3] = new a.Cartesian4()),
|
||
|
(C.x = m.x),
|
||
|
(C.y = m.y),
|
||
|
(C.z = m.z),
|
||
|
(C.w = -a.Cartesian3.dot(m, t)),
|
||
|
(C = r[4]),
|
||
|
n.defined(C) || (C = r[4] = new a.Cartesian4()),
|
||
|
(C.x = e.x),
|
||
|
(C.y = e.y),
|
||
|
(C.z = e.z),
|
||
|
(C.w = -a.Cartesian3.dot(e, d)),
|
||
|
a.Cartesian3.negate(e, m),
|
||
|
(C = r[5]),
|
||
|
n.defined(C) || (C = r[5] = new a.Cartesian4()),
|
||
|
(C.x = m.x),
|
||
|
(C.y = m.y),
|
||
|
(C.z = m.z),
|
||
|
(C.w = -a.Cartesian3.dot(m, c)),
|
||
|
this._cullingVolume
|
||
|
);
|
||
|
}),
|
||
|
(M.prototype.getPixelDimensions = function (t, e, a, i, r) {
|
||
|
b(this);
|
||
|
var n = 1 / this.near,
|
||
|
o = this.top * n,
|
||
|
s = (2 * i * a * o) / e,
|
||
|
f = (2 * i * a * (o = this.right * n)) / t;
|
||
|
return (r.x = f), (r.y = s), r;
|
||
|
}),
|
||
|
(M.prototype.clone = function (t) {
|
||
|
return (
|
||
|
n.defined(t) || (t = new M()),
|
||
|
(t.right = this.right),
|
||
|
(t.left = this.left),
|
||
|
(t.top = this.top),
|
||
|
(t.bottom = this.bottom),
|
||
|
(t.near = this.near),
|
||
|
(t.far = this.far),
|
||
|
(t._left = void 0),
|
||
|
(t._right = void 0),
|
||
|
(t._top = void 0),
|
||
|
(t._bottom = void 0),
|
||
|
(t._near = void 0),
|
||
|
(t._far = void 0),
|
||
|
t
|
||
|
);
|
||
|
}),
|
||
|
(M.prototype.equals = function (t) {
|
||
|
return (
|
||
|
n.defined(t) &&
|
||
|
t instanceof M &&
|
||
|
this.right === t.right &&
|
||
|
this.left === t.left &&
|
||
|
this.top === t.top &&
|
||
|
this.bottom === t.bottom &&
|
||
|
this.near === t.near &&
|
||
|
this.far === t.far
|
||
|
);
|
||
|
}),
|
||
|
(M.prototype.equalsEpsilon = function (t, e, a) {
|
||
|
return (
|
||
|
t === this ||
|
||
|
(n.defined(t) &&
|
||
|
t instanceof M &&
|
||
|
r.CesiumMath.equalsEpsilon(this.right, t.right, e, a) &&
|
||
|
r.CesiumMath.equalsEpsilon(this.left, t.left, e, a) &&
|
||
|
r.CesiumMath.equalsEpsilon(this.top, t.top, e, a) &&
|
||
|
r.CesiumMath.equalsEpsilon(this.bottom, t.bottom, e, a) &&
|
||
|
r.CesiumMath.equalsEpsilon(this.near, t.near, e, a) &&
|
||
|
r.CesiumMath.equalsEpsilon(this.far, t.far, e, a))
|
||
|
);
|
||
|
}),
|
||
|
(P.packedLength = 6),
|
||
|
(P.pack = function (t, e, a) {
|
||
|
return (
|
||
|
(a = n.defaultValue(a, 0)),
|
||
|
(e[a++] = t.fov),
|
||
|
(e[a++] = t.aspectRatio),
|
||
|
(e[a++] = t.near),
|
||
|
(e[a++] = t.far),
|
||
|
(e[a++] = t.xOffset),
|
||
|
(e[a] = t.yOffset),
|
||
|
e
|
||
|
);
|
||
|
}),
|
||
|
(P.unpack = function (t, e, a) {
|
||
|
return (
|
||
|
(e = n.defaultValue(e, 0)),
|
||
|
n.defined(a) || (a = new P()),
|
||
|
(a.fov = t[e++]),
|
||
|
(a.aspectRatio = t[e++]),
|
||
|
(a.near = t[e++]),
|
||
|
(a.far = t[e++]),
|
||
|
(a.xOffset = t[e++]),
|
||
|
(a.yOffset = t[e]),
|
||
|
a
|
||
|
);
|
||
|
}),
|
||
|
Object.defineProperties(P.prototype, {
|
||
|
projectionMatrix: {
|
||
|
get: function () {
|
||
|
return z(this), this._offCenterFrustum.projectionMatrix;
|
||
|
},
|
||
|
},
|
||
|
infiniteProjectionMatrix: {
|
||
|
get: function () {
|
||
|
return z(this), this._offCenterFrustum.infiniteProjectionMatrix;
|
||
|
},
|
||
|
},
|
||
|
fovy: {
|
||
|
get: function () {
|
||
|
return z(this), this._fovy;
|
||
|
},
|
||
|
},
|
||
|
sseDenominator: {
|
||
|
get: function () {
|
||
|
return z(this), this._sseDenominator;
|
||
|
},
|
||
|
},
|
||
|
}),
|
||
|
(P.prototype.computeCullingVolume = function (t, e, a) {
|
||
|
return z(this), this._offCenterFrustum.computeCullingVolume(t, e, a);
|
||
|
}),
|
||
|
(P.prototype.getPixelDimensions = function (t, e, a, i, r) {
|
||
|
return z(this), this._offCenterFrustum.getPixelDimensions(t, e, a, i, r);
|
||
|
}),
|
||
|
(P.prototype.clone = function (t) {
|
||
|
return (
|
||
|
n.defined(t) || (t = new P()),
|
||
|
(t.aspectRatio = this.aspectRatio),
|
||
|
(t.fov = this.fov),
|
||
|
(t.near = this.near),
|
||
|
(t.far = this.far),
|
||
|
(t._aspectRatio = void 0),
|
||
|
(t._fov = void 0),
|
||
|
(t._near = void 0),
|
||
|
(t._far = void 0),
|
||
|
this._offCenterFrustum.clone(t._offCenterFrustum),
|
||
|
t
|
||
|
);
|
||
|
}),
|
||
|
(P.prototype.equals = function (t) {
|
||
|
return (
|
||
|
!!(n.defined(t) && t instanceof P) &&
|
||
|
(z(this),
|
||
|
z(t),
|
||
|
this.fov === t.fov &&
|
||
|
this.aspectRatio === t.aspectRatio &&
|
||
|
this._offCenterFrustum.equals(t._offCenterFrustum))
|
||
|
);
|
||
|
}),
|
||
|
(P.prototype.equalsEpsilon = function (t, e, a) {
|
||
|
return (
|
||
|
!!(n.defined(t) && t instanceof P) &&
|
||
|
(z(this),
|
||
|
z(t),
|
||
|
r.CesiumMath.equalsEpsilon(this.fov, t.fov, e, a) &&
|
||
|
r.CesiumMath.equalsEpsilon(this.aspectRatio, t.aspectRatio, e, a) &&
|
||
|
this._offCenterFrustum.equalsEpsilon(t._offCenterFrustum, e, a))
|
||
|
);
|
||
|
});
|
||
|
function R(t) {
|
||
|
var i,
|
||
|
r,
|
||
|
o = t.frustum,
|
||
|
s = t.orientation,
|
||
|
f = t.origin,
|
||
|
l = n.defaultValue(t.vertexFormat, u.VertexFormat.DEFAULT),
|
||
|
h = n.defaultValue(t._drawNearPlane, !0);
|
||
|
o instanceof P
|
||
|
? ((i = 0), (r = P.packedLength))
|
||
|
: o instanceof w && ((i = 1), (r = w.packedLength)),
|
||
|
(this._frustumType = i),
|
||
|
(this._frustum = o.clone()),
|
||
|
(this._origin = a.Cartesian3.clone(f)),
|
||
|
(this._orientation = e.Quaternion.clone(s)),
|
||
|
(this._drawNearPlane = h),
|
||
|
(this._vertexFormat = l),
|
||
|
(this._workerName = 'createFrustumGeometry'),
|
||
|
(this.packedLength =
|
||
|
2 +
|
||
|
r +
|
||
|
a.Cartesian3.packedLength +
|
||
|
e.Quaternion.packedLength +
|
||
|
u.VertexFormat.packedLength);
|
||
|
}
|
||
|
R.pack = function (t, i, r) {
|
||
|
r = n.defaultValue(r, 0);
|
||
|
var o = t._frustumType,
|
||
|
s = t._frustum;
|
||
|
return (
|
||
|
(i[r++] = o),
|
||
|
0 === o ? (P.pack(s, i, r), (r += P.packedLength)) : (w.pack(s, i, r), (r += w.packedLength)),
|
||
|
a.Cartesian3.pack(t._origin, i, r),
|
||
|
(r += a.Cartesian3.packedLength),
|
||
|
e.Quaternion.pack(t._orientation, i, r),
|
||
|
(r += e.Quaternion.packedLength),
|
||
|
u.VertexFormat.pack(t._vertexFormat, i, r),
|
||
|
(i[(r += u.VertexFormat.packedLength)] = t._drawNearPlane ? 1 : 0),
|
||
|
i
|
||
|
);
|
||
|
};
|
||
|
var S = new P(),
|
||
|
T = new w(),
|
||
|
k = new e.Quaternion(),
|
||
|
A = new a.Cartesian3(),
|
||
|
D = new u.VertexFormat();
|
||
|
function I(t, e, a, i, r, o, s, f) {
|
||
|
for (var u = (t / 3) * 2, l = 0; l < 4; ++l)
|
||
|
n.defined(e) && ((e[t] = o.x), (e[t + 1] = o.y), (e[t + 2] = o.z)),
|
||
|
n.defined(a) && ((a[t] = s.x), (a[t + 1] = s.y), (a[t + 2] = s.z)),
|
||
|
n.defined(i) && ((i[t] = f.x), (i[t + 1] = f.y), (i[t + 2] = f.z)),
|
||
|
(t += 3);
|
||
|
(r[u] = 0),
|
||
|
(r[u + 1] = 0),
|
||
|
(r[u + 2] = 1),
|
||
|
(r[u + 3] = 0),
|
||
|
(r[u + 4] = 1),
|
||
|
(r[u + 5] = 1),
|
||
|
(r[u + 6] = 0),
|
||
|
(r[u + 7] = 1);
|
||
|
}
|
||
|
R.unpack = function (t, i, r) {
|
||
|
i = n.defaultValue(i, 0);
|
||
|
var o,
|
||
|
s = t[i++];
|
||
|
0 === s
|
||
|
? ((o = P.unpack(t, i, S)), (i += P.packedLength))
|
||
|
: ((o = w.unpack(t, i, T)), (i += w.packedLength));
|
||
|
var f = a.Cartesian3.unpack(t, i, A);
|
||
|
i += a.Cartesian3.packedLength;
|
||
|
var l = e.Quaternion.unpack(t, i, k);
|
||
|
i += e.Quaternion.packedLength;
|
||
|
var h = u.VertexFormat.unpack(t, i, D),
|
||
|
p = 1 === t[(i += u.VertexFormat.packedLength)];
|
||
|
if (!n.defined(r))
|
||
|
return new R({ frustum: o, origin: f, orientation: l, vertexFormat: h, _drawNearPlane: p });
|
||
|
var d = s === r._frustumType ? r._frustum : void 0;
|
||
|
return (
|
||
|
(r._frustum = o.clone(d)),
|
||
|
(r._frustumType = s),
|
||
|
(r._origin = a.Cartesian3.clone(f, r._origin)),
|
||
|
(r._orientation = e.Quaternion.clone(l, r._orientation)),
|
||
|
(r._vertexFormat = u.VertexFormat.clone(h, r._vertexFormat)),
|
||
|
(r._drawNearPlane = p),
|
||
|
r
|
||
|
);
|
||
|
};
|
||
|
var q = new a.Matrix3(),
|
||
|
B = new a.Matrix4(),
|
||
|
L = new a.Matrix4(),
|
||
|
N = new a.Cartesian3(),
|
||
|
G = new a.Cartesian3(),
|
||
|
j = new a.Cartesian3(),
|
||
|
U = new a.Cartesian3(),
|
||
|
Q = new a.Cartesian3(),
|
||
|
K = new a.Cartesian3(),
|
||
|
Y = new Array(3),
|
||
|
J = new Array(4);
|
||
|
(J[0] = new a.Cartesian4(-1, -1, 1, 1)),
|
||
|
(J[1] = new a.Cartesian4(1, -1, 1, 1)),
|
||
|
(J[2] = new a.Cartesian4(1, 1, 1, 1)),
|
||
|
(J[3] = new a.Cartesian4(-1, 1, 1, 1));
|
||
|
for (var W = new Array(4), X = 0; X < 4; ++X) W[X] = new a.Cartesian4();
|
||
|
(R._computeNearFarPlanes = function (t, e, i, r, o, s, f, u) {
|
||
|
var l = a.Matrix3.fromQuaternion(e, q),
|
||
|
h = n.defaultValue(s, N),
|
||
|
p = n.defaultValue(f, G),
|
||
|
d = n.defaultValue(u, j);
|
||
|
(h = a.Matrix3.getColumn(l, 0, h)),
|
||
|
(p = a.Matrix3.getColumn(l, 1, p)),
|
||
|
(d = a.Matrix3.getColumn(l, 2, d)),
|
||
|
a.Cartesian3.normalize(h, h),
|
||
|
a.Cartesian3.normalize(p, p),
|
||
|
a.Cartesian3.normalize(d, d),
|
||
|
a.Cartesian3.negate(h, h);
|
||
|
var c,
|
||
|
m,
|
||
|
C = a.Matrix4.computeView(t, d, p, h, B);
|
||
|
if (0 === i) {
|
||
|
var _ = r.projectionMatrix,
|
||
|
y = a.Matrix4.multiply(_, C, L);
|
||
|
m = a.Matrix4.inverse(y, L);
|
||
|
} else c = a.Matrix4.inverseTransformation(C, L);
|
||
|
n.defined(m)
|
||
|
? ((Y[0] = r.near), (Y[1] = r.far))
|
||
|
: ((Y[0] = 0), (Y[1] = r.near), (Y[2] = r.far));
|
||
|
for (var v = 0; v < 2; ++v)
|
||
|
for (var g = 0; g < 4; ++g) {
|
||
|
var w = a.Cartesian4.clone(J[g], W[g]);
|
||
|
if (n.defined(m)) {
|
||
|
var x = 1 / (w = a.Matrix4.multiplyByVector(m, w, w)).w;
|
||
|
a.Cartesian3.multiplyByScalar(w, x, w),
|
||
|
a.Cartesian3.subtract(w, t, w),
|
||
|
a.Cartesian3.normalize(w, w);
|
||
|
var M = a.Cartesian3.dot(d, w);
|
||
|
a.Cartesian3.multiplyByScalar(w, Y[v] / M, w), a.Cartesian3.add(w, t, w);
|
||
|
} else {
|
||
|
n.defined(r._offCenterFrustum) && (r = r._offCenterFrustum);
|
||
|
var b = Y[v],
|
||
|
F = Y[v + 1];
|
||
|
(w.x = 0.5 * (w.x * (r.right - r.left) + r.left + r.right)),
|
||
|
(w.y = 0.5 * (w.y * (r.top - r.bottom) + r.bottom + r.top)),
|
||
|
(w.z = 0.5 * (w.z * (b - F) - b - F)),
|
||
|
(w.w = 1),
|
||
|
a.Matrix4.multiplyByVector(c, w, w);
|
||
|
}
|
||
|
(o[12 * v + 3 * g] = w.x), (o[12 * v + 3 * g + 1] = w.y), (o[12 * v + 3 * g + 2] = w.z);
|
||
|
}
|
||
|
}),
|
||
|
(R.createGeometry = function (t) {
|
||
|
var i = t._frustumType,
|
||
|
f = t._frustum,
|
||
|
u = t._origin,
|
||
|
l = t._orientation,
|
||
|
h = t._drawNearPlane,
|
||
|
p = t._vertexFormat,
|
||
|
d = h ? 6 : 5,
|
||
|
c = new Float64Array(72);
|
||
|
R._computeNearFarPlanes(u, l, i, f, c);
|
||
|
var m = 24;
|
||
|
(c[m] = c[12]),
|
||
|
(c[m + 1] = c[13]),
|
||
|
(c[m + 2] = c[14]),
|
||
|
(c[m + 3] = c[0]),
|
||
|
(c[m + 4] = c[1]),
|
||
|
(c[m + 5] = c[2]),
|
||
|
(c[m + 6] = c[9]),
|
||
|
(c[m + 7] = c[10]),
|
||
|
(c[m + 8] = c[11]),
|
||
|
(c[m + 9] = c[21]),
|
||
|
(c[m + 10] = c[22]),
|
||
|
(c[m + 11] = c[23]),
|
||
|
(c[(m += 12)] = c[15]),
|
||
|
(c[m + 1] = c[16]),
|
||
|
(c[m + 2] = c[17]),
|
||
|
(c[m + 3] = c[3]),
|
||
|
(c[m + 4] = c[4]),
|
||
|
(c[m + 5] = c[5]),
|
||
|
(c[m + 6] = c[0]),
|
||
|
(c[m + 7] = c[1]),
|
||
|
(c[m + 8] = c[2]),
|
||
|
(c[m + 9] = c[12]),
|
||
|
(c[m + 10] = c[13]),
|
||
|
(c[m + 11] = c[14]),
|
||
|
(c[(m += 12)] = c[3]),
|
||
|
(c[m + 1] = c[4]),
|
||
|
(c[m + 2] = c[5]),
|
||
|
(c[m + 3] = c[15]),
|
||
|
(c[m + 4] = c[16]),
|
||
|
(c[m + 5] = c[17]),
|
||
|
(c[m + 6] = c[18]),
|
||
|
(c[m + 7] = c[19]),
|
||
|
(c[m + 8] = c[20]),
|
||
|
(c[m + 9] = c[6]),
|
||
|
(c[m + 10] = c[7]),
|
||
|
(c[m + 11] = c[8]),
|
||
|
(c[(m += 12)] = c[6]),
|
||
|
(c[m + 1] = c[7]),
|
||
|
(c[m + 2] = c[8]),
|
||
|
(c[m + 3] = c[18]),
|
||
|
(c[m + 4] = c[19]),
|
||
|
(c[m + 5] = c[20]),
|
||
|
(c[m + 6] = c[21]),
|
||
|
(c[m + 7] = c[22]),
|
||
|
(c[m + 8] = c[23]),
|
||
|
(c[m + 9] = c[9]),
|
||
|
(c[m + 10] = c[10]),
|
||
|
(c[m + 11] = c[11]),
|
||
|
h || (c = c.subarray(12));
|
||
|
var C = new s.GeometryAttributes({
|
||
|
position: new o.GeometryAttribute({
|
||
|
componentDatatype: r.ComponentDatatype.DOUBLE,
|
||
|
componentsPerAttribute: 3,
|
||
|
values: c,
|
||
|
}),
|
||
|
});
|
||
|
if (
|
||
|
n.defined(p.normal) ||
|
||
|
n.defined(p.tangent) ||
|
||
|
n.defined(p.bitangent) ||
|
||
|
n.defined(p.st)
|
||
|
) {
|
||
|
var _ = n.defined(p.normal) ? new Float32Array(12 * d) : void 0,
|
||
|
y = n.defined(p.tangent) ? new Float32Array(12 * d) : void 0,
|
||
|
v = n.defined(p.bitangent) ? new Float32Array(12 * d) : void 0,
|
||
|
g = n.defined(p.st) ? new Float32Array(8 * d) : void 0,
|
||
|
w = N,
|
||
|
x = G,
|
||
|
M = j,
|
||
|
b = a.Cartesian3.negate(w, U),
|
||
|
F = a.Cartesian3.negate(x, Q),
|
||
|
V = a.Cartesian3.negate(M, K);
|
||
|
(m = 0),
|
||
|
h && (I(m, _, y, v, g, V, w, x), (m += 12)),
|
||
|
I(m, _, y, v, g, M, b, x),
|
||
|
I((m += 12), _, y, v, g, b, V, x),
|
||
|
I((m += 12), _, y, v, g, F, V, b),
|
||
|
I((m += 12), _, y, v, g, w, M, x),
|
||
|
I((m += 12), _, y, v, g, x, M, b),
|
||
|
n.defined(_) &&
|
||
|
(C.normal = new o.GeometryAttribute({
|
||
|
componentDatatype: r.ComponentDatatype.FLOAT,
|
||
|
componentsPerAttribute: 3,
|
||
|
values: _,
|
||
|
})),
|
||
|
n.defined(y) &&
|
||
|
(C.tangent = new o.GeometryAttribute({
|
||
|
componentDatatype: r.ComponentDatatype.FLOAT,
|
||
|
componentsPerAttribute: 3,
|
||
|
values: y,
|
||
|
})),
|
||
|
n.defined(v) &&
|
||
|
(C.bitangent = new o.GeometryAttribute({
|
||
|
componentDatatype: r.ComponentDatatype.FLOAT,
|
||
|
componentsPerAttribute: 3,
|
||
|
values: v,
|
||
|
})),
|
||
|
n.defined(g) &&
|
||
|
(C.st = new o.GeometryAttribute({
|
||
|
componentDatatype: r.ComponentDatatype.FLOAT,
|
||
|
componentsPerAttribute: 2,
|
||
|
values: g,
|
||
|
}));
|
||
|
}
|
||
|
for (var E = new Uint16Array(6 * d), O = 0; O < d; ++O) {
|
||
|
var P = 6 * O,
|
||
|
z = 4 * O;
|
||
|
(E[P] = z),
|
||
|
(E[P + 1] = z + 1),
|
||
|
(E[P + 2] = z + 2),
|
||
|
(E[P + 3] = z),
|
||
|
(E[P + 4] = z + 2),
|
||
|
(E[P + 5] = z + 3);
|
||
|
}
|
||
|
return new o.Geometry({
|
||
|
attributes: C,
|
||
|
indices: E,
|
||
|
primitiveType: o.PrimitiveType.TRIANGLES,
|
||
|
boundingSphere: e.BoundingSphere.fromVertices(c),
|
||
|
});
|
||
|
}),
|
||
|
(t.FrustumGeometry = R),
|
||
|
(t.OrthographicFrustum = w),
|
||
|
(t.PerspectiveFrustum = P);
|
||
|
});
|