cesium-to-three 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +226 -0
- package/dist/arrow.js +523 -0
- package/dist/arrow.js.map +1 -0
- package/dist/ground.js +34 -0
- package/dist/ground.js.map +1 -0
- package/dist/index.js +34 -0
- package/dist/index.js.map +1 -0
- package/dist/text-primitive-Ci0sbuh1.js +60066 -0
- package/dist/text-primitive-Ci0sbuh1.js.map +1 -0
- package/dist/types/cesium-three-ground.d.ts +2 -0
- package/dist/types/cesium-three-ground.d.ts.map +1 -0
- package/dist/types/lib/arrow/arrow-curves.d.ts +73 -0
- package/dist/types/lib/arrow/arrow-curves.d.ts.map +1 -0
- package/dist/types/lib/arrow/arrow-geometry.d.ts +140 -0
- package/dist/types/lib/arrow/arrow-geometry.d.ts.map +1 -0
- package/dist/types/lib/arrow/arrow-polygon.d.ts +87 -0
- package/dist/types/lib/arrow/arrow-polygon.d.ts.map +1 -0
- package/dist/types/lib/arrow/arrow-types.d.ts +152 -0
- package/dist/types/lib/arrow/arrow-types.d.ts.map +1 -0
- package/dist/types/lib/arrow/index.d.ts +8 -0
- package/dist/types/lib/arrow/index.d.ts.map +1 -0
- package/dist/types/lib/arrow/shapes/assault-direction-arrow.d.ts +20 -0
- package/dist/types/lib/arrow/shapes/assault-direction-arrow.d.ts.map +1 -0
- package/dist/types/lib/arrow/shapes/attack-arrow.d.ts +56 -0
- package/dist/types/lib/arrow/shapes/attack-arrow.d.ts.map +1 -0
- package/dist/types/lib/arrow/shapes/curved-arrow.d.ts +10 -0
- package/dist/types/lib/arrow/shapes/curved-arrow.d.ts.map +1 -0
- package/dist/types/lib/arrow/shapes/fine-arrow.d.ts +23 -0
- package/dist/types/lib/arrow/shapes/fine-arrow.d.ts.map +1 -0
- package/dist/types/lib/arrow/shapes/swallowtail-attack-arrow.d.ts +12 -0
- package/dist/types/lib/arrow/shapes/swallowtail-attack-arrow.d.ts.map +1 -0
- package/dist/types/lib/ground/cesium-ground-adapter.d.ts +9 -0
- package/dist/types/lib/ground/cesium-ground-adapter.d.ts.map +1 -0
- package/dist/types/lib/ground/circle/circle-construct-extruded.d.ts +62 -0
- package/dist/types/lib/ground/circle/circle-construct-extruded.d.ts.map +1 -0
- package/dist/types/lib/ground/circle/circle-extents.d.ts +23 -0
- package/dist/types/lib/ground/circle/circle-extents.d.ts.map +1 -0
- package/dist/types/lib/ground/circle/circle-options.d.ts +59 -0
- package/dist/types/lib/ground/circle/circle-options.d.ts.map +1 -0
- package/dist/types/lib/ground/circle/circle-positions.d.ts +56 -0
- package/dist/types/lib/ground/circle/circle-positions.d.ts.map +1 -0
- package/dist/types/lib/ground/circle/circle-shadow-volume.d.ts +24 -0
- package/dist/types/lib/ground/circle/circle-shadow-volume.d.ts.map +1 -0
- package/dist/types/lib/ground/circle/circle-top-bottom.d.ts +70 -0
- package/dist/types/lib/ground/circle/circle-top-bottom.d.ts.map +1 -0
- package/dist/types/lib/ground/circle/circle-top-indices.d.ts +28 -0
- package/dist/types/lib/ground/circle/circle-top-indices.d.ts.map +1 -0
- package/dist/types/lib/ground/circle/circle-wall-construction.d.ts +75 -0
- package/dist/types/lib/ground/circle/circle-wall-construction.d.ts.map +1 -0
- package/dist/types/lib/ground/classification.d.ts +124 -0
- package/dist/types/lib/ground/classification.d.ts.map +1 -0
- package/dist/types/lib/ground/constants.d.ts +26 -0
- package/dist/types/lib/ground/constants.d.ts.map +1 -0
- package/dist/types/lib/ground/depth.d.ts +63 -0
- package/dist/types/lib/ground/depth.d.ts.map +1 -0
- package/dist/types/lib/ground/geometry.d.ts +12 -0
- package/dist/types/lib/ground/geometry.d.ts.map +1 -0
- package/dist/types/lib/ground/index.d.ts +6 -0
- package/dist/types/lib/ground/index.d.ts.map +1 -0
- package/dist/types/lib/ground/line/line-arrowhead.d.ts +67 -0
- package/dist/types/lib/ground/line/line-arrowhead.d.ts.map +1 -0
- package/dist/types/lib/ground/line/line-densify.d.ts +35 -0
- package/dist/types/lib/ground/line/line-densify.d.ts.map +1 -0
- package/dist/types/lib/ground/line/line-geometry-normals.d.ts +49 -0
- package/dist/types/lib/ground/line/line-geometry-normals.d.ts.map +1 -0
- package/dist/types/lib/ground/line/line-options.d.ts +54 -0
- package/dist/types/lib/ground/line/line-options.d.ts.map +1 -0
- package/dist/types/lib/ground/line/line-preprocess.d.ts +12 -0
- package/dist/types/lib/ground/line/line-preprocess.d.ts.map +1 -0
- package/dist/types/lib/ground/line/line-segment-attributes.d.ts +24 -0
- package/dist/types/lib/ground/line/line-segment-attributes.d.ts.map +1 -0
- package/dist/types/lib/ground/line/line-shadow-volume.d.ts +25 -0
- package/dist/types/lib/ground/line/line-shadow-volume.d.ts.map +1 -0
- package/dist/types/lib/ground/line/line-types.d.ts +74 -0
- package/dist/types/lib/ground/line/line-types.d.ts.map +1 -0
- package/dist/types/lib/ground/materials.d.ts +69 -0
- package/dist/types/lib/ground/materials.d.ts.map +1 -0
- package/dist/types/lib/ground/math/cartographic.d.ts +27 -0
- package/dist/types/lib/ground/math/cartographic.d.ts.map +1 -0
- package/dist/types/lib/ground/math/constants.d.ts +20 -0
- package/dist/types/lib/ground/math/constants.d.ts.map +1 -0
- package/dist/types/lib/ground/math/ellipsoid-geodesic.d.ts +93 -0
- package/dist/types/lib/ground/math/ellipsoid-geodesic.d.ts.map +1 -0
- package/dist/types/lib/ground/math/ellipsoid-rhumb-line.d.ts +45 -0
- package/dist/types/lib/ground/math/ellipsoid-rhumb-line.d.ts.map +1 -0
- package/dist/types/lib/ground/math/ellipsoid.d.ts +94 -0
- package/dist/types/lib/ground/math/ellipsoid.d.ts.map +1 -0
- package/dist/types/lib/ground/math/enu-frame.d.ts +27 -0
- package/dist/types/lib/ground/math/enu-frame.d.ts.map +1 -0
- package/dist/types/lib/ground/math/matrix4-helpers.d.ts +20 -0
- package/dist/types/lib/ground/math/matrix4-helpers.d.ts.map +1 -0
- package/dist/types/lib/ground/math/rte-encoding.d.ts +51 -0
- package/dist/types/lib/ground/math/rte-encoding.d.ts.map +1 -0
- package/dist/types/lib/ground/math/vec3-helpers.d.ts +50 -0
- package/dist/types/lib/ground/math/vec3-helpers.d.ts.map +1 -0
- package/dist/types/lib/ground/math/wgs84-helpers.d.ts +22 -0
- package/dist/types/lib/ground/math/wgs84-helpers.d.ts.map +1 -0
- package/dist/types/lib/ground/polygon/ellipsoid-tangent-plane.d.ts +71 -0
- package/dist/types/lib/ground/polygon/ellipsoid-tangent-plane.d.ts.map +1 -0
- package/dist/types/lib/ground/polygon/polygon-cap-construction.d.ts +59 -0
- package/dist/types/lib/ground/polygon/polygon-cap-construction.d.ts.map +1 -0
- package/dist/types/lib/ground/polygon/polygon-construct-extruded.d.ts +44 -0
- package/dist/types/lib/ground/polygon/polygon-construct-extruded.d.ts.map +1 -0
- package/dist/types/lib/ground/polygon/polygon-extents.d.ts +24 -0
- package/dist/types/lib/ground/polygon/polygon-extents.d.ts.map +1 -0
- package/dist/types/lib/ground/polygon/polygon-helpers.d.ts +76 -0
- package/dist/types/lib/ground/polygon/polygon-helpers.d.ts.map +1 -0
- package/dist/types/lib/ground/polygon/polygon-hierarchy.d.ts +60 -0
- package/dist/types/lib/ground/polygon/polygon-hierarchy.d.ts.map +1 -0
- package/dist/types/lib/ground/polygon/polygon-offset.d.ts +15 -0
- package/dist/types/lib/ground/polygon/polygon-offset.d.ts.map +1 -0
- package/dist/types/lib/ground/polygon/polygon-options.d.ts +41 -0
- package/dist/types/lib/ground/polygon/polygon-options.d.ts.map +1 -0
- package/dist/types/lib/ground/polygon/polygon-rectangle.d.ts +30 -0
- package/dist/types/lib/ground/polygon/polygon-rectangle.d.ts.map +1 -0
- package/dist/types/lib/ground/polygon/polygon-rings.d.ts +64 -0
- package/dist/types/lib/ground/polygon/polygon-rings.d.ts.map +1 -0
- package/dist/types/lib/ground/polygon/polygon-shadow-volume.d.ts +39 -0
- package/dist/types/lib/ground/polygon/polygon-shadow-volume.d.ts.map +1 -0
- package/dist/types/lib/ground/polygon/polygon-style-points.d.ts +29 -0
- package/dist/types/lib/ground/polygon/polygon-style-points.d.ts.map +1 -0
- package/dist/types/lib/ground/polygon/polygon-subdivide-line.d.ts +93 -0
- package/dist/types/lib/ground/polygon/polygon-subdivide-line.d.ts.map +1 -0
- package/dist/types/lib/ground/polygon/polygon-subdivide-triangle.d.ts +53 -0
- package/dist/types/lib/ground/polygon/polygon-subdivide-triangle.d.ts.map +1 -0
- package/dist/types/lib/ground/polygon/polygon-wall-construction.d.ts +77 -0
- package/dist/types/lib/ground/polygon/polygon-wall-construction.d.ts.map +1 -0
- package/dist/types/lib/ground/polygon/triangulation.d.ts +40 -0
- package/dist/types/lib/ground/polygon/triangulation.d.ts.map +1 -0
- package/dist/types/lib/ground/primitives.d.ts +262 -0
- package/dist/types/lib/ground/primitives.d.ts.map +1 -0
- package/dist/types/lib/ground/rectangle/rectangle-attributes.d.ts +29 -0
- package/dist/types/lib/ground/rectangle/rectangle-attributes.d.ts.map +1 -0
- package/dist/types/lib/ground/rectangle/rectangle-construct-cap.d.ts +53 -0
- package/dist/types/lib/ground/rectangle/rectangle-construct-cap.d.ts.map +1 -0
- package/dist/types/lib/ground/rectangle/rectangle-construct-extruded.d.ts +35 -0
- package/dist/types/lib/ground/rectangle/rectangle-construct-extruded.d.ts.map +1 -0
- package/dist/types/lib/ground/rectangle/rectangle-debug.d.ts +22 -0
- package/dist/types/lib/ground/rectangle/rectangle-debug.d.ts.map +1 -0
- package/dist/types/lib/ground/rectangle/rectangle-extents.d.ts +33 -0
- package/dist/types/lib/ground/rectangle/rectangle-extents.d.ts.map +1 -0
- package/dist/types/lib/ground/rectangle/rectangle-grid.d.ts +76 -0
- package/dist/types/lib/ground/rectangle/rectangle-grid.d.ts.map +1 -0
- package/dist/types/lib/ground/rectangle/rectangle-helpers.d.ts +103 -0
- package/dist/types/lib/ground/rectangle/rectangle-helpers.d.ts.map +1 -0
- package/dist/types/lib/ground/rectangle/rectangle-options.d.ts +21 -0
- package/dist/types/lib/ground/rectangle/rectangle-options.d.ts.map +1 -0
- package/dist/types/lib/ground/rectangle/rectangle-radians.d.ts +51 -0
- package/dist/types/lib/ground/rectangle/rectangle-radians.d.ts.map +1 -0
- package/dist/types/lib/ground/rectangle/rectangle-shadow-volume.d.ts +28 -0
- package/dist/types/lib/ground/rectangle/rectangle-shadow-volume.d.ts.map +1 -0
- package/dist/types/lib/ground/terrain-heights.d.ts +65 -0
- package/dist/types/lib/ground/terrain-heights.d.ts.map +1 -0
- package/dist/types/lib/ground/terrain-log-depth.d.ts +32 -0
- package/dist/types/lib/ground/terrain-log-depth.d.ts.map +1 -0
- package/dist/types/lib/ground/text/index.d.ts +7 -0
- package/dist/types/lib/ground/text/index.d.ts.map +1 -0
- package/dist/types/lib/ground/text/text-canvas.d.ts +22 -0
- package/dist/types/lib/ground/text/text-canvas.d.ts.map +1 -0
- package/dist/types/lib/ground/text/text-color.d.ts +28 -0
- package/dist/types/lib/ground/text/text-color.d.ts.map +1 -0
- package/dist/types/lib/ground/text/text-construct-extruded.d.ts +27 -0
- package/dist/types/lib/ground/text/text-construct-extruded.d.ts.map +1 -0
- package/dist/types/lib/ground/text/text-defaults.d.ts +12 -0
- package/dist/types/lib/ground/text/text-defaults.d.ts.map +1 -0
- package/dist/types/lib/ground/text/text-extents.d.ts +19 -0
- package/dist/types/lib/ground/text/text-extents.d.ts.map +1 -0
- package/dist/types/lib/ground/text/text-layout.d.ts +18 -0
- package/dist/types/lib/ground/text/text-layout.d.ts.map +1 -0
- package/dist/types/lib/ground/text/text-options.d.ts +26 -0
- package/dist/types/lib/ground/text/text-options.d.ts.map +1 -0
- package/dist/types/lib/ground/text/text-placement.d.ts +34 -0
- package/dist/types/lib/ground/text/text-placement.d.ts.map +1 -0
- package/dist/types/lib/ground/text/text-primitive.d.ts +74 -0
- package/dist/types/lib/ground/text/text-primitive.d.ts.map +1 -0
- package/dist/types/lib/ground/text/text-shadow-volume.d.ts +21 -0
- package/dist/types/lib/ground/text/text-shadow-volume.d.ts.map +1 -0
- package/dist/types/lib/ground/text/text-types.d.ts +156 -0
- package/dist/types/lib/ground/text/text-types.d.ts.map +1 -0
- package/dist/types/lib/ground/types.d.ts +484 -0
- package/dist/types/lib/ground/types.d.ts.map +1 -0
- package/dist/types/lib/ground/validation.d.ts +8 -0
- package/dist/types/lib/ground/validation.d.ts.map +1 -0
- package/package.json +54 -0
package/dist/arrow.js
ADDED
|
@@ -0,0 +1,523 @@
|
|
|
1
|
+
const St = 298.257223563, et = 1 / St, ht = 2 * et - et * et, ct = Math.PI / 180, lt = 180 / Math.PI, dt = 1e-9;
|
|
2
|
+
function q(t, n) {
|
|
3
|
+
if (t.length === 0)
|
|
4
|
+
return [];
|
|
5
|
+
let e = 0, c = 0;
|
|
6
|
+
for (const o of t) {
|
|
7
|
+
if (!Number.isFinite(o[0]) || !Number.isFinite(o[1]))
|
|
8
|
+
return [];
|
|
9
|
+
e += o[0], c += o[1];
|
|
10
|
+
}
|
|
11
|
+
const s = 1 / t.length, a = e * s, r = c * s, u = r * ct, i = Math.sin(u), f = Math.cos(u), l = 1 - ht * i * i, _ = 6378137 / Math.sqrt(l), A = 6378137 * (1 - ht) / (l * Math.sqrt(l)), T = _ * f, d = A;
|
|
12
|
+
if (Math.abs(T) < 1e-6 || !Number.isFinite(T) || !Number.isFinite(d))
|
|
13
|
+
return [];
|
|
14
|
+
const h = t.map((o) => [
|
|
15
|
+
(o[0] - a) * ct * T,
|
|
16
|
+
(o[1] - r) * ct * d
|
|
17
|
+
]);
|
|
18
|
+
return n(h).map((o) => [
|
|
19
|
+
a + o[0] / T * lt,
|
|
20
|
+
r + o[1] / d * lt
|
|
21
|
+
]);
|
|
22
|
+
}
|
|
23
|
+
function y(t, n) {
|
|
24
|
+
const e = t[0] - n[0], c = t[1] - n[1], s = e * e + c * c;
|
|
25
|
+
return s > 0 ? Math.sqrt(s) : 0;
|
|
26
|
+
}
|
|
27
|
+
function At(t) {
|
|
28
|
+
let n = 0;
|
|
29
|
+
for (let e = 1; e < t.length; e++)
|
|
30
|
+
n += y(t[e - 1], t[e]);
|
|
31
|
+
return n;
|
|
32
|
+
}
|
|
33
|
+
function st(t) {
|
|
34
|
+
const n = At(t);
|
|
35
|
+
return n > 0 ? Math.pow(n, 0.99) : 0;
|
|
36
|
+
}
|
|
37
|
+
function ut(t, n) {
|
|
38
|
+
return [(t[0] + n[0]) / 2, (t[1] + n[1]) / 2];
|
|
39
|
+
}
|
|
40
|
+
function Rt(t, n) {
|
|
41
|
+
const e = t[0] - n[0], c = t[1] - n[1];
|
|
42
|
+
return Math.abs(e) < dt && Math.abs(c) < dt ? 0 : Math.atan2(c, e);
|
|
43
|
+
}
|
|
44
|
+
function Lt(t, n, e, c, s) {
|
|
45
|
+
if (!Number.isFinite(t[0]) || !Number.isFinite(t[1]) || !Number.isFinite(n[0]) || !Number.isFinite(n[1]) || !Number.isFinite(e) || !Number.isFinite(c))
|
|
46
|
+
return [n[0], n[1]];
|
|
47
|
+
const r = Rt(t, n) + e;
|
|
48
|
+
return [
|
|
49
|
+
n[0] + c * Math.cos(r),
|
|
50
|
+
n[1] + c * Math.sin(r)
|
|
51
|
+
];
|
|
52
|
+
}
|
|
53
|
+
const Dt = 120, ft = 1e-10;
|
|
54
|
+
function Mt(t) {
|
|
55
|
+
if (t.length === 0)
|
|
56
|
+
return [];
|
|
57
|
+
const n = [[t[0][0], t[0][1]]];
|
|
58
|
+
for (let e = 1; e < t.length; e++) {
|
|
59
|
+
const c = t[e], s = n[n.length - 1];
|
|
60
|
+
y(c, s) > ft && n.push([c[0], c[1]]);
|
|
61
|
+
}
|
|
62
|
+
if (n.length >= 2) {
|
|
63
|
+
const e = n[0], c = n[n.length - 1];
|
|
64
|
+
y(e, c) <= ft && n.pop();
|
|
65
|
+
}
|
|
66
|
+
return n;
|
|
67
|
+
}
|
|
68
|
+
function It(t) {
|
|
69
|
+
const n = t.length;
|
|
70
|
+
if (n < 3)
|
|
71
|
+
return 0;
|
|
72
|
+
let e = 0;
|
|
73
|
+
for (let c = 0; c < n; c++) {
|
|
74
|
+
const s = t[c], a = t[(c + 1) % n];
|
|
75
|
+
e += s[0] * a[1] - a[0] * s[1];
|
|
76
|
+
}
|
|
77
|
+
return e * 0.5;
|
|
78
|
+
}
|
|
79
|
+
function mt(t) {
|
|
80
|
+
if (It(t) < 0) {
|
|
81
|
+
const e = new Array(t.length);
|
|
82
|
+
for (let c = 0; c < t.length; c++) {
|
|
83
|
+
const s = t[t.length - 1 - c];
|
|
84
|
+
e[c] = [s[0], s[1]];
|
|
85
|
+
}
|
|
86
|
+
return e;
|
|
87
|
+
}
|
|
88
|
+
return t.map((e) => [e[0], e[1]]);
|
|
89
|
+
}
|
|
90
|
+
function Wt(t, n) {
|
|
91
|
+
const e = Math.max(Math.floor(n), 4);
|
|
92
|
+
if (t.length <= e)
|
|
93
|
+
return t.map((a) => [a[0], a[1]]);
|
|
94
|
+
const c = new Array(e), s = (t.length - 1) / (e - 1);
|
|
95
|
+
for (let a = 0; a < e; a++) {
|
|
96
|
+
const r = Math.round(a * s), u = Math.min(r, t.length - 1), i = t[u];
|
|
97
|
+
c[a] = [i[0], i[1]];
|
|
98
|
+
}
|
|
99
|
+
return c;
|
|
100
|
+
}
|
|
101
|
+
function Ht(t, n = Math.PI / 6) {
|
|
102
|
+
let e = t.map((r) => [r[0], r[1]]);
|
|
103
|
+
const c = Math.PI - n;
|
|
104
|
+
let s = !0, a = 0;
|
|
105
|
+
for (; s && e.length >= 4 && a < 1e3; ) {
|
|
106
|
+
a++, s = !1;
|
|
107
|
+
const r = [], u = e.length;
|
|
108
|
+
for (let i = 0; i < u; i++) {
|
|
109
|
+
const f = e[(i - 1 + u) % u], l = e[i], _ = e[(i + 1) % u], A = l[0] - f[0], T = l[1] - f[1], d = _[0] - l[0], h = _[1] - l[1], g = A * h - T * d, o = A * d + T * h;
|
|
110
|
+
if (Math.abs(Math.atan2(g, o)) > c) {
|
|
111
|
+
s = !0;
|
|
112
|
+
continue;
|
|
113
|
+
}
|
|
114
|
+
r.push([l[0], l[1]]);
|
|
115
|
+
}
|
|
116
|
+
e = r;
|
|
117
|
+
}
|
|
118
|
+
return e;
|
|
119
|
+
}
|
|
120
|
+
function J(t, n = Dt) {
|
|
121
|
+
const e = Mt(t);
|
|
122
|
+
if (e.length < 3)
|
|
123
|
+
return [];
|
|
124
|
+
const c = Ht(e);
|
|
125
|
+
if (c.length < 3)
|
|
126
|
+
return [];
|
|
127
|
+
const s = mt(c);
|
|
128
|
+
return Wt(s, n);
|
|
129
|
+
}
|
|
130
|
+
const kt = 0.1, yt = 0.2, wt = 0.25, xt = Math.PI / 8.5, Nt = Math.PI / 13;
|
|
131
|
+
function gt(t, n, e = {}) {
|
|
132
|
+
return q(
|
|
133
|
+
[t, n],
|
|
134
|
+
(c) => Ct(
|
|
135
|
+
c[0],
|
|
136
|
+
c[1],
|
|
137
|
+
e
|
|
138
|
+
)
|
|
139
|
+
);
|
|
140
|
+
}
|
|
141
|
+
function Ct(t, n, e = {}) {
|
|
142
|
+
const c = e.tailWidthFactor ?? kt, s = e.neckWidthFactor ?? yt, a = e.headWidthFactor ?? wt, r = e.headAngleRadians ?? xt, u = e.neckAngleRadians ?? Nt, i = y(t, n);
|
|
143
|
+
if (i <= 0)
|
|
144
|
+
return [];
|
|
145
|
+
const f = st([t, n]);
|
|
146
|
+
if (f <= 0)
|
|
147
|
+
return [];
|
|
148
|
+
const l = f * c, _ = f * s, A = f * a, T = (n[0] - t[0]) / i, d = (n[1] - t[1]) / i, h = -d, g = T, o = Math.cos(u) * _, S = Math.sin(u) * _, E = Math.cos(r) * A, L = Math.sin(r) * A, M = [
|
|
149
|
+
t[0] - h * l,
|
|
150
|
+
t[1] - g * l
|
|
151
|
+
], v = [
|
|
152
|
+
n[0] - T * o - h * S,
|
|
153
|
+
n[1] - d * o - g * S
|
|
154
|
+
], H = [
|
|
155
|
+
n[0] - T * E - h * L,
|
|
156
|
+
n[1] - d * E - g * L
|
|
157
|
+
], D = [
|
|
158
|
+
n[0] - T * E + h * L,
|
|
159
|
+
n[1] - d * E + g * L
|
|
160
|
+
], w = [
|
|
161
|
+
n[0] - T * o + h * S,
|
|
162
|
+
n[1] - d * o + g * S
|
|
163
|
+
], I = [
|
|
164
|
+
t[0] + h * l,
|
|
165
|
+
t[1] + g * l
|
|
166
|
+
], x = [
|
|
167
|
+
[t[0], t[1]],
|
|
168
|
+
// 尾中(下方衔接 tailRight,上方衔接 tailLeft)
|
|
169
|
+
M,
|
|
170
|
+
v,
|
|
171
|
+
H,
|
|
172
|
+
[n[0], n[1]],
|
|
173
|
+
// 箭尖
|
|
174
|
+
D,
|
|
175
|
+
w,
|
|
176
|
+
I
|
|
177
|
+
];
|
|
178
|
+
return J(x);
|
|
179
|
+
}
|
|
180
|
+
const Ot = 1.5, bt = 0.08, Ut = 0.1, vt = 0.13, Gt = Math.PI / 4, pt = Math.PI * 0.17741;
|
|
181
|
+
function hn(t, n, e = {}) {
|
|
182
|
+
return q(
|
|
183
|
+
[t, n],
|
|
184
|
+
(c) => Bt(
|
|
185
|
+
c[0],
|
|
186
|
+
c[1],
|
|
187
|
+
e
|
|
188
|
+
)
|
|
189
|
+
);
|
|
190
|
+
}
|
|
191
|
+
function Bt(t, n, e = {}) {
|
|
192
|
+
const c = e.lengthScale ?? Ot, s = e.tailWidthFactor ?? bt, a = e.neckWidthFactor ?? Ut, r = e.headWidthFactor ?? vt, u = e.headAngleRadians ?? Gt, i = e.neckAngleRadians ?? pt, f = y(t, n);
|
|
193
|
+
if (f <= 0)
|
|
194
|
+
return [];
|
|
195
|
+
const l = st([t, n]) * c;
|
|
196
|
+
if (l <= 0)
|
|
197
|
+
return [];
|
|
198
|
+
const _ = l * s, A = l * a, T = l * r, d = (n[0] - t[0]) / f, h = (n[1] - t[1]) / f, g = -h, o = d, S = Math.cos(i) * A, E = Math.sin(i) * A, L = Math.cos(u) * T, M = Math.sin(u) * T, v = [
|
|
199
|
+
t[0] - g * _,
|
|
200
|
+
t[1] - o * _
|
|
201
|
+
], H = [
|
|
202
|
+
n[0] - d * S - g * E,
|
|
203
|
+
n[1] - h * S - o * E
|
|
204
|
+
], D = [
|
|
205
|
+
n[0] - d * L - g * M,
|
|
206
|
+
n[1] - h * L - o * M
|
|
207
|
+
], w = [
|
|
208
|
+
n[0] - d * L + g * M,
|
|
209
|
+
n[1] - h * L + o * M
|
|
210
|
+
], I = [
|
|
211
|
+
n[0] - d * S + g * E,
|
|
212
|
+
n[1] - h * S + o * E
|
|
213
|
+
], x = [
|
|
214
|
+
t[0] + g * _,
|
|
215
|
+
t[1] + o * _
|
|
216
|
+
], k = [
|
|
217
|
+
[t[0], t[1]],
|
|
218
|
+
v,
|
|
219
|
+
H,
|
|
220
|
+
D,
|
|
221
|
+
[n[0], n[1]],
|
|
222
|
+
w,
|
|
223
|
+
I,
|
|
224
|
+
x
|
|
225
|
+
];
|
|
226
|
+
return J(k);
|
|
227
|
+
}
|
|
228
|
+
function Tt(t, n) {
|
|
229
|
+
if (t.length < 2)
|
|
230
|
+
return t.map((A) => [A[0], A[1]]);
|
|
231
|
+
if (t.length === 2)
|
|
232
|
+
return Yt(t[0], t[1], n);
|
|
233
|
+
const e = t[0], c = t[1], s = [
|
|
234
|
+
2 * e[0] - c[0],
|
|
235
|
+
2 * e[1] - c[1]
|
|
236
|
+
], a = t[t.length - 1], r = t[t.length - 2], u = [
|
|
237
|
+
2 * a[0] - r[0],
|
|
238
|
+
2 * a[1] - r[1]
|
|
239
|
+
], i = [s, ...t, u], f = [], l = Math.max(Math.floor(n), 1), _ = t.length - 1;
|
|
240
|
+
for (let A = 0; A < _; A++) {
|
|
241
|
+
const T = i[A], d = i[A + 1], h = i[A + 2], g = i[A + 3], o = 1e-12, S = 0, E = S + Math.max(Math.pow(y(T, d), 0.5), o), L = E + Math.max(Math.pow(y(d, h), 0.5), o), M = L + Math.max(Math.pow(y(h, g), 0.5), o), H = A === 0 ? 0 : 1, w = A === _ - 1 ? l + 1 : l;
|
|
242
|
+
for (let I = H; I < w; I++) {
|
|
243
|
+
const x = E + (L - E) * (I / l);
|
|
244
|
+
f.push(Xt(T, d, h, g, S, E, L, M, x));
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
return f;
|
|
248
|
+
}
|
|
249
|
+
function Xt(t, n, e, c, s, a, r, u, i) {
|
|
250
|
+
const f = V(t, n, (i - s) / (a - s)), l = V(n, e, (i - a) / (r - a)), _ = V(e, c, (i - r) / (u - r)), A = V(f, l, (i - s) / (r - s)), T = V(l, _, (i - a) / (u - a));
|
|
251
|
+
return V(A, T, (i - a) / (r - a));
|
|
252
|
+
}
|
|
253
|
+
function V(t, n, e) {
|
|
254
|
+
return [
|
|
255
|
+
t[0] + (n[0] - t[0]) * e,
|
|
256
|
+
t[1] + (n[1] - t[1]) * e
|
|
257
|
+
];
|
|
258
|
+
}
|
|
259
|
+
function Yt(t, n, e) {
|
|
260
|
+
const c = Math.max(Math.floor(e), 1), s = new Array(c + 1);
|
|
261
|
+
for (let a = 0; a <= c; a++) {
|
|
262
|
+
const r = a / c;
|
|
263
|
+
s[a] = [
|
|
264
|
+
t[0] + (n[0] - t[0]) * r,
|
|
265
|
+
t[1] + (n[1] - t[1]) * r
|
|
266
|
+
];
|
|
267
|
+
}
|
|
268
|
+
return s;
|
|
269
|
+
}
|
|
270
|
+
function _t(t) {
|
|
271
|
+
const n = t.length, e = new Array(n);
|
|
272
|
+
if (n === 0)
|
|
273
|
+
return e;
|
|
274
|
+
if (n === 1)
|
|
275
|
+
return e[0] = [1, 0], e;
|
|
276
|
+
for (let c = 0; c < n; c++) {
|
|
277
|
+
const s = c > 0 ? c - 1 : c, a = c < n - 1 ? c + 1 : c, r = t[a][0] - t[s][0], u = t[a][1] - t[s][1], i = Math.sqrt(r * r + u * u);
|
|
278
|
+
i > 0 ? e[c] = [r / i, u / i] : e[c] = [1, 0];
|
|
279
|
+
}
|
|
280
|
+
return e;
|
|
281
|
+
}
|
|
282
|
+
function Et(t, n) {
|
|
283
|
+
const e = t.length;
|
|
284
|
+
if (e < 2)
|
|
285
|
+
return null;
|
|
286
|
+
if (n <= 0)
|
|
287
|
+
return {
|
|
288
|
+
segmentIdx: e - 2,
|
|
289
|
+
localT: 1,
|
|
290
|
+
point: [t[e - 1][0], t[e - 1][1]]
|
|
291
|
+
};
|
|
292
|
+
let c = 0;
|
|
293
|
+
for (let s = e - 1; s > 0; s--) {
|
|
294
|
+
const a = y(t[s], t[s - 1]);
|
|
295
|
+
if (c + a >= n) {
|
|
296
|
+
const r = n - c, u = a > 0 ? 1 - r / a : 1, i = t[s - 1][0], f = t[s - 1][1], l = t[s][0], _ = t[s][1];
|
|
297
|
+
return {
|
|
298
|
+
segmentIdx: s - 1,
|
|
299
|
+
localT: u,
|
|
300
|
+
point: [
|
|
301
|
+
i + (l - i) * u,
|
|
302
|
+
f + (_ - f) * u
|
|
303
|
+
]
|
|
304
|
+
};
|
|
305
|
+
}
|
|
306
|
+
c += a;
|
|
307
|
+
}
|
|
308
|
+
return null;
|
|
309
|
+
}
|
|
310
|
+
const Vt = 0.28, $t = 0.55, Kt = 0.85, qt = 0.22, Jt = 1.25, zt = 12;
|
|
311
|
+
function ln(t, n = {}) {
|
|
312
|
+
return q(
|
|
313
|
+
t,
|
|
314
|
+
(e) => Qt(e, n)
|
|
315
|
+
);
|
|
316
|
+
}
|
|
317
|
+
function Qt(t, n = {}) {
|
|
318
|
+
if (t.length < 2)
|
|
319
|
+
return [];
|
|
320
|
+
if (t.length === 2)
|
|
321
|
+
return gt(t[0], t[1]);
|
|
322
|
+
const e = Ft(t, n);
|
|
323
|
+
if (!e)
|
|
324
|
+
return [];
|
|
325
|
+
const c = [
|
|
326
|
+
...e.leftSide,
|
|
327
|
+
// tailLeft → ... → neckLeft
|
|
328
|
+
e.headLeft,
|
|
329
|
+
// 左翼尖
|
|
330
|
+
e.tip,
|
|
331
|
+
// 箭尖
|
|
332
|
+
e.headRight,
|
|
333
|
+
// 右翼尖
|
|
334
|
+
...e.rightSide.slice().reverse()
|
|
335
|
+
// neckRight → ... → tailRight
|
|
336
|
+
];
|
|
337
|
+
return J(c);
|
|
338
|
+
}
|
|
339
|
+
function Ft(t, n) {
|
|
340
|
+
const e = n.headHeightFactor ?? Vt, c = n.headWidthFactor ?? $t, s = n.neckHeightFactor ?? Kt, a = n.neckWidthFactor ?? qt, r = n.headTailFactor ?? Jt, u = n.bodySmoothingSegments ?? zt, i = ut(t[0], t[1]), f = t[2][0] - i[0], l = t[2][1] - i[1], _ = t[0][0] - i[0], A = t[0][1] - i[1], T = f * A - l * _;
|
|
341
|
+
let d = t[0], h = t[1];
|
|
342
|
+
T < 0 && (d = t[1], h = t[0]);
|
|
343
|
+
const g = ut(d, h), o = [g];
|
|
344
|
+
for (let R = 2; R < t.length; R++)
|
|
345
|
+
o.push(t[R]);
|
|
346
|
+
if (o.length < 2)
|
|
347
|
+
return null;
|
|
348
|
+
const S = Tt(
|
|
349
|
+
o,
|
|
350
|
+
u
|
|
351
|
+
);
|
|
352
|
+
if (S.length < 2)
|
|
353
|
+
return null;
|
|
354
|
+
const E = y(d, h), L = st(o), M = [
|
|
355
|
+
o[o.length - 1][0],
|
|
356
|
+
o[o.length - 1][1]
|
|
357
|
+
], v = o[o.length - 2], H = y(M, v);
|
|
358
|
+
let D = L * e;
|
|
359
|
+
if (D > E * r && (D = E * r), D > H && (D = H), D <= 0)
|
|
360
|
+
return null;
|
|
361
|
+
const w = D * s, I = D * c, x = D * a, k = Et(S, w);
|
|
362
|
+
if (k === null)
|
|
363
|
+
return null;
|
|
364
|
+
const m = [];
|
|
365
|
+
for (let R = 0; R <= k.segmentIdx; R++)
|
|
366
|
+
m.push([S[R][0], S[R][1]]);
|
|
367
|
+
const z = S[k.segmentIdx][0], Q = S[k.segmentIdx][1], $ = k.point[0] - z, j = k.point[1] - Q;
|
|
368
|
+
if ($ * $ + j * j > 1e-24 && m.push([k.point[0], k.point[1]]), m.length < 2)
|
|
369
|
+
return null;
|
|
370
|
+
const Y = _t(m), P = E / 2, N = m.length - 1, F = new Array(m.length), G = new Array(m.length);
|
|
371
|
+
for (let R = 0; R <= N; R++) {
|
|
372
|
+
const Z = N > 0 ? R / N : 0;
|
|
373
|
+
let U;
|
|
374
|
+
R === N ? U = x : U = P * (1 - Z) + x * Z;
|
|
375
|
+
const tt = Y[R][0], at = -Y[R][1], ot = tt, it = m[R][0], rt = m[R][1];
|
|
376
|
+
F[R] = [it + at * U, rt + ot * U], G[R] = [it - at * U, rt - ot * U];
|
|
377
|
+
}
|
|
378
|
+
F[0] = [d[0], d[1]], G[0] = [h[0], h[1]];
|
|
379
|
+
const W = Y[N][0], p = -Y[N][1], C = W, O = m[N][0], b = m[N][1], B = [
|
|
380
|
+
O + p * I,
|
|
381
|
+
b + C * I
|
|
382
|
+
], X = [
|
|
383
|
+
O - p * I,
|
|
384
|
+
b - C * I
|
|
385
|
+
];
|
|
386
|
+
return {
|
|
387
|
+
leftSide: F,
|
|
388
|
+
rightSide: G,
|
|
389
|
+
headLeft: B,
|
|
390
|
+
headRight: X,
|
|
391
|
+
tip: M,
|
|
392
|
+
tailLeft: [d[0], d[1]],
|
|
393
|
+
tailRight: [h[0], h[1]],
|
|
394
|
+
midTail: [g[0], g[1]],
|
|
395
|
+
spineSecond: [o[1][0], o[1][1]],
|
|
396
|
+
spineBaseLen: L
|
|
397
|
+
};
|
|
398
|
+
}
|
|
399
|
+
const jt = 0.08, Zt = 0.7;
|
|
400
|
+
function dn(t, n = {}) {
|
|
401
|
+
return q(
|
|
402
|
+
t,
|
|
403
|
+
(e) => Pt(e, n)
|
|
404
|
+
);
|
|
405
|
+
}
|
|
406
|
+
function Pt(t, n = {}) {
|
|
407
|
+
if (t.length < 2)
|
|
408
|
+
return [];
|
|
409
|
+
if (t.length === 2)
|
|
410
|
+
return gt(t[0], t[1]);
|
|
411
|
+
const e = Ft(t, n);
|
|
412
|
+
if (!e)
|
|
413
|
+
return [];
|
|
414
|
+
const c = n.tailWidthFactor ?? jt, s = n.swallowtailFactor ?? Zt, a = e.spineBaseLen * c * s, r = Lt(
|
|
415
|
+
e.spineSecond,
|
|
416
|
+
e.midTail,
|
|
417
|
+
0,
|
|
418
|
+
a
|
|
419
|
+
), u = [
|
|
420
|
+
...e.leftSide,
|
|
421
|
+
// tailLeft → ... → neckLeft
|
|
422
|
+
e.headLeft,
|
|
423
|
+
// 左翼尖
|
|
424
|
+
e.tip,
|
|
425
|
+
// 箭尖
|
|
426
|
+
e.headRight,
|
|
427
|
+
// 右翼尖
|
|
428
|
+
...e.rightSide.slice().reverse(),
|
|
429
|
+
// neckRight → ... → tailRight
|
|
430
|
+
r
|
|
431
|
+
// 燕尾凹口顶点
|
|
432
|
+
];
|
|
433
|
+
return J(u);
|
|
434
|
+
}
|
|
435
|
+
const tn = 0.05, nn = 0.16, en = 0.18, cn = 0.4, sn = 16, an = 0, on = 0.6;
|
|
436
|
+
function un(t, n = {}) {
|
|
437
|
+
return q(
|
|
438
|
+
t,
|
|
439
|
+
(e) => rn(e, n)
|
|
440
|
+
);
|
|
441
|
+
}
|
|
442
|
+
function rn(t, n = {}) {
|
|
443
|
+
if (t.length < 2)
|
|
444
|
+
return [];
|
|
445
|
+
const e = n.bodyWidthFactor ?? tn, c = n.headWidthFactor ?? nn, s = n.headLengthFactor ?? en, a = n.neckWidthRelativeToHead ?? cn, r = n.curveSmoothingSegments ?? sn, u = n.bodyTaperRatio ?? an, i = Tt(
|
|
446
|
+
t,
|
|
447
|
+
r
|
|
448
|
+
);
|
|
449
|
+
if (i.length < 2)
|
|
450
|
+
return [];
|
|
451
|
+
const f = At(i);
|
|
452
|
+
if (f <= 0)
|
|
453
|
+
return [];
|
|
454
|
+
const l = f * e / 2, _ = f * c / 2, A = _ * a, T = Math.min(
|
|
455
|
+
f * s,
|
|
456
|
+
f * on
|
|
457
|
+
), d = Et(i, T);
|
|
458
|
+
if (d === null)
|
|
459
|
+
return [];
|
|
460
|
+
const h = i.slice(0, d.segmentIdx + 1).map((F) => [F[0], F[1]]);
|
|
461
|
+
if (h.push(d.point), h.length < 2)
|
|
462
|
+
return [];
|
|
463
|
+
const g = _t(h), o = h.length - 1, S = 0.5;
|
|
464
|
+
let E = 1 / 0;
|
|
465
|
+
for (let F = 1; F < o; F++) {
|
|
466
|
+
const G = h[F - 1], W = h[F], K = h[F + 1], p = W[0] - G[0], C = W[1] - G[1], O = K[0] - W[0], b = K[1] - W[1], B = Math.hypot(p, C), X = Math.hypot(O, b);
|
|
467
|
+
if (B < 1e-9 || X < 1e-9)
|
|
468
|
+
continue;
|
|
469
|
+
const R = p * b - C * O, Z = p * O + C * b, U = Math.abs(Math.atan2(R, Z)), tt = (B + X) * 0.5;
|
|
470
|
+
if (U < 1e-9)
|
|
471
|
+
continue;
|
|
472
|
+
const nt = tt / U;
|
|
473
|
+
nt < E && (E = nt);
|
|
474
|
+
}
|
|
475
|
+
let L = 1 / 0;
|
|
476
|
+
Number.isFinite(E) && (L = E * S);
|
|
477
|
+
let M = 1;
|
|
478
|
+
l > L && l > 0 && (M = L / l);
|
|
479
|
+
const v = l * M, H = A * M, D = _ * M, w = new Array(h.length), I = new Array(h.length);
|
|
480
|
+
for (let F = 0; F < h.length; F++) {
|
|
481
|
+
const G = o > 0 ? F / o : 0;
|
|
482
|
+
let W;
|
|
483
|
+
if (F === o)
|
|
484
|
+
W = H;
|
|
485
|
+
else {
|
|
486
|
+
const X = G * u;
|
|
487
|
+
W = v * (1 - X) + H * X;
|
|
488
|
+
}
|
|
489
|
+
const K = g[F][0], C = -g[F][1], O = K, b = h[F][0], B = h[F][1];
|
|
490
|
+
w[F] = [b + C * W, B + O * W], I[F] = [b - C * W, B - O * W];
|
|
491
|
+
}
|
|
492
|
+
const x = g[o][0], m = -g[o][1], z = x, Q = d.point[0], $ = d.point[1], j = [
|
|
493
|
+
Q + m * D,
|
|
494
|
+
$ + z * D
|
|
495
|
+
], Y = [
|
|
496
|
+
Q - m * D,
|
|
497
|
+
$ - z * D
|
|
498
|
+
], P = [
|
|
499
|
+
t[t.length - 1][0],
|
|
500
|
+
t[t.length - 1][1]
|
|
501
|
+
], N = [
|
|
502
|
+
...w,
|
|
503
|
+
// tailLeft → neckLeft
|
|
504
|
+
j,
|
|
505
|
+
// 翼尖
|
|
506
|
+
P,
|
|
507
|
+
// 箭尖
|
|
508
|
+
Y,
|
|
509
|
+
// 翼尖
|
|
510
|
+
...I.slice().reverse()
|
|
511
|
+
// neckRight → tailRight
|
|
512
|
+
];
|
|
513
|
+
return J(N);
|
|
514
|
+
}
|
|
515
|
+
export {
|
|
516
|
+
Dt as ARROW_OUTPUT_MAX_VERTICES,
|
|
517
|
+
hn as createAssaultDirectionArrow,
|
|
518
|
+
ln as createAttackArrow,
|
|
519
|
+
un as createCurvedArrow,
|
|
520
|
+
gt as createFineArrow,
|
|
521
|
+
dn as createSwallowtailAttackArrow
|
|
522
|
+
};
|
|
523
|
+
//# sourceMappingURL=arrow.js.map
|