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.

331 lines
10 KiB

define([
'exports',
'./Matrix2-f2da41d4',
'./RuntimeError-ffe03243',
'./when-229515d6',
'./ComponentDatatype-17b06483',
], function (t, i, e, a, n) {
'use strict';
function s(t, i, e) {
if (0 === t) return i * e;
var a = t * t,
n = a * a,
s = n * a,
h = s * a,
u = h * a,
r = u * a,
o = e;
return (
i *
((1 -
a / 4 -
(3 * n) / 64 -
(5 * s) / 256 -
(175 * h) / 16384 -
(441 * u) / 65536 -
(4851 * r) / 1048576) *
o -
((3 * a) / 8 +
(3 * n) / 32 +
(45 * s) / 1024 +
(105 * h) / 4096 +
(2205 * u) / 131072 +
(6237 * r) / 524288) *
Math.sin(2 * o) +
((15 * n) / 256 +
(45 * s) / 1024 +
(525 * h) / 16384 +
(1575 * u) / 65536 +
(155925 * r) / 8388608) *
Math.sin(4 * o) -
((35 * s) / 3072 + (175 * h) / 12288 + (3675 * u) / 262144 + (13475 * r) / 1048576) *
Math.sin(6 * o) +
((315 * h) / 131072 + (2205 * u) / 524288 + (43659 * r) / 8388608) * Math.sin(8 * o) -
((693 * u) / 1310720 + (6237 * r) / 5242880) * Math.sin(10 * o) +
((1001 * r) / 8388608) * Math.sin(12 * o))
);
}
function h(t, i) {
if (0 === t) return Math.log(Math.tan(0.5 * (n.CesiumMath.PI_OVER_TWO + i)));
var e = t * Math.sin(i);
return (
Math.log(Math.tan(0.5 * (n.CesiumMath.PI_OVER_TWO + i))) -
(t / 2) * Math.log((1 + e) / (1 - e))
);
}
var u = new i.Cartesian3(),
r = new i.Cartesian3();
function o(t, e, a, o) {
i.Cartesian3.normalize(o.cartographicToCartesian(e, r), u),
i.Cartesian3.normalize(o.cartographicToCartesian(a, r), r);
var l = o.maximumRadius,
d = o.minimumRadius,
M = l * l,
c = d * d;
(t._ellipticitySquared = (M - c) / M),
(t._ellipticity = Math.sqrt(t._ellipticitySquared)),
(t._start = i.Cartographic.clone(e, t._start)),
(t._start.height = 0),
(t._end = i.Cartographic.clone(a, t._end)),
(t._end.height = 0),
(t._heading = (function (t, i, e, a, s) {
var u = h(t._ellipticity, e),
r = h(t._ellipticity, s);
return Math.atan2(n.CesiumMath.negativePiToPi(a - i), r - u);
})(t, e.longitude, e.latitude, a.longitude, a.latitude)),
(t._distance = (function (t, i, e, a, h, u, r) {
var o = t._heading,
l = u - a,
d = 0;
if (
n.CesiumMath.equalsEpsilon(Math.abs(o), n.CesiumMath.PI_OVER_TWO, n.CesiumMath.EPSILON8)
)
if (i === e) d = i * Math.cos(h) * n.CesiumMath.negativePiToPi(l);
else {
var M = Math.sin(h);
d =
(i * Math.cos(h) * n.CesiumMath.negativePiToPi(l)) /
Math.sqrt(1 - t._ellipticitySquared * M * M);
}
else {
var c = s(t._ellipticity, i, h);
d = (s(t._ellipticity, i, r) - c) / Math.cos(o);
}
return Math.abs(d);
})(t, o.maximumRadius, o.minimumRadius, e.longitude, e.latitude, a.longitude, a.latitude));
}
function l(t, e, u, r, o, l) {
if (0 === u) return i.Cartographic.clone(t, l);
var d,
M,
c,
m = o * o;
if (Math.abs(n.CesiumMath.PI_OVER_TWO - Math.abs(e)) > n.CesiumMath.EPSILON8) {
M = (function (t, i, e) {
var a = t / e;
if (0 === i) return a;
var n = a * a,
s = n * a,
h = s * a,
u = i * i,
r = u * u,
o = r * u,
l = o * u,
d = l * u,
M = d * u,
c = Math.sin(2 * a),
m = Math.cos(2 * a),
g = Math.sin(4 * a),
_ = Math.cos(4 * a),
p = Math.sin(6 * a),
f = Math.cos(6 * a),
C = Math.sin(8 * a),
P = Math.cos(8 * a),
v = Math.sin(10 * a);
return (
a +
(a * u) / 4 +
(7 * a * r) / 64 +
(15 * a * o) / 256 +
(579 * a * l) / 16384 +
(1515 * a * d) / 65536 +
(16837 * a * M) / 1048576 +
((3 * a * r) / 16 +
(45 * a * o) / 256 -
(a * (32 * n - 561) * l) / 4096 -
(a * (232 * n - 1677) * d) / 16384 +
(a * (399985 - 90560 * n + 512 * h) * M) / 5242880) *
m +
((21 * a * o) / 256 +
(483 * a * l) / 4096 -
(a * (224 * n - 1969) * d) / 16384 -
(a * (33152 * n - 112599) * M) / 1048576) *
_ +
((151 * a * l) / 4096 +
(4681 * a * d) / 65536 +
(1479 * a * M) / 16384 -
(453 * s * M) / 32768) *
f +
((1097 * a * d) / 65536 + (42783 * a * M) / 1048576) * P +
((8011 * a * M) / 1048576) * Math.cos(10 * a) +
((3 * u) / 8 +
(3 * r) / 16 +
(213 * o) / 2048 -
(3 * n * o) / 64 +
(255 * l) / 4096 -
(33 * n * l) / 512 +
(20861 * d) / 524288 -
(33 * n * d) / 512 +
(h * d) / 1024 +
(28273 * M) / 1048576 -
(471 * n * M) / 8192 +
(9 * h * M) / 4096) *
c +
((21 * r) / 256 +
(21 * o) / 256 +
(533 * l) / 8192 -
(21 * n * l) / 512 +
(197 * d) / 4096 -
(315 * n * d) / 4096 +
(584039 * M) / 16777216 -
(12517 * n * M) / 131072 +
(7 * h * M) / 2048) *
g +
((151 * o) / 6144 +
(151 * l) / 4096 +
(5019 * d) / 131072 -
(453 * n * d) / 16384 +
(26965 * M) / 786432 -
(8607 * n * M) / 131072) *
p +
((1097 * l) / 131072 +
(1097 * d) / 65536 +
(225797 * M) / 10485760 -
(1097 * n * M) / 65536) *
C +
((8011 * d) / 2621440 + (8011 * M) / 1048576) * v +
((293393 * M) / 251658240) * Math.sin(12 * a)
);
})(s(o, r, t.latitude) + u * Math.cos(e), o, r);
var g = h(o, t.latitude),
_ = h(o, M);
(c = Math.tan(e) * (_ - g)), (d = n.CesiumMath.negativePiToPi(t.longitude + c));
} else {
var p;
if (((M = t.latitude), 0 === o)) p = r * Math.cos(t.latitude);
else {
var f = Math.sin(t.latitude);
p = (r * Math.cos(t.latitude)) / Math.sqrt(1 - m * f * f);
}
(c = u / p),
(d =
e > 0
? n.CesiumMath.negativePiToPi(t.longitude + c)
: n.CesiumMath.negativePiToPi(t.longitude - c));
}
return a.defined(l)
? ((l.longitude = d), (l.latitude = M), (l.height = 0), l)
: new i.Cartographic(d, M, 0);
}
function d(t, e, n) {
var s = a.defaultValue(n, i.Ellipsoid.WGS84);
(this._ellipsoid = s),
(this._start = new i.Cartographic()),
(this._end = new i.Cartographic()),
(this._heading = void 0),
(this._distance = void 0),
(this._ellipticity = void 0),
(this._ellipticitySquared = void 0),
a.defined(t) && a.defined(e) && o(this, t, e, s);
}
Object.defineProperties(d.prototype, {
ellipsoid: {
get: function () {
return this._ellipsoid;
},
},
surfaceDistance: {
get: function () {
return this._distance;
},
},
start: {
get: function () {
return this._start;
},
},
end: {
get: function () {
return this._end;
},
},
heading: {
get: function () {
return this._heading;
},
},
}),
(d.fromStartHeadingDistance = function (t, e, s, h, u) {
var r = a.defaultValue(h, i.Ellipsoid.WGS84),
o = r.maximumRadius,
M = r.minimumRadius,
c = o * o,
m = M * M,
g = Math.sqrt((c - m) / c),
_ = l(t, (e = n.CesiumMath.negativePiToPi(e)), s, r.maximumRadius, g);
return !a.defined(u) || (a.defined(h) && !h.equals(u.ellipsoid))
? new d(t, _, r)
: (u.setEndPoints(t, _), u);
}),
(d.prototype.setEndPoints = function (t, i) {
o(this, t, i, this._ellipsoid);
}),
(d.prototype.interpolateUsingFraction = function (t, i) {
return this.interpolateUsingSurfaceDistance(t * this._distance, i);
}),
(d.prototype.interpolateUsingSurfaceDistance = function (t, i) {
return l(this._start, this._heading, t, this._ellipsoid.maximumRadius, this._ellipticity, i);
}),
(d.prototype.findIntersectionWithLongitude = function (t, e) {
var s = this._ellipticity,
h = this._heading,
u = Math.abs(h),
r = this._start;
if (
((t = n.CesiumMath.negativePiToPi(t)),
n.CesiumMath.equalsEpsilon(Math.abs(t), Math.PI, n.CesiumMath.EPSILON14) &&
(t = n.CesiumMath.sign(r.longitude) * Math.PI),
a.defined(e) || (e = new i.Cartographic()),
Math.abs(n.CesiumMath.PI_OVER_TWO - u) <= n.CesiumMath.EPSILON8)
)
return (e.longitude = t), (e.latitude = r.latitude), (e.height = 0), e;
if (
n.CesiumMath.equalsEpsilon(
Math.abs(n.CesiumMath.PI_OVER_TWO - u),
n.CesiumMath.PI_OVER_TWO,
n.CesiumMath.EPSILON8
)
) {
if (n.CesiumMath.equalsEpsilon(t, r.longitude, n.CesiumMath.EPSILON12)) return;
return (
(e.longitude = t),
(e.latitude = n.CesiumMath.PI_OVER_TWO * n.CesiumMath.sign(n.CesiumMath.PI_OVER_TWO - h)),
(e.height = 0),
e
);
}
var o,
l = r.latitude,
d = s * Math.sin(l),
M =
Math.tan(0.5 * (n.CesiumMath.PI_OVER_TWO + l)) *
Math.exp((t - r.longitude) / Math.tan(h)),
c = (1 + d) / (1 - d),
m = r.latitude;
do {
o = m;
var g = s * Math.sin(o),
_ = (1 + g) / (1 - g);
m = 2 * Math.atan(M * Math.pow(_ / c, s / 2)) - n.CesiumMath.PI_OVER_TWO;
} while (!n.CesiumMath.equalsEpsilon(m, o, n.CesiumMath.EPSILON12));
return (e.longitude = t), (e.latitude = m), (e.height = 0), e;
}),
(d.prototype.findIntersectionWithLatitude = function (t, e) {
var s = this._ellipticity,
u = this._heading,
r = this._start;
if (
!n.CesiumMath.equalsEpsilon(Math.abs(u), n.CesiumMath.PI_OVER_TWO, n.CesiumMath.EPSILON8)
) {
var o = h(s, r.latitude),
l = h(s, t),
d = Math.tan(u) * (l - o),
M = n.CesiumMath.negativePiToPi(r.longitude + d);
return a.defined(e)
? ((e.longitude = M), (e.latitude = t), (e.height = 0), e)
: new i.Cartographic(M, t, 0);
}
}),
(t.EllipsoidRhumbLine = d);
});