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.
Files changed (184) hide show
  1. package/README.md +226 -0
  2. package/dist/arrow.js +523 -0
  3. package/dist/arrow.js.map +1 -0
  4. package/dist/ground.js +34 -0
  5. package/dist/ground.js.map +1 -0
  6. package/dist/index.js +34 -0
  7. package/dist/index.js.map +1 -0
  8. package/dist/text-primitive-Ci0sbuh1.js +60066 -0
  9. package/dist/text-primitive-Ci0sbuh1.js.map +1 -0
  10. package/dist/types/cesium-three-ground.d.ts +2 -0
  11. package/dist/types/cesium-three-ground.d.ts.map +1 -0
  12. package/dist/types/lib/arrow/arrow-curves.d.ts +73 -0
  13. package/dist/types/lib/arrow/arrow-curves.d.ts.map +1 -0
  14. package/dist/types/lib/arrow/arrow-geometry.d.ts +140 -0
  15. package/dist/types/lib/arrow/arrow-geometry.d.ts.map +1 -0
  16. package/dist/types/lib/arrow/arrow-polygon.d.ts +87 -0
  17. package/dist/types/lib/arrow/arrow-polygon.d.ts.map +1 -0
  18. package/dist/types/lib/arrow/arrow-types.d.ts +152 -0
  19. package/dist/types/lib/arrow/arrow-types.d.ts.map +1 -0
  20. package/dist/types/lib/arrow/index.d.ts +8 -0
  21. package/dist/types/lib/arrow/index.d.ts.map +1 -0
  22. package/dist/types/lib/arrow/shapes/assault-direction-arrow.d.ts +20 -0
  23. package/dist/types/lib/arrow/shapes/assault-direction-arrow.d.ts.map +1 -0
  24. package/dist/types/lib/arrow/shapes/attack-arrow.d.ts +56 -0
  25. package/dist/types/lib/arrow/shapes/attack-arrow.d.ts.map +1 -0
  26. package/dist/types/lib/arrow/shapes/curved-arrow.d.ts +10 -0
  27. package/dist/types/lib/arrow/shapes/curved-arrow.d.ts.map +1 -0
  28. package/dist/types/lib/arrow/shapes/fine-arrow.d.ts +23 -0
  29. package/dist/types/lib/arrow/shapes/fine-arrow.d.ts.map +1 -0
  30. package/dist/types/lib/arrow/shapes/swallowtail-attack-arrow.d.ts +12 -0
  31. package/dist/types/lib/arrow/shapes/swallowtail-attack-arrow.d.ts.map +1 -0
  32. package/dist/types/lib/ground/cesium-ground-adapter.d.ts +9 -0
  33. package/dist/types/lib/ground/cesium-ground-adapter.d.ts.map +1 -0
  34. package/dist/types/lib/ground/circle/circle-construct-extruded.d.ts +62 -0
  35. package/dist/types/lib/ground/circle/circle-construct-extruded.d.ts.map +1 -0
  36. package/dist/types/lib/ground/circle/circle-extents.d.ts +23 -0
  37. package/dist/types/lib/ground/circle/circle-extents.d.ts.map +1 -0
  38. package/dist/types/lib/ground/circle/circle-options.d.ts +59 -0
  39. package/dist/types/lib/ground/circle/circle-options.d.ts.map +1 -0
  40. package/dist/types/lib/ground/circle/circle-positions.d.ts +56 -0
  41. package/dist/types/lib/ground/circle/circle-positions.d.ts.map +1 -0
  42. package/dist/types/lib/ground/circle/circle-shadow-volume.d.ts +24 -0
  43. package/dist/types/lib/ground/circle/circle-shadow-volume.d.ts.map +1 -0
  44. package/dist/types/lib/ground/circle/circle-top-bottom.d.ts +70 -0
  45. package/dist/types/lib/ground/circle/circle-top-bottom.d.ts.map +1 -0
  46. package/dist/types/lib/ground/circle/circle-top-indices.d.ts +28 -0
  47. package/dist/types/lib/ground/circle/circle-top-indices.d.ts.map +1 -0
  48. package/dist/types/lib/ground/circle/circle-wall-construction.d.ts +75 -0
  49. package/dist/types/lib/ground/circle/circle-wall-construction.d.ts.map +1 -0
  50. package/dist/types/lib/ground/classification.d.ts +124 -0
  51. package/dist/types/lib/ground/classification.d.ts.map +1 -0
  52. package/dist/types/lib/ground/constants.d.ts +26 -0
  53. package/dist/types/lib/ground/constants.d.ts.map +1 -0
  54. package/dist/types/lib/ground/depth.d.ts +63 -0
  55. package/dist/types/lib/ground/depth.d.ts.map +1 -0
  56. package/dist/types/lib/ground/geometry.d.ts +12 -0
  57. package/dist/types/lib/ground/geometry.d.ts.map +1 -0
  58. package/dist/types/lib/ground/index.d.ts +6 -0
  59. package/dist/types/lib/ground/index.d.ts.map +1 -0
  60. package/dist/types/lib/ground/line/line-arrowhead.d.ts +67 -0
  61. package/dist/types/lib/ground/line/line-arrowhead.d.ts.map +1 -0
  62. package/dist/types/lib/ground/line/line-densify.d.ts +35 -0
  63. package/dist/types/lib/ground/line/line-densify.d.ts.map +1 -0
  64. package/dist/types/lib/ground/line/line-geometry-normals.d.ts +49 -0
  65. package/dist/types/lib/ground/line/line-geometry-normals.d.ts.map +1 -0
  66. package/dist/types/lib/ground/line/line-options.d.ts +54 -0
  67. package/dist/types/lib/ground/line/line-options.d.ts.map +1 -0
  68. package/dist/types/lib/ground/line/line-preprocess.d.ts +12 -0
  69. package/dist/types/lib/ground/line/line-preprocess.d.ts.map +1 -0
  70. package/dist/types/lib/ground/line/line-segment-attributes.d.ts +24 -0
  71. package/dist/types/lib/ground/line/line-segment-attributes.d.ts.map +1 -0
  72. package/dist/types/lib/ground/line/line-shadow-volume.d.ts +25 -0
  73. package/dist/types/lib/ground/line/line-shadow-volume.d.ts.map +1 -0
  74. package/dist/types/lib/ground/line/line-types.d.ts +74 -0
  75. package/dist/types/lib/ground/line/line-types.d.ts.map +1 -0
  76. package/dist/types/lib/ground/materials.d.ts +69 -0
  77. package/dist/types/lib/ground/materials.d.ts.map +1 -0
  78. package/dist/types/lib/ground/math/cartographic.d.ts +27 -0
  79. package/dist/types/lib/ground/math/cartographic.d.ts.map +1 -0
  80. package/dist/types/lib/ground/math/constants.d.ts +20 -0
  81. package/dist/types/lib/ground/math/constants.d.ts.map +1 -0
  82. package/dist/types/lib/ground/math/ellipsoid-geodesic.d.ts +93 -0
  83. package/dist/types/lib/ground/math/ellipsoid-geodesic.d.ts.map +1 -0
  84. package/dist/types/lib/ground/math/ellipsoid-rhumb-line.d.ts +45 -0
  85. package/dist/types/lib/ground/math/ellipsoid-rhumb-line.d.ts.map +1 -0
  86. package/dist/types/lib/ground/math/ellipsoid.d.ts +94 -0
  87. package/dist/types/lib/ground/math/ellipsoid.d.ts.map +1 -0
  88. package/dist/types/lib/ground/math/enu-frame.d.ts +27 -0
  89. package/dist/types/lib/ground/math/enu-frame.d.ts.map +1 -0
  90. package/dist/types/lib/ground/math/matrix4-helpers.d.ts +20 -0
  91. package/dist/types/lib/ground/math/matrix4-helpers.d.ts.map +1 -0
  92. package/dist/types/lib/ground/math/rte-encoding.d.ts +51 -0
  93. package/dist/types/lib/ground/math/rte-encoding.d.ts.map +1 -0
  94. package/dist/types/lib/ground/math/vec3-helpers.d.ts +50 -0
  95. package/dist/types/lib/ground/math/vec3-helpers.d.ts.map +1 -0
  96. package/dist/types/lib/ground/math/wgs84-helpers.d.ts +22 -0
  97. package/dist/types/lib/ground/math/wgs84-helpers.d.ts.map +1 -0
  98. package/dist/types/lib/ground/polygon/ellipsoid-tangent-plane.d.ts +71 -0
  99. package/dist/types/lib/ground/polygon/ellipsoid-tangent-plane.d.ts.map +1 -0
  100. package/dist/types/lib/ground/polygon/polygon-cap-construction.d.ts +59 -0
  101. package/dist/types/lib/ground/polygon/polygon-cap-construction.d.ts.map +1 -0
  102. package/dist/types/lib/ground/polygon/polygon-construct-extruded.d.ts +44 -0
  103. package/dist/types/lib/ground/polygon/polygon-construct-extruded.d.ts.map +1 -0
  104. package/dist/types/lib/ground/polygon/polygon-extents.d.ts +24 -0
  105. package/dist/types/lib/ground/polygon/polygon-extents.d.ts.map +1 -0
  106. package/dist/types/lib/ground/polygon/polygon-helpers.d.ts +76 -0
  107. package/dist/types/lib/ground/polygon/polygon-helpers.d.ts.map +1 -0
  108. package/dist/types/lib/ground/polygon/polygon-hierarchy.d.ts +60 -0
  109. package/dist/types/lib/ground/polygon/polygon-hierarchy.d.ts.map +1 -0
  110. package/dist/types/lib/ground/polygon/polygon-offset.d.ts +15 -0
  111. package/dist/types/lib/ground/polygon/polygon-offset.d.ts.map +1 -0
  112. package/dist/types/lib/ground/polygon/polygon-options.d.ts +41 -0
  113. package/dist/types/lib/ground/polygon/polygon-options.d.ts.map +1 -0
  114. package/dist/types/lib/ground/polygon/polygon-rectangle.d.ts +30 -0
  115. package/dist/types/lib/ground/polygon/polygon-rectangle.d.ts.map +1 -0
  116. package/dist/types/lib/ground/polygon/polygon-rings.d.ts +64 -0
  117. package/dist/types/lib/ground/polygon/polygon-rings.d.ts.map +1 -0
  118. package/dist/types/lib/ground/polygon/polygon-shadow-volume.d.ts +39 -0
  119. package/dist/types/lib/ground/polygon/polygon-shadow-volume.d.ts.map +1 -0
  120. package/dist/types/lib/ground/polygon/polygon-style-points.d.ts +29 -0
  121. package/dist/types/lib/ground/polygon/polygon-style-points.d.ts.map +1 -0
  122. package/dist/types/lib/ground/polygon/polygon-subdivide-line.d.ts +93 -0
  123. package/dist/types/lib/ground/polygon/polygon-subdivide-line.d.ts.map +1 -0
  124. package/dist/types/lib/ground/polygon/polygon-subdivide-triangle.d.ts +53 -0
  125. package/dist/types/lib/ground/polygon/polygon-subdivide-triangle.d.ts.map +1 -0
  126. package/dist/types/lib/ground/polygon/polygon-wall-construction.d.ts +77 -0
  127. package/dist/types/lib/ground/polygon/polygon-wall-construction.d.ts.map +1 -0
  128. package/dist/types/lib/ground/polygon/triangulation.d.ts +40 -0
  129. package/dist/types/lib/ground/polygon/triangulation.d.ts.map +1 -0
  130. package/dist/types/lib/ground/primitives.d.ts +262 -0
  131. package/dist/types/lib/ground/primitives.d.ts.map +1 -0
  132. package/dist/types/lib/ground/rectangle/rectangle-attributes.d.ts +29 -0
  133. package/dist/types/lib/ground/rectangle/rectangle-attributes.d.ts.map +1 -0
  134. package/dist/types/lib/ground/rectangle/rectangle-construct-cap.d.ts +53 -0
  135. package/dist/types/lib/ground/rectangle/rectangle-construct-cap.d.ts.map +1 -0
  136. package/dist/types/lib/ground/rectangle/rectangle-construct-extruded.d.ts +35 -0
  137. package/dist/types/lib/ground/rectangle/rectangle-construct-extruded.d.ts.map +1 -0
  138. package/dist/types/lib/ground/rectangle/rectangle-debug.d.ts +22 -0
  139. package/dist/types/lib/ground/rectangle/rectangle-debug.d.ts.map +1 -0
  140. package/dist/types/lib/ground/rectangle/rectangle-extents.d.ts +33 -0
  141. package/dist/types/lib/ground/rectangle/rectangle-extents.d.ts.map +1 -0
  142. package/dist/types/lib/ground/rectangle/rectangle-grid.d.ts +76 -0
  143. package/dist/types/lib/ground/rectangle/rectangle-grid.d.ts.map +1 -0
  144. package/dist/types/lib/ground/rectangle/rectangle-helpers.d.ts +103 -0
  145. package/dist/types/lib/ground/rectangle/rectangle-helpers.d.ts.map +1 -0
  146. package/dist/types/lib/ground/rectangle/rectangle-options.d.ts +21 -0
  147. package/dist/types/lib/ground/rectangle/rectangle-options.d.ts.map +1 -0
  148. package/dist/types/lib/ground/rectangle/rectangle-radians.d.ts +51 -0
  149. package/dist/types/lib/ground/rectangle/rectangle-radians.d.ts.map +1 -0
  150. package/dist/types/lib/ground/rectangle/rectangle-shadow-volume.d.ts +28 -0
  151. package/dist/types/lib/ground/rectangle/rectangle-shadow-volume.d.ts.map +1 -0
  152. package/dist/types/lib/ground/terrain-heights.d.ts +65 -0
  153. package/dist/types/lib/ground/terrain-heights.d.ts.map +1 -0
  154. package/dist/types/lib/ground/terrain-log-depth.d.ts +32 -0
  155. package/dist/types/lib/ground/terrain-log-depth.d.ts.map +1 -0
  156. package/dist/types/lib/ground/text/index.d.ts +7 -0
  157. package/dist/types/lib/ground/text/index.d.ts.map +1 -0
  158. package/dist/types/lib/ground/text/text-canvas.d.ts +22 -0
  159. package/dist/types/lib/ground/text/text-canvas.d.ts.map +1 -0
  160. package/dist/types/lib/ground/text/text-color.d.ts +28 -0
  161. package/dist/types/lib/ground/text/text-color.d.ts.map +1 -0
  162. package/dist/types/lib/ground/text/text-construct-extruded.d.ts +27 -0
  163. package/dist/types/lib/ground/text/text-construct-extruded.d.ts.map +1 -0
  164. package/dist/types/lib/ground/text/text-defaults.d.ts +12 -0
  165. package/dist/types/lib/ground/text/text-defaults.d.ts.map +1 -0
  166. package/dist/types/lib/ground/text/text-extents.d.ts +19 -0
  167. package/dist/types/lib/ground/text/text-extents.d.ts.map +1 -0
  168. package/dist/types/lib/ground/text/text-layout.d.ts +18 -0
  169. package/dist/types/lib/ground/text/text-layout.d.ts.map +1 -0
  170. package/dist/types/lib/ground/text/text-options.d.ts +26 -0
  171. package/dist/types/lib/ground/text/text-options.d.ts.map +1 -0
  172. package/dist/types/lib/ground/text/text-placement.d.ts +34 -0
  173. package/dist/types/lib/ground/text/text-placement.d.ts.map +1 -0
  174. package/dist/types/lib/ground/text/text-primitive.d.ts +74 -0
  175. package/dist/types/lib/ground/text/text-primitive.d.ts.map +1 -0
  176. package/dist/types/lib/ground/text/text-shadow-volume.d.ts +21 -0
  177. package/dist/types/lib/ground/text/text-shadow-volume.d.ts.map +1 -0
  178. package/dist/types/lib/ground/text/text-types.d.ts +156 -0
  179. package/dist/types/lib/ground/text/text-types.d.ts.map +1 -0
  180. package/dist/types/lib/ground/types.d.ts +484 -0
  181. package/dist/types/lib/ground/types.d.ts.map +1 -0
  182. package/dist/types/lib/ground/validation.d.ts +8 -0
  183. package/dist/types/lib/ground/validation.d.ts.map +1 -0
  184. 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