192 lines
7.8 KiB
JavaScript
192 lines
7.8 KiB
JavaScript
(function () {
|
|
"use strict";
|
|
function n(t) {
|
|
this.length = t.length,
|
|
this.topRadius = t.topRadius,
|
|
this.bottomRadius = t.bottomRadius,
|
|
this.slices = t.slices ? t.slices : 64,
|
|
this.zReverse = t.zReverse
|
|
}
|
|
Object.defineProperty(Cesium, "__esModule", {
|
|
value: !0
|
|
}),
|
|
Cesium.CylinderGeometry = void 0;
|
|
var s = new Cesium.Cartesian2,
|
|
u = new Cesium.Cartesian3,
|
|
l = new Cesium.Ray;
|
|
n._createGeometry = function (t) {
|
|
var e = t.length,
|
|
i = t.topRadius,
|
|
n = t.bottomRadius,
|
|
r = t.slices,
|
|
a = 2 * Math.PI / (r - 1),
|
|
u = t.zReverse, l = [], h = [], d = [], m = [], f = [n, i], p = [0, u ? -e : e], c = 0, _ = Math.atan2(n - i, e), g = s;
|
|
g.z = Math.sin(_);
|
|
for (var v = Math.cos(_), y = 0; y < p.length; y++) {
|
|
m[y] = [];
|
|
for (var C = f[y], w = 0; w < r; w++) {
|
|
m[y].push(c++);
|
|
var x = a * w,
|
|
A = C * Math.cos(x),
|
|
b = C * Math.sin(x);
|
|
l.push(A, b, p[y]),
|
|
A = v * Math.cos(x),
|
|
b = v * Math.sin(x),
|
|
h.push(A, b, g.z),
|
|
d.push(y / (p.length - 1), 0)
|
|
}
|
|
}
|
|
for (var M = [], y = 1; y < p.length; y++)
|
|
for (var w = 1; w < r; w++) {
|
|
var P = m[y - 1][w - 1], S = m[y][w - 1],
|
|
F = m[y][w], E = m[y - 1][w]; M.push(F),
|
|
M.push(E), M.push(P), M.push(F), M.push(P),
|
|
M.push(S), w == m[y].length - 1 && (P = m[y - 1][w],
|
|
S = m[y][w], F = m[y][0], E = m[y - 1][0], M.push(F),
|
|
M.push(E), M.push(P), M.push(F), M.push(P), M.push(S))
|
|
}
|
|
M = new Int16Array(M), l = new Float32Array(l),
|
|
h = new Float32Array(h), d = new Float32Array(d);
|
|
var T = {
|
|
position: new Cesium.GeometryAttribute({
|
|
componentDatatype: Cesium.ComponentDatatype.DOUBLE,
|
|
componentsPerAttribute: 3,
|
|
values: l
|
|
}),
|
|
normal: new Cesium.GeometryAttribute({
|
|
componentDatatype: Cesium.ComponentDatatype.FLOAT,
|
|
componentsPerAttribute: 3,
|
|
values: h
|
|
}),
|
|
st: new Cesium.GeometryAttribute({
|
|
componentDatatype: Cesium.ComponentDatatype.FLOAT,
|
|
componentsPerAttribute: 2, values: d
|
|
})
|
|
},
|
|
R = Cesium.BoundingSphere.fromVertices(l),
|
|
G = new Cesium.Geometry({
|
|
attributes: T, indices: M,
|
|
primitiveType: Cesium.PrimitiveType.TRIANGLES,
|
|
boundingSphere: R
|
|
});
|
|
return l = [], M = [], d = [], G
|
|
},
|
|
n.createGeometry = function (t, e) {
|
|
if (!e)
|
|
return n._createGeometry(t);
|
|
Cesium.Matrix4.multiplyByPoint(e, Cesium.Cartesian3.ZERO, u), u.clone(l.origin);
|
|
var i = t.length,
|
|
r = t.topRadius,
|
|
s = (t.bottomRadius, t.slices),
|
|
h = 2 * Math.PI / (s - 1),
|
|
d = t.zReverse,
|
|
m = [],
|
|
f = [],
|
|
p = [],
|
|
c = [],
|
|
_ = [0, d ? -i : i],
|
|
g = 0,
|
|
g = 0;
|
|
m.push(0, 0, 0), f.push(1, 1), g++;
|
|
for (var v = new Cesium.Cartesian3, y = r / 15, C = 0; C < 16; C++) {
|
|
for (var w = y * C, x = [], A = 0; A < s; A++) {
|
|
var b = h * A,
|
|
M = w * Math.cos(b),
|
|
P = w * Math.sin(b);
|
|
v.x = M,
|
|
v.y = P, v.z = _[1];
|
|
var S = (0, Cesium.extend2Earth)(v, e, l); S ? (x.push(g), m.push(M, P, _[1]), f.push(C / 15, 1), g++) : (S = u, x.push(-1))
|
|
} c.push(x)
|
|
}
|
|
for (var F, E, T = [0, c.length - 1], R = 0; R < T.length; R++)
|
|
for (var C = T[R], A = 1; A < c[C].length; A++)F = c[C][A - 1], E = c[C][A], F >= 0 && E >= 0 && p.push(0, F, E);
|
|
m = new Float32Array(m), p = new Int32Array(p), f = new Float32Array(f);
|
|
var G = {
|
|
position: new Cesium.GeometryAttribute({
|
|
componentDatatype: Cesium.ComponentDatatype.DOUBLE,
|
|
componentsPerAttribute: 3,
|
|
values: m
|
|
}),
|
|
st: new Cesium.GeometryAttribute({
|
|
componentDatatype: Cesium.ComponentDatatype.FLOAT,
|
|
componentsPerAttribute: 2,
|
|
values: f
|
|
})
|
|
},
|
|
V = Cesium.BoundingSphere.fromVertices(m),
|
|
D = new Cesium.Geometry({
|
|
attributes: G,
|
|
indices: p,
|
|
primitiveType: Cesium.PrimitiveType.TRIANGLES, boundingSphere: V
|
|
});
|
|
return (0, Cesium.computeVertexNormals)(D), m = [], p = [], D
|
|
},
|
|
n.createOutlineGeometry = function (t) {
|
|
var e = t.length,
|
|
i = t.topRadius,
|
|
n = t.bottomRadius,
|
|
r = t.slices,
|
|
a = 2 * Math.PI / (r - 1),
|
|
u = t.zReverse, l = [],
|
|
h = [], d = [], m = [], f = [n, i], p = [0, u ? -e : e],
|
|
c = 0, _ = Math.atan2(n - i, e), g = s; g.z = Math.sin(_);
|
|
for (var v = Math.cos(_), y = 0; y < p.length; y++) {
|
|
m[y] = [];
|
|
for (var C = f[y], w = 0; w < r; w++) {
|
|
m[y].push(c++);
|
|
var x = a * w,
|
|
A = C * Math.cos(x),
|
|
b = C * Math.sin(x);
|
|
l.push(A, b, p[y]),
|
|
A = v * Math.cos(x),
|
|
b = v * Math.sin(x),
|
|
h.push(A, b, g.z),
|
|
d.push(y / (p.length - 1), 0)
|
|
}
|
|
}
|
|
for (var M = [], y = 1; y < p.length; y++)
|
|
for (var w = 1; w < r; w += 1) {
|
|
var P = m[y - 1][w - 1],
|
|
S = m[y][w - 1]; m[y][w],
|
|
m[y - 1][w];
|
|
w % 8 == 1 && M.push(P, S)
|
|
}
|
|
M = new Int16Array(M), l = new Float32Array(l),
|
|
h = new Float32Array(h), d = new Float32Array(d);
|
|
var F = {
|
|
position: new Cesium.GeometryAttribute({
|
|
componentDatatype: Cesium.ComponentDatatype.DOUBLE,
|
|
componentsPerAttribute: 3,
|
|
values: l
|
|
}),
|
|
normal: new Cesium.GeometryAttribute({
|
|
componentDatatype: Cesium.ComponentDatatype.FLOAT,
|
|
componentsPerAttribute: 3,
|
|
values: h
|
|
}),
|
|
st: new Cesium.GeometryAttribute({
|
|
componentDatatype: Cesium.ComponentDatatype.FLOAT,
|
|
componentsPerAttribute: 2,
|
|
values: d
|
|
})
|
|
},
|
|
E = Cesium.BoundingSphere.fromVertices(l),
|
|
T = new Cesium.Geometry({
|
|
attributes: F,
|
|
indices: M,
|
|
primitiveType: Cesium.PrimitiveType.LINES,
|
|
boundingSphere: E
|
|
});
|
|
return l = [], M = [], d = [], T
|
|
},
|
|
n.fromAngleAndLength = function (t, e, i) {
|
|
return t = Cesium.Math.toRadians(t),
|
|
new n({
|
|
topRadius: Math.tan(t) * e / 2,
|
|
bottomRadius: 0,
|
|
length: e,
|
|
zReverse: i
|
|
})
|
|
},
|
|
Cesium.CylinderGeometry = n
|
|
})() |