@aura3d/math 4.0.3 → 4.0.4

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 (165) hide show
  1. package/dist/Box3.d.ts +50 -0
  2. package/dist/Box3.d.ts.map +1 -1
  3. package/dist/Box3.js +177 -6
  4. package/dist/Box3.js.map +1 -1
  5. package/dist/Capsule.d.ts +25 -0
  6. package/dist/Capsule.d.ts.map +1 -0
  7. package/dist/Capsule.js +54 -0
  8. package/dist/Capsule.js.map +1 -0
  9. package/dist/Color.d.ts +27 -0
  10. package/dist/Color.d.ts.map +1 -1
  11. package/dist/Color.js +87 -0
  12. package/dist/Color.js.map +1 -1
  13. package/dist/ConvexHull.d.ts +100 -0
  14. package/dist/ConvexHull.d.ts.map +1 -0
  15. package/dist/ConvexHull.js +578 -0
  16. package/dist/ConvexHull.js.map +1 -0
  17. package/dist/Curves.d.ts +59 -18
  18. package/dist/Curves.d.ts.map +1 -1
  19. package/dist/Curves.js +15 -73
  20. package/dist/Curves.js.map +1 -1
  21. package/dist/Cylindrical.d.ts +19 -0
  22. package/dist/Cylindrical.d.ts.map +1 -0
  23. package/dist/Cylindrical.js +40 -0
  24. package/dist/Cylindrical.js.map +1 -0
  25. package/dist/Euler.d.ts +24 -0
  26. package/dist/Euler.d.ts.map +1 -1
  27. package/dist/Euler.js +126 -2
  28. package/dist/Euler.js.map +1 -1
  29. package/dist/Frustum.d.ts +18 -0
  30. package/dist/Frustum.d.ts.map +1 -1
  31. package/dist/Frustum.js +62 -12
  32. package/dist/Frustum.js.map +1 -1
  33. package/dist/Line3.d.ts +38 -0
  34. package/dist/Line3.d.ts.map +1 -0
  35. package/dist/Line3.js +122 -0
  36. package/dist/Line3.js.map +1 -0
  37. package/dist/MathUtils.d.ts +37 -0
  38. package/dist/MathUtils.d.ts.map +1 -0
  39. package/dist/MathUtils.js +105 -0
  40. package/dist/MathUtils.js.map +1 -0
  41. package/dist/Matrix3.d.ts +23 -2
  42. package/dist/Matrix3.d.ts.map +1 -1
  43. package/dist/Matrix3.js +90 -0
  44. package/dist/Matrix3.js.map +1 -1
  45. package/dist/Matrix4.d.ts +3 -0
  46. package/dist/Matrix4.d.ts.map +1 -1
  47. package/dist/Matrix4.js +17 -0
  48. package/dist/Matrix4.js.map +1 -1
  49. package/dist/OBB.d.ts +44 -0
  50. package/dist/OBB.d.ts.map +1 -0
  51. package/dist/OBB.js +214 -0
  52. package/dist/OBB.js.map +1 -0
  53. package/dist/Octree.d.ts +72 -0
  54. package/dist/Octree.d.ts.map +1 -0
  55. package/dist/Octree.js +385 -0
  56. package/dist/Octree.js.map +1 -0
  57. package/dist/Plane.d.ts +42 -0
  58. package/dist/Plane.d.ts.map +1 -1
  59. package/dist/Plane.js +79 -3
  60. package/dist/Plane.js.map +1 -1
  61. package/dist/Quaternion.d.ts +6 -1
  62. package/dist/Quaternion.d.ts.map +1 -1
  63. package/dist/Quaternion.js +28 -3
  64. package/dist/Quaternion.js.map +1 -1
  65. package/dist/Ray.d.ts +42 -2
  66. package/dist/Ray.d.ts.map +1 -1
  67. package/dist/Ray.js +202 -9
  68. package/dist/Ray.js.map +1 -1
  69. package/dist/ShapeUtils.d.ts +28 -0
  70. package/dist/ShapeUtils.d.ts.map +1 -0
  71. package/dist/ShapeUtils.js +551 -0
  72. package/dist/ShapeUtils.js.map +1 -0
  73. package/dist/Sphere.d.ts +32 -0
  74. package/dist/Sphere.d.ts.map +1 -1
  75. package/dist/Sphere.js +122 -4
  76. package/dist/Sphere.js.map +1 -1
  77. package/dist/Spherical.d.ts +21 -0
  78. package/dist/Spherical.d.ts.map +1 -0
  79. package/dist/Spherical.js +50 -0
  80. package/dist/Spherical.js.map +1 -0
  81. package/dist/SphericalHarmonics3.d.ts +35 -0
  82. package/dist/SphericalHarmonics3.d.ts.map +1 -0
  83. package/dist/SphericalHarmonics3.js +115 -0
  84. package/dist/SphericalHarmonics3.js.map +1 -0
  85. package/dist/Triangle.d.ts +45 -0
  86. package/dist/Triangle.d.ts.map +1 -0
  87. package/dist/Triangle.js +160 -0
  88. package/dist/Triangle.js.map +1 -0
  89. package/dist/Vector2.d.ts +7 -0
  90. package/dist/Vector2.d.ts.map +1 -1
  91. package/dist/Vector2.js +17 -0
  92. package/dist/Vector2.js.map +1 -1
  93. package/dist/Vector3.d.ts +16 -0
  94. package/dist/Vector3.d.ts.map +1 -1
  95. package/dist/Vector3.js +35 -0
  96. package/dist/Vector3.js.map +1 -1
  97. package/dist/curves/ArcCurve.d.ts +7 -0
  98. package/dist/curves/ArcCurve.d.ts.map +1 -0
  99. package/dist/curves/ArcCurve.js +9 -0
  100. package/dist/curves/ArcCurve.js.map +1 -0
  101. package/dist/curves/CatmullRomCurve3.d.ts +39 -0
  102. package/dist/curves/CatmullRomCurve3.d.ts.map +1 -0
  103. package/dist/curves/CatmullRomCurve3.js +176 -0
  104. package/dist/curves/CatmullRomCurve3.js.map +1 -0
  105. package/dist/curves/ClampedCatmullRomCurve3.d.ts +26 -0
  106. package/dist/curves/ClampedCatmullRomCurve3.d.ts.map +1 -0
  107. package/dist/curves/ClampedCatmullRomCurve3.js +48 -0
  108. package/dist/curves/ClampedCatmullRomCurve3.js.map +1 -0
  109. package/dist/curves/CubicBezierCurve.d.ts +14 -0
  110. package/dist/curves/CubicBezierCurve.d.ts.map +1 -0
  111. package/dist/curves/CubicBezierCurve.js +25 -0
  112. package/dist/curves/CubicBezierCurve.js.map +1 -0
  113. package/dist/curves/CubicBezierCurve3.d.ts +14 -0
  114. package/dist/curves/CubicBezierCurve3.d.ts.map +1 -0
  115. package/dist/curves/CubicBezierCurve3.js +25 -0
  116. package/dist/curves/CubicBezierCurve3.js.map +1 -0
  117. package/dist/curves/CurveBase.d.ts +49 -0
  118. package/dist/curves/CurveBase.d.ts.map +1 -0
  119. package/dist/curves/CurveBase.js +199 -0
  120. package/dist/curves/CurveBase.js.map +1 -0
  121. package/dist/curves/CurvePath.d.ts +34 -0
  122. package/dist/curves/CurvePath.d.ts.map +1 -0
  123. package/dist/curves/CurvePath.js +135 -0
  124. package/dist/curves/CurvePath.js.map +1 -0
  125. package/dist/curves/EllipseCurve.d.ts +18 -0
  126. package/dist/curves/EllipseCurve.d.ts.map +1 -0
  127. package/dist/curves/EllipseCurve.js +67 -0
  128. package/dist/curves/EllipseCurve.js.map +1 -0
  129. package/dist/curves/Interpolations.d.ts +9 -0
  130. package/dist/curves/Interpolations.d.ts.map +1 -0
  131. package/dist/curves/Interpolations.js +21 -0
  132. package/dist/curves/Interpolations.js.map +1 -0
  133. package/dist/curves/LineCurve.d.ts +16 -0
  134. package/dist/curves/LineCurve.d.ts.map +1 -0
  135. package/dist/curves/LineCurve.js +32 -0
  136. package/dist/curves/LineCurve.js.map +1 -0
  137. package/dist/curves/LineCurve3.d.ts +16 -0
  138. package/dist/curves/LineCurve3.d.ts.map +1 -0
  139. package/dist/curves/LineCurve3.js +32 -0
  140. package/dist/curves/LineCurve3.js.map +1 -0
  141. package/dist/curves/Path.d.ts +23 -0
  142. package/dist/curves/Path.d.ts.map +1 -0
  143. package/dist/curves/Path.js +94 -0
  144. package/dist/curves/Path.js.map +1 -0
  145. package/dist/curves/QuadraticBezierCurve.d.ts +13 -0
  146. package/dist/curves/QuadraticBezierCurve.d.ts.map +1 -0
  147. package/dist/curves/QuadraticBezierCurve.js +23 -0
  148. package/dist/curves/QuadraticBezierCurve.js.map +1 -0
  149. package/dist/curves/QuadraticBezierCurve3.d.ts +13 -0
  150. package/dist/curves/QuadraticBezierCurve3.d.ts.map +1 -0
  151. package/dist/curves/QuadraticBezierCurve3.js +23 -0
  152. package/dist/curves/QuadraticBezierCurve3.js.map +1 -0
  153. package/dist/curves/Shape.d.ts +15 -0
  154. package/dist/curves/Shape.d.ts.map +1 -0
  155. package/dist/curves/Shape.js +26 -0
  156. package/dist/curves/Shape.js.map +1 -0
  157. package/dist/curves/SplineCurve.d.ts +11 -0
  158. package/dist/curves/SplineCurve.d.ts.map +1 -0
  159. package/dist/curves/SplineCurve.js +27 -0
  160. package/dist/curves/SplineCurve.js.map +1 -0
  161. package/dist/index.d.ts +12 -0
  162. package/dist/index.d.ts.map +1 -1
  163. package/dist/index.js +16 -0
  164. package/dist/index.js.map +1 -1
  165. package/package.json +1 -1
@@ -0,0 +1,551 @@
1
+ function createNode(i, x, y) {
2
+ return { i, x, y, prev: null, next: null, z: 0, prevZ: null, nextZ: null, steiner: false };
3
+ }
4
+ function insertNode(i, x, y, last) {
5
+ const p = createNode(i, x, y);
6
+ if (!last) {
7
+ p.prev = p;
8
+ p.next = p;
9
+ }
10
+ else {
11
+ p.next = last.next;
12
+ p.prev = last;
13
+ last.next.prev = p;
14
+ last.next = p;
15
+ }
16
+ return p;
17
+ }
18
+ function removeNode(p) {
19
+ p.next.prev = p.prev;
20
+ p.prev.next = p.next;
21
+ if (p.prevZ)
22
+ p.prevZ.nextZ = p.nextZ;
23
+ if (p.nextZ)
24
+ p.nextZ.prevZ = p.prevZ;
25
+ }
26
+ function signedArea(data, start, end, dim) {
27
+ let sum = 0;
28
+ for (let i = start, j = end - dim; i < end; i += dim) {
29
+ sum += (data[j] - data[i]) * (data[i + 1] + data[j + 1]);
30
+ j = i;
31
+ }
32
+ return sum;
33
+ }
34
+ function linkedList(data, start, end, dim, clockwise) {
35
+ let last = null;
36
+ if (clockwise === signedArea(data, start, end, dim) > 0) {
37
+ for (let i = start; i < end; i += dim)
38
+ last = insertNode((i / dim) | 0, data[i], data[i + 1], last);
39
+ }
40
+ else {
41
+ for (let i = end - dim; i >= start; i -= dim)
42
+ last = insertNode((i / dim) | 0, data[i], data[i + 1], last);
43
+ }
44
+ if (last && equals(last, last.next)) {
45
+ removeNode(last);
46
+ last = last.next;
47
+ }
48
+ return last;
49
+ }
50
+ function filterPoints(start, end) {
51
+ if (!start)
52
+ return start;
53
+ if (!end)
54
+ end = start;
55
+ let p = start;
56
+ let again;
57
+ do {
58
+ again = false;
59
+ if (!p.steiner && (equals(p, p.next) || area(p.prev, p, p.next) === 0)) {
60
+ removeNode(p);
61
+ p = end = p.prev;
62
+ if (p === p.next)
63
+ break;
64
+ again = true;
65
+ }
66
+ else {
67
+ p = p.next;
68
+ }
69
+ } while (again || p !== end);
70
+ return end;
71
+ }
72
+ function earcutLinked(ear, triangles, dim, minX, minY, invSize, pass) {
73
+ if (!ear)
74
+ return;
75
+ if (!pass && invSize)
76
+ indexCurve(ear, minX, minY, invSize);
77
+ let node = ear;
78
+ let stop = node;
79
+ while (node.prev !== node.next) {
80
+ const prev = node.prev;
81
+ const next = node.next;
82
+ if (invSize ? isEarHashed(node, minX, minY, invSize) : isEar(node)) {
83
+ triangles.push(prev.i, node.i, next.i);
84
+ removeNode(node);
85
+ node = next.next;
86
+ stop = next.next;
87
+ continue;
88
+ }
89
+ node = next;
90
+ if (node === stop) {
91
+ if (!pass) {
92
+ earcutLinked(filterPoints(node), triangles, dim, minX, minY, invSize, 1);
93
+ }
94
+ else if (pass === 1) {
95
+ earcutLinked(cureLocalIntersections(filterPoints(node), triangles), triangles, dim, minX, minY, invSize, 2);
96
+ }
97
+ else if (pass === 2) {
98
+ splitEarcut(node, triangles, dim, minX, minY, invSize);
99
+ }
100
+ break;
101
+ }
102
+ }
103
+ }
104
+ function isEar(ear) {
105
+ const a = ear.prev;
106
+ const b = ear;
107
+ const c = ear.next;
108
+ if (area(a, b, c) >= 0)
109
+ return false;
110
+ const ax = a.x, bx = b.x, cx = c.x, ay = a.y, by = b.y, cy = c.y;
111
+ const x0 = Math.min(ax, bx, cx);
112
+ const y0 = Math.min(ay, by, cy);
113
+ const x1 = Math.max(ax, bx, cx);
114
+ const y1 = Math.max(ay, by, cy);
115
+ let p = c.next;
116
+ while (p !== a) {
117
+ if (p.x >= x0 && p.x <= x1 && p.y >= y0 && p.y <= y1 &&
118
+ pointInTriangleExceptFirst(ax, ay, bx, by, cx, cy, p.x, p.y) &&
119
+ area(p.prev, p, p.next) >= 0)
120
+ return false;
121
+ p = p.next;
122
+ }
123
+ return true;
124
+ }
125
+ function isEarHashed(ear, minX, minY, invSize) {
126
+ const a = ear.prev;
127
+ const b = ear;
128
+ const c = ear.next;
129
+ if (area(a, b, c) >= 0)
130
+ return false;
131
+ const ax = a.x, bx = b.x, cx = c.x, ay = a.y, by = b.y, cy = c.y;
132
+ const x0 = Math.min(ax, bx, cx);
133
+ const y0 = Math.min(ay, by, cy);
134
+ const x1 = Math.max(ax, bx, cx);
135
+ const y1 = Math.max(ay, by, cy);
136
+ const minZ = zOrder(x0, y0, minX, minY, invSize);
137
+ const maxZ = zOrder(x1, y1, minX, minY, invSize);
138
+ let p = ear.prevZ;
139
+ let n = ear.nextZ;
140
+ while (p && p.z >= minZ && n && n.z <= maxZ) {
141
+ if (p.x >= x0 && p.x <= x1 && p.y >= y0 && p.y <= y1 && p !== a && p !== c &&
142
+ pointInTriangleExceptFirst(ax, ay, bx, by, cx, cy, p.x, p.y) &&
143
+ area(p.prev, p, p.next) >= 0)
144
+ return false;
145
+ p = p.prevZ;
146
+ if (n.x >= x0 && n.x <= x1 && n.y >= y0 && n.y <= y1 && n !== a && n !== c &&
147
+ pointInTriangleExceptFirst(ax, ay, bx, by, cx, cy, n.x, n.y) &&
148
+ area(n.prev, n, n.next) >= 0)
149
+ return false;
150
+ n = n.nextZ;
151
+ }
152
+ while (p && p.z >= minZ) {
153
+ if (p.x >= x0 && p.x <= x1 && p.y >= y0 && p.y <= y1 && p !== a && p !== c &&
154
+ pointInTriangleExceptFirst(ax, ay, bx, by, cx, cy, p.x, p.y) &&
155
+ area(p.prev, p, p.next) >= 0)
156
+ return false;
157
+ p = p.prevZ;
158
+ }
159
+ while (n && n.z <= maxZ) {
160
+ if (n.x >= x0 && n.x <= x1 && n.y >= y0 && n.y <= y1 && n !== a && n !== c &&
161
+ pointInTriangleExceptFirst(ax, ay, bx, by, cx, cy, n.x, n.y) &&
162
+ area(n.prev, n, n.next) >= 0)
163
+ return false;
164
+ n = n.nextZ;
165
+ }
166
+ return true;
167
+ }
168
+ function cureLocalIntersections(start, triangles) {
169
+ let p = start;
170
+ do {
171
+ const a = p.prev;
172
+ const b = p.next.next;
173
+ if (!equals(a, b) && intersects(a, p, p.next, b) && locallyInside(a, b) && locallyInside(b, a)) {
174
+ triangles.push(a.i, p.i, b.i);
175
+ removeNode(p);
176
+ removeNode(p.next);
177
+ p = start = b;
178
+ }
179
+ p = p.next;
180
+ } while (p !== start);
181
+ return filterPoints(p);
182
+ }
183
+ function splitEarcut(start, triangles, dim, minX, minY, invSize) {
184
+ let a = start;
185
+ do {
186
+ let b = a.next.next;
187
+ while (b !== a.prev) {
188
+ if (a.i !== b.i && isValidDiagonal(a, b)) {
189
+ let c = splitPolygon(a, b);
190
+ a = filterPoints(a, a.next);
191
+ c = filterPoints(c, c.next);
192
+ earcutLinked(a, triangles, dim, minX, minY, invSize, 0);
193
+ earcutLinked(c, triangles, dim, minX, minY, invSize, 0);
194
+ return;
195
+ }
196
+ b = b.next;
197
+ }
198
+ a = a.next;
199
+ } while (a !== start);
200
+ }
201
+ function eliminateHoles(data, holeIndices, outerNode, dim) {
202
+ const queue = [];
203
+ for (let i = 0, len = holeIndices.length; i < len; i++) {
204
+ const start = holeIndices[i] * dim;
205
+ const end = i < len - 1 ? holeIndices[i + 1] * dim : data.length;
206
+ const list = linkedList(data, start, end, dim, false);
207
+ if (list === list.next)
208
+ list.steiner = true;
209
+ queue.push(getLeftmost(list));
210
+ }
211
+ queue.sort(compareXYSlope);
212
+ for (const hole of queue) {
213
+ outerNode = eliminateHole(hole, outerNode);
214
+ }
215
+ return outerNode;
216
+ }
217
+ function compareXYSlope(a, b) {
218
+ let result = a.x - b.x;
219
+ if (result === 0) {
220
+ result = a.y - b.y;
221
+ if (result === 0) {
222
+ const aSlope = (a.next.y - a.y) / (a.next.x - a.x);
223
+ const bSlope = (b.next.y - b.y) / (b.next.x - b.x);
224
+ result = aSlope - bSlope;
225
+ }
226
+ }
227
+ return result;
228
+ }
229
+ function eliminateHole(hole, outerNode) {
230
+ const bridge = findHoleBridge(hole, outerNode);
231
+ if (!bridge)
232
+ return outerNode;
233
+ const bridgeReverse = splitPolygon(bridge, hole);
234
+ filterPoints(bridgeReverse, bridgeReverse.next);
235
+ return filterPoints(bridge, bridge.next);
236
+ }
237
+ function findHoleBridge(hole, outerNode) {
238
+ let p = outerNode;
239
+ const hx = hole.x;
240
+ const hy = hole.y;
241
+ let qx = -Infinity;
242
+ let m = null;
243
+ if (equals(hole, p))
244
+ return p;
245
+ do {
246
+ if (equals(hole, p.next))
247
+ return p.next;
248
+ else if (hy <= p.y && hy >= p.next.y && p.next.y !== p.y) {
249
+ const x = p.x + ((hy - p.y) * (p.next.x - p.x)) / (p.next.y - p.y);
250
+ if (x <= hx && x > qx) {
251
+ qx = x;
252
+ m = p.x < p.next.x ? p : p.next;
253
+ if (x === hx)
254
+ return m;
255
+ }
256
+ }
257
+ p = p.next;
258
+ } while (p !== outerNode);
259
+ if (!m)
260
+ return null;
261
+ const stop = m;
262
+ const mx = m.x;
263
+ const my = m.y;
264
+ let tanMin = Infinity;
265
+ p = m;
266
+ do {
267
+ if (hx >= p.x && p.x >= mx && hx !== p.x &&
268
+ pointInTriangle(hy < my ? hx : qx, hy, mx, my, hy < my ? qx : hx, hy, p.x, p.y)) {
269
+ const tan = Math.abs(hy - p.y) / (hx - p.x);
270
+ if (locallyInside(p, hole) &&
271
+ (tan < tanMin || (tan === tanMin && (p.x > m.x || (p.x === m.x && sectorContainsSector(m, p)))))) {
272
+ m = p;
273
+ tanMin = tan;
274
+ }
275
+ }
276
+ p = p.next;
277
+ } while (p !== stop);
278
+ return m;
279
+ }
280
+ function sectorContainsSector(m, p) {
281
+ return area(m.prev, m, p.prev) < 0 && area(p.next, m, m.next) < 0;
282
+ }
283
+ function indexCurve(start, minX, minY, invSize) {
284
+ let p = start;
285
+ do {
286
+ if (p.z === 0)
287
+ p.z = zOrder(p.x, p.y, minX, minY, invSize);
288
+ p.prevZ = p.prev;
289
+ p.nextZ = p.next;
290
+ p = p.next;
291
+ } while (p !== start);
292
+ p.prevZ.nextZ = null;
293
+ p.prevZ = null;
294
+ sortLinked(p);
295
+ }
296
+ function sortLinked(list) {
297
+ let numMerges;
298
+ let inSize = 1;
299
+ do {
300
+ let p = list;
301
+ let e;
302
+ let l = null;
303
+ let tail = null;
304
+ numMerges = 0;
305
+ while (p) {
306
+ numMerges++;
307
+ let q = p;
308
+ let pSize = 0;
309
+ for (let i = 0; i < inSize; i++) {
310
+ pSize++;
311
+ q = q.nextZ;
312
+ if (!q)
313
+ break;
314
+ }
315
+ let qSize = inSize;
316
+ while (pSize > 0 || (qSize > 0 && q)) {
317
+ if (pSize !== 0 && (qSize === 0 || !q || p.z <= q.z)) {
318
+ e = p;
319
+ p = p.nextZ;
320
+ pSize--;
321
+ }
322
+ else {
323
+ e = q;
324
+ q = q.nextZ;
325
+ qSize--;
326
+ }
327
+ if (tail)
328
+ tail.nextZ = e;
329
+ else
330
+ l = e;
331
+ e.prevZ = tail;
332
+ tail = e;
333
+ }
334
+ p = q;
335
+ }
336
+ tail.nextZ = null;
337
+ inSize *= 2;
338
+ } while (numMerges > 1);
339
+ }
340
+ function zOrder(xIn, yIn, minX, minY, invSize) {
341
+ let x = ((xIn - minX) * invSize) | 0;
342
+ let y = ((yIn - minY) * invSize) | 0;
343
+ x = (x | (x << 8)) & 0x00ff00ff;
344
+ x = (x | (x << 4)) & 0x0f0f0f0f;
345
+ x = (x | (x << 2)) & 0x33333333;
346
+ x = (x | (x << 1)) & 0x55555555;
347
+ y = (y | (y << 8)) & 0x00ff00ff;
348
+ y = (y | (y << 4)) & 0x0f0f0f0f;
349
+ y = (y | (y << 2)) & 0x33333333;
350
+ y = (y | (y << 1)) & 0x55555555;
351
+ return x | (y << 1);
352
+ }
353
+ function getLeftmost(start) {
354
+ let p = start;
355
+ let leftmost = start;
356
+ do {
357
+ if (p.x < leftmost.x || (p.x === leftmost.x && p.y < leftmost.y))
358
+ leftmost = p;
359
+ p = p.next;
360
+ } while (p !== start);
361
+ return leftmost;
362
+ }
363
+ function pointInTriangle(ax, ay, bx, by, cx, cy, px, py) {
364
+ return ((cx - px) * (ay - py) >= (ax - px) * (cy - py) &&
365
+ (ax - px) * (by - py) >= (bx - px) * (ay - py) &&
366
+ (bx - px) * (cy - py) >= (cx - px) * (by - py));
367
+ }
368
+ function pointInTriangleExceptFirst(ax, ay, bx, by, cx, cy, px, py) {
369
+ return !(ax === px && ay === py) && pointInTriangle(ax, ay, bx, by, cx, cy, px, py);
370
+ }
371
+ function isValidDiagonal(a, b) {
372
+ return (a.next.i !== b.i && a.prev.i !== b.i && !intersectsPolygon(a, b) &&
373
+ ((locallyInside(a, b) && locallyInside(b, a) && middleInside(a, b) &&
374
+ (area(a.prev, a, b.prev) !== 0 || area(a, b.prev, b) !== 0)) ||
375
+ (equals(a, b) && area(a.prev, a, a.next) > 0 && area(b.prev, b, b.next) > 0)));
376
+ }
377
+ function area(p, q, r) {
378
+ return (q.y - p.y) * (r.x - q.x) - (q.x - p.x) * (r.y - q.y);
379
+ }
380
+ function equals(p1, p2) {
381
+ return p1.x === p2.x && p1.y === p2.y;
382
+ }
383
+ function intersects(p1, q1, p2, q2) {
384
+ const o1 = sign(area(p1, q1, p2));
385
+ const o2 = sign(area(p1, q1, q2));
386
+ const o3 = sign(area(p2, q2, p1));
387
+ const o4 = sign(area(p2, q2, q1));
388
+ if (o1 !== o2 && o3 !== o4)
389
+ return true;
390
+ if (o1 === 0 && onSegment(p1, p2, q1))
391
+ return true;
392
+ if (o2 === 0 && onSegment(p1, q2, q1))
393
+ return true;
394
+ if (o3 === 0 && onSegment(p2, p1, q2))
395
+ return true;
396
+ if (o4 === 0 && onSegment(p2, q1, q2))
397
+ return true;
398
+ return false;
399
+ }
400
+ function onSegment(p, q, r) {
401
+ return (q.x <= Math.max(p.x, r.x) && q.x >= Math.min(p.x, r.x) &&
402
+ q.y <= Math.max(p.y, r.y) && q.y >= Math.min(p.y, r.y));
403
+ }
404
+ function sign(num) {
405
+ return num > 0 ? 1 : num < 0 ? -1 : 0;
406
+ }
407
+ function intersectsPolygon(a, b) {
408
+ let p = a;
409
+ do {
410
+ if (p.i !== a.i && p.next.i !== a.i && p.i !== b.i && p.next.i !== b.i &&
411
+ intersects(p, p.next, a, b))
412
+ return true;
413
+ p = p.next;
414
+ } while (p !== a);
415
+ return false;
416
+ }
417
+ function locallyInside(a, b) {
418
+ return area(a.prev, a, a.next) < 0
419
+ ? area(a, b, a.next) >= 0 && area(a, a.prev, b) >= 0
420
+ : area(a, b, a.prev) < 0 || area(a, a.next, b) < 0;
421
+ }
422
+ function middleInside(a, b) {
423
+ let p = a;
424
+ let inside = false;
425
+ const px = (a.x + b.x) / 2;
426
+ const py = (a.y + b.y) / 2;
427
+ do {
428
+ if ((p.y > py) !== (p.next.y > py) && p.next.y !== p.y &&
429
+ px < ((p.next.x - p.x) * (py - p.y)) / (p.next.y - p.y) + p.x) {
430
+ inside = !inside;
431
+ }
432
+ p = p.next;
433
+ } while (p !== a);
434
+ return inside;
435
+ }
436
+ function splitPolygon(a, b) {
437
+ const a2 = createNode(a.i, a.x, a.y);
438
+ const b2 = createNode(b.i, b.x, b.y);
439
+ const an = a.next;
440
+ const bp = b.prev;
441
+ a.next = b;
442
+ b.prev = a;
443
+ a2.next = an;
444
+ an.prev = a2;
445
+ b2.next = a2;
446
+ a2.prev = b2;
447
+ bp.next = b2;
448
+ b2.prev = bp;
449
+ return b2;
450
+ }
451
+ /**
452
+ * Triangulates a polygon defined by flattened 2D coordinates —
453
+ * three.js `Earcut.triangulate` / mapbox earcut parity.
454
+ *
455
+ * @param data Flattened `[x0,y0, x1,y1, ...]` vertex coordinates.
456
+ * @param holeIndices Vertex-start indices of each hole ring (or `null`).
457
+ * @param dim Coordinates per vertex (default 2).
458
+ * @returns Flat triangle index list (3 indices per face).
459
+ */
460
+ export function earcut(data, holeIndices, dim = 2) {
461
+ const hasHoles = holeIndices !== null && holeIndices !== undefined && holeIndices.length > 0;
462
+ const outerLen = hasHoles ? holeIndices[0] * dim : data.length;
463
+ let outerNode = linkedList(data, 0, outerLen, dim, true);
464
+ const triangles = [];
465
+ if (!outerNode || outerNode.next === outerNode.prev)
466
+ return triangles;
467
+ let minX = 0;
468
+ let minY = 0;
469
+ let invSize = 0;
470
+ if (hasHoles)
471
+ outerNode = eliminateHoles(data, holeIndices, outerNode, dim);
472
+ if (data.length > 80 * dim) {
473
+ minX = data[0];
474
+ minY = data[1];
475
+ let maxX = minX;
476
+ let maxY = minY;
477
+ for (let i = dim; i < outerLen; i += dim) {
478
+ const x = data[i];
479
+ const y = data[i + 1];
480
+ if (x < minX)
481
+ minX = x;
482
+ if (y < minY)
483
+ minY = y;
484
+ if (x > maxX)
485
+ maxX = x;
486
+ if (y > maxY)
487
+ maxY = y;
488
+ }
489
+ invSize = Math.max(maxX - minX, maxY - minY);
490
+ invSize = invSize !== 0 ? 32767 / invSize : 0;
491
+ }
492
+ earcutLinked(outerNode, triangles, dim, minX, minY, invSize, 0);
493
+ return triangles;
494
+ }
495
+ /** Signed 2D polygon area (three.js `ShapeUtils.area`). */
496
+ export function shapeArea(contour) {
497
+ const n = contour.length;
498
+ let a = 0.0;
499
+ for (let p = n - 1, q = 0; q < n; p = q++) {
500
+ a += contour[p].x * contour[q].y - contour[q].x * contour[p].y;
501
+ }
502
+ return a * 0.5;
503
+ }
504
+ /** `true` when the polygon winding is clockwise (three.js `isClockWise`). */
505
+ export function isClockWise(pts) {
506
+ return shapeArea(pts) < 0;
507
+ }
508
+ function removeDupEndPts(points) {
509
+ const l = points.length;
510
+ if (l > 2 && points[l - 1].equals(points[0])) {
511
+ points.pop();
512
+ }
513
+ }
514
+ function addContour(vertices, contour) {
515
+ for (const p of contour) {
516
+ vertices.push(p.x, p.y);
517
+ }
518
+ }
519
+ /**
520
+ * Triangulates a polygon outline with holes —
521
+ * three.js `ShapeUtils.triangulateShape` parity.
522
+ * @returns Faces as `[a,b,c]` vertex-index triples.
523
+ */
524
+ export function triangulateShape(contour, holes) {
525
+ const vertices = [];
526
+ const holeIndices = [];
527
+ const faces = [];
528
+ const contourCopy = [...contour];
529
+ removeDupEndPts(contourCopy);
530
+ addContour(vertices, contourCopy);
531
+ let holeIndex = contourCopy.length;
532
+ const holeCopies = holes.map((h) => [...h]);
533
+ holeCopies.forEach(removeDupEndPts);
534
+ for (let i = 0; i < holeCopies.length; i++) {
535
+ holeIndices.push(holeIndex);
536
+ holeIndex += holeCopies[i].length;
537
+ addContour(vertices, holeCopies[i]);
538
+ }
539
+ const triangles = earcut(vertices, holeIndices);
540
+ for (let i = 0; i < triangles.length; i += 3) {
541
+ faces.push([triangles[i], triangles[i + 1], triangles[i + 2]]);
542
+ }
543
+ return faces;
544
+ }
545
+ /** three.js-compatible grouped surface (matches `ShapeUtils` usage style). */
546
+ export const ShapeUtils = {
547
+ area: shapeArea,
548
+ isClockWise,
549
+ triangulateShape
550
+ };
551
+ //# sourceMappingURL=ShapeUtils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ShapeUtils.js","sourceRoot":"","sources":["../../../../packages/math/src/ShapeUtils.ts"],"names":[],"mappings":"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"}
package/dist/Sphere.d.ts CHANGED
@@ -1,9 +1,41 @@
1
+ import { Box3 } from "./Box3.js";
1
2
  import { Vector3 } from "./Vector3.js";
3
+ import type { Matrix4 } from "./Matrix4.js";
4
+ import type { Plane } from "./Plane.js";
5
+ /**
6
+ * Bounding sphere — three.js `Sphere` parity. A negative `radius` denotes an
7
+ * "empty" sphere (three uses `radius = -1` as its empty sentinel).
8
+ */
2
9
  export declare class Sphere {
3
10
  readonly center: Vector3;
4
11
  readonly radius: number;
5
12
  constructor(center?: Vector3, radius?: number);
13
+ set(center: Vector3, radius: number): Sphere;
14
+ clone(): Sphere;
15
+ /** three.js `Sphere.isEmpty` — `true` for negative radius. */
16
+ isEmpty(): boolean;
17
+ makeEmpty(): Sphere;
18
+ /** three.js `Sphere.setFromPoints` — box first, then tighten around center. */
19
+ static setFromPoints(points: readonly Vector3[], optionalCenter?: Vector3): Sphere;
20
+ static setFromBox3(box: Box3): Sphere;
6
21
  containsPoint(point: Vector3): boolean;
22
+ distanceToPoint(point: Vector3): number;
7
23
  intersectsSphere(other: Sphere): boolean;
24
+ intersectsBox(box: Box3): boolean;
25
+ intersectsPlane(plane: Plane): boolean;
26
+ /**
27
+ * Clamps `point` into the sphere (three.js `Sphere.clampPoint`) — inside
28
+ * points are returned unchanged; outside points snap onto the surface.
29
+ */
30
+ clampPoint(point: Vector3): Vector3;
31
+ /** three.js `Sphere.getBoundingBox` — empty sphere → empty box. */
32
+ getBoundingBox(): Box3;
33
+ applyMatrix4(matrix: Matrix4): Sphere;
34
+ translate(offset: Vector3): Sphere;
35
+ /** three.js `Sphere.expandByPoint` — grows the minimal enclosing sphere. */
36
+ expandByPoint(point: Vector3): Sphere;
37
+ /** three.js `Sphere.union`. */
38
+ union(sphere: Sphere): Sphere;
39
+ equals(sphere: Sphere, epsilon?: number): boolean;
8
40
  }
9
41
  //# sourceMappingURL=Sphere.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Sphere.d.ts","sourceRoot":"","sources":["../../../../packages/math/src/Sphere.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAEvC,qBAAa,MAAM;IAEf,QAAQ,CAAC,MAAM;IACf,QAAQ,CAAC,MAAM;gBADN,MAAM,UAAuB,EAC7B,MAAM,SAAI;IAKrB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO;IAItC,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;CAGzC"}
1
+ {"version":3,"file":"Sphere.d.ts","sourceRoot":"","sources":["../../../../packages/math/src/Sphere.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAExC;;;GAGG;AACH,qBAAa,MAAM;IAEf,QAAQ,CAAC,MAAM;IACf,QAAQ,CAAC,MAAM;gBADN,MAAM,UAAuB,EAC7B,MAAM,SAAI;IAKrB,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM;IAI5C,KAAK,IAAI,MAAM;IAIf,8DAA8D;IAC9D,OAAO,IAAI,OAAO;IAIlB,SAAS,IAAI,MAAM;IAInB,+EAA+E;IAC/E,MAAM,CAAC,aAAa,CAAC,MAAM,EAAE,SAAS,OAAO,EAAE,EAAE,cAAc,CAAC,EAAE,OAAO,GAAG,MAAM;IAyBlF,MAAM,CAAC,WAAW,CAAC,GAAG,EAAE,IAAI,GAAG,MAAM;IAIrC,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO;IAItC,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM;IAIvC,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;IAKxC,aAAa,CAAC,GAAG,EAAE,IAAI,GAAG,OAAO;IAIjC,eAAe,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO;IAItC;;;OAGG;IACH,UAAU,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO;IASnC,mEAAmE;IACnE,cAAc,IAAI,IAAI;IAMtB,YAAY,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM;IAOrC,SAAS,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM;IAIlC,4EAA4E;IAC5E,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM;IAYrC,+BAA+B;IAC/B,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;IAY7B,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,SAAI,GAAG,OAAO;CAG7C"}