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.

130 lines
4.0 KiB

9 months ago
define([
'exports',
'./AxisAlignedBoundingBox-1feb0c48',
'./Matrix2-f2da41d4',
'./RuntimeError-ffe03243',
'./when-229515d6',
'./IntersectionTests-1b8a3cb9',
'./Plane-0421a8be',
'./Transforms-7cd3197b',
], function (e, t, n, i, r, a, o, s) {
'use strict';
var l = new n.Cartesian4();
function d(e, t) {
e = (t = r.defaultValue(t, n.Ellipsoid.WGS84)).scaleToGeodeticSurface(e);
var i = s.Transforms.eastNorthUpToFixedFrame(e, t);
(this._ellipsoid = t),
(this._origin = e),
(this._xAxis = n.Cartesian3.fromCartesian4(n.Matrix4.getColumn(i, 0, l))),
(this._yAxis = n.Cartesian3.fromCartesian4(n.Matrix4.getColumn(i, 1, l)));
var a = n.Cartesian3.fromCartesian4(n.Matrix4.getColumn(i, 2, l));
this._plane = o.Plane.fromPointNormal(e, a);
}
Object.defineProperties(d.prototype, {
ellipsoid: {
get: function () {
return this._ellipsoid;
},
},
origin: {
get: function () {
return this._origin;
},
},
plane: {
get: function () {
return this._plane;
},
},
xAxis: {
get: function () {
return this._xAxis;
},
},
yAxis: {
get: function () {
return this._yAxis;
},
},
zAxis: {
get: function () {
return this._plane.normal;
},
},
});
var c = new t.AxisAlignedBoundingBox();
d.fromPoints = function (e, n) {
return new d(t.AxisAlignedBoundingBox.fromPoints(e, c).center, n);
};
var f = new a.Ray(),
p = new n.Cartesian3();
(d.prototype.projectPointOntoPlane = function (e, t) {
var i = f;
(i.origin = e), n.Cartesian3.normalize(e, i.direction);
var o = a.IntersectionTests.rayPlane(i, this._plane, p);
if (
(r.defined(o) ||
(n.Cartesian3.negate(i.direction, i.direction),
(o = a.IntersectionTests.rayPlane(i, this._plane, p))),
r.defined(o))
) {
var s = n.Cartesian3.subtract(o, this._origin, o),
l = n.Cartesian3.dot(this._xAxis, s),
d = n.Cartesian3.dot(this._yAxis, s);
return r.defined(t) ? ((t.x = l), (t.y = d), t) : new n.Cartesian2(l, d);
}
}),
(d.prototype.projectPointsOntoPlane = function (e, t) {
r.defined(t) || (t = []);
for (var n = 0, i = e.length, a = 0; a < i; a++) {
var o = this.projectPointOntoPlane(e[a], t[n]);
r.defined(o) && ((t[n] = o), n++);
}
return (t.length = n), t;
}),
(d.prototype.projectPointToNearestOnPlane = function (e, t) {
r.defined(t) || (t = new n.Cartesian2());
var i = f;
(i.origin = e), n.Cartesian3.clone(this._plane.normal, i.direction);
var o = a.IntersectionTests.rayPlane(i, this._plane, p);
r.defined(o) ||
(n.Cartesian3.negate(i.direction, i.direction),
(o = a.IntersectionTests.rayPlane(i, this._plane, p)));
var s = n.Cartesian3.subtract(o, this._origin, o),
l = n.Cartesian3.dot(this._xAxis, s),
d = n.Cartesian3.dot(this._yAxis, s);
return (t.x = l), (t.y = d), t;
}),
(d.prototype.projectPointsToNearestOnPlane = function (e, t) {
r.defined(t) || (t = []);
var n = e.length;
t.length = n;
for (var i = 0; i < n; i++) t[i] = this.projectPointToNearestOnPlane(e[i], t[i]);
return t;
});
var u = new n.Cartesian3();
(d.prototype.projectPointOntoEllipsoid = function (e, t) {
r.defined(t) || (t = new n.Cartesian3());
var i = this._ellipsoid,
a = this._origin,
o = this._xAxis,
s = this._yAxis,
l = u;
return (
n.Cartesian3.multiplyByScalar(o, e.x, l),
(t = n.Cartesian3.add(a, l, t)),
n.Cartesian3.multiplyByScalar(s, e.y, l),
n.Cartesian3.add(t, l, t),
i.scaleToGeocentricSurface(t, t),
t
);
}),
(d.prototype.projectPointsOntoEllipsoid = function (e, t) {
var n = e.length;
r.defined(t) ? (t.length = n) : (t = new Array(n));
for (var i = 0; i < n; ++i) t[i] = this.projectPointOntoEllipsoid(e[i], t[i]);
return t;
}),
(e.EllipsoidTangentPlane = d);
});