@aura3d/math 4.0.2 → 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
@@ -32,9 +32,11 @@ export class Quaternion {
32
32
  const cross = vFrom.cross(vTo);
33
33
  return new Quaternion(cross.x, cross.y, cross.z, 1 + dot).normalize();
34
34
  }
35
+ /**
36
+ * Quaternion for the given intrinsic Euler rotations, applied in `order`
37
+ * (all six three.js orders — same formulas as `Quaternion.setFromEuler`).
38
+ */
35
39
  static fromEuler(x, y, z, order = "XYZ") {
36
- if (order !== "XYZ")
37
- throw new RangeError(`Unsupported Euler order: ${order}`);
38
40
  if (![x, y, z].every(Number.isFinite))
39
41
  throw new RangeError("Euler angles must be finite.");
40
42
  const c1 = Math.cos(x / 2);
@@ -43,7 +45,30 @@ export class Quaternion {
43
45
  const s1 = Math.sin(x / 2);
44
46
  const s2 = Math.sin(y / 2);
45
47
  const s3 = Math.sin(z / 2);
46
- return new Quaternion(s1 * c2 * c3 + c1 * s2 * s3, c1 * s2 * c3 - s1 * c2 * s3, c1 * c2 * s3 + s1 * s2 * c3, c1 * c2 * c3 - s1 * s2 * s3).normalize();
48
+ let q;
49
+ switch (order) {
50
+ case "XYZ":
51
+ q = new Quaternion(s1 * c2 * c3 + c1 * s2 * s3, c1 * s2 * c3 - s1 * c2 * s3, c1 * c2 * s3 + s1 * s2 * c3, c1 * c2 * c3 - s1 * s2 * s3);
52
+ break;
53
+ case "YXZ":
54
+ q = new Quaternion(s1 * c2 * c3 + c1 * s2 * s3, c1 * s2 * c3 - s1 * c2 * s3, c1 * c2 * s3 - s1 * s2 * c3, c1 * c2 * c3 + s1 * s2 * s3);
55
+ break;
56
+ case "ZXY":
57
+ q = new Quaternion(s1 * c2 * c3 - c1 * s2 * s3, c1 * s2 * c3 + s1 * c2 * s3, c1 * c2 * s3 + s1 * s2 * c3, c1 * c2 * c3 - s1 * s2 * s3);
58
+ break;
59
+ case "ZYX":
60
+ q = new Quaternion(s1 * c2 * c3 - c1 * s2 * s3, c1 * s2 * c3 + s1 * c2 * s3, c1 * c2 * s3 - s1 * s2 * c3, c1 * c2 * c3 + s1 * s2 * s3);
61
+ break;
62
+ case "YZX":
63
+ q = new Quaternion(s1 * c2 * c3 + c1 * s2 * s3, c1 * s2 * c3 + s1 * c2 * s3, c1 * c2 * s3 - s1 * s2 * c3, c1 * c2 * c3 - s1 * s2 * s3);
64
+ break;
65
+ case "XZY":
66
+ q = new Quaternion(s1 * c2 * c3 - c1 * s2 * s3, c1 * s2 * c3 - s1 * c2 * s3, c1 * c2 * s3 + s1 * s2 * c3, c1 * c2 * c3 + s1 * s2 * s3);
67
+ break;
68
+ default:
69
+ throw new RangeError(`Unsupported Euler order: ${String(order)}`);
70
+ }
71
+ return q.normalize();
47
72
  }
48
73
  static fromRotationMatrix(matrix) {
49
74
  const m = matrix.elements;
@@ -1 +1 @@
1
- {"version":3,"file":"Quaternion.js","sourceRoot":"","sources":["../../../../packages/math/src/Quaternion.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Quaternion.js","sourceRoot":"","sources":["../../../../packages/math/src/Quaternion.ts"],"names":[],"mappings":"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"}
package/dist/Ray.d.ts CHANGED
@@ -2,13 +2,53 @@ import { Box3 } from "./Box3.js";
2
2
  import { Plane } from "./Plane.js";
3
3
  import { Sphere } from "./Sphere.js";
4
4
  import { Vector3 } from "./Vector3.js";
5
+ import type { Matrix4 } from "./Matrix4.js";
6
+ /**
7
+ * Ray `origin + t·direction` with normalized `direction` —
8
+ * three.js `Ray` parity (immutable methods).
9
+ */
5
10
  export declare class Ray {
6
11
  readonly origin: Vector3;
7
12
  readonly direction: Vector3;
8
13
  constructor(origin?: Vector3, direction?: Vector3);
9
- at(distance: number): Vector3;
10
- intersectPlane(plane: Plane): Vector3 | undefined;
14
+ set(origin: Vector3, direction: Vector3): Ray;
15
+ clone(): Ray;
16
+ copy(ray: Ray): Ray;
17
+ at(t: number): Vector3;
18
+ /** Reorients the ray toward `target` (three.js `Ray.lookAt`). */
19
+ lookAt(target: Vector3): Ray;
20
+ /** Moves the origin forward along the ray (three.js `Ray.recast`). */
21
+ recast(t: number): Ray;
22
+ /** Point on the ray closest to `point` (three.js `closestPointToPoint`). */
23
+ closestPointToPoint(point: Vector3): Vector3;
24
+ distanceToPoint(point: Vector3): number;
25
+ distanceSqToPoint(point: Vector3): number;
26
+ /**
27
+ * Min squared distance between the ray and segment `v0–v1` plus the
28
+ * closest points (three.js `Ray.distanceSqToSegment`, Geometric Tools).
29
+ */
30
+ distanceSqToSegment(v0: Vector3, v1: Vector3): {
31
+ distanceSq: number;
32
+ pointOnRay: Vector3;
33
+ pointOnSegment: Vector3;
34
+ };
35
+ /** Ray–sphere hit point (closest to the origin), or `undefined`. */
11
36
  intersectSphere(sphere: Sphere): Vector3 | undefined;
37
+ /** three.js `Ray.intersectsSphere` — empty spheres never intersect. */
38
+ intersectsSphere(sphere: Sphere): boolean;
39
+ /** Distance along the ray to `plane`; `null` when parallel/behind (three `distanceToPlane`). */
40
+ distanceToPlane(plane: Plane): number | null;
41
+ intersectPlane(plane: Plane): Vector3 | undefined;
42
+ /** three.js `Ray.intersectsPlane`. */
43
+ intersectsPlane(plane: Plane): boolean;
12
44
  intersectBox(box: Box3): Vector3 | undefined;
45
+ intersectsBox(box: Box3): boolean;
46
+ /**
47
+ * Ray–triangle intersection (Möller–Trumbore via Geometric Tools) —
48
+ * three.js `Ray.intersectTriangle`. Returns the hit point or `undefined`.
49
+ */
50
+ intersectTriangle(a: Vector3, b: Vector3, c: Vector3, backfaceCulling?: boolean): Vector3 | undefined;
51
+ applyMatrix4(matrix: Matrix4): Ray;
52
+ equals(ray: Ray, epsilon?: number): boolean;
13
53
  }
14
54
  //# sourceMappingURL=Ray.d.ts.map
package/dist/Ray.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"Ray.d.ts","sourceRoot":"","sources":["../../../../packages/math/src/Ray.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAEvC,qBAAa,GAAG;IACd,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;gBAEhB,MAAM,UAAuB,EAAE,SAAS,UAA0B;IAO9E,EAAE,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAI7B,cAAc,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,GAAG,SAAS;IAOjD,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS;IAapD,YAAY,CAAC,GAAG,EAAE,IAAI,GAAG,OAAO,GAAG,SAAS;CA0B7C"}
1
+ {"version":3,"file":"Ray.d.ts","sourceRoot":"","sources":["../../../../packages/math/src/Ray.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAE5C;;;GAGG;AACH,qBAAa,GAAG;IACd,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;gBAEhB,MAAM,UAAuB,EAAE,SAAS,UAA0B;IAO9E,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,GAAG,GAAG;IAI7C,KAAK,IAAI,GAAG;IAIZ,IAAI,CAAC,GAAG,EAAE,GAAG,GAAG,GAAG;IAInB,EAAE,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO;IAItB,iEAAiE;IACjE,MAAM,CAAC,MAAM,EAAE,OAAO,GAAG,GAAG;IAI5B,sEAAsE;IACtE,MAAM,CAAC,CAAC,EAAE,MAAM,GAAG,GAAG;IAItB,4EAA4E;IAC5E,mBAAmB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO;IAM5C,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM;IAIvC,iBAAiB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM;IASzC;;;OAGG;IACH,mBAAmB,CAAC,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,GAAG;QAC7C,UAAU,EAAE,MAAM,CAAC;QACnB,UAAU,EAAE,OAAO,CAAC;QACpB,cAAc,EAAE,OAAO,CAAC;KACzB;IAyED,oEAAoE;IACpE,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS;IAcpD,uEAAuE;IACvE,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;IAKzC,gGAAgG;IAChG,eAAe,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM,GAAG,IAAI;IAW5C,cAAc,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,GAAG,SAAS;IAMjD,sCAAsC;IACtC,eAAe,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO;IAQtC,YAAY,CAAC,GAAG,EAAE,IAAI,GAAG,OAAO,GAAG,SAAS;IA2B5C,aAAa,CAAC,GAAG,EAAE,IAAI,GAAG,OAAO;IAIjC;;;OAGG;IACH,iBAAiB,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,eAAe,UAAQ,GAAG,OAAO,GAAG,SAAS;IA+BnG,YAAY,CAAC,MAAM,EAAE,OAAO,GAAG,GAAG;IAIlC,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,SAAQ,GAAG,OAAO;CAG3C"}
package/dist/Ray.js CHANGED
@@ -2,6 +2,10 @@ import { Box3 } from "./Box3.js";
2
2
  import { Plane } from "./Plane.js";
3
3
  import { Sphere } from "./Sphere.js";
4
4
  import { Vector3 } from "./Vector3.js";
5
+ /**
6
+ * Ray `origin + t·direction` with normalized `direction` —
7
+ * three.js `Ray` parity (immutable methods).
8
+ */
5
9
  export class Ray {
6
10
  origin;
7
11
  direction;
@@ -12,16 +16,124 @@ export class Ray {
12
16
  this.origin = origin;
13
17
  this.direction = normalized;
14
18
  }
15
- at(distance) {
16
- return this.origin.add(this.direction.multiplyScalar(distance));
19
+ set(origin, direction) {
20
+ return new Ray(origin, direction);
17
21
  }
18
- intersectPlane(plane) {
19
- const denominator = plane.normal.dot(this.direction);
20
- if (Math.abs(denominator) < 1e-12)
21
- return undefined;
22
- const distance = -(this.origin.dot(plane.normal) + plane.constant) / denominator;
23
- return distance < 0 ? undefined : this.at(distance);
22
+ clone() {
23
+ return new Ray(this.origin, this.direction);
24
+ }
25
+ copy(ray) {
26
+ return new Ray(ray.origin, ray.direction);
27
+ }
28
+ at(t) {
29
+ return this.origin.add(this.direction.multiplyScalar(t));
30
+ }
31
+ /** Reorients the ray toward `target` (three.js `Ray.lookAt`). */
32
+ lookAt(target) {
33
+ return new Ray(this.origin, target.subtract(this.origin).normalize());
34
+ }
35
+ /** Moves the origin forward along the ray (three.js `Ray.recast`). */
36
+ recast(t) {
37
+ return new Ray(this.at(t), this.direction);
38
+ }
39
+ /** Point on the ray closest to `point` (three.js `closestPointToPoint`). */
40
+ closestPointToPoint(point) {
41
+ const directionDistance = point.subtract(this.origin).dot(this.direction);
42
+ if (directionDistance < 0)
43
+ return this.origin;
44
+ return this.origin.addScaled(this.direction, directionDistance);
45
+ }
46
+ distanceToPoint(point) {
47
+ return Math.sqrt(this.distanceSqToPoint(point));
24
48
  }
49
+ distanceSqToPoint(point) {
50
+ const directionDistance = point.subtract(this.origin).dot(this.direction);
51
+ if (directionDistance < 0) {
52
+ return this.origin.distanceToSquared(point);
53
+ }
54
+ const closest = this.origin.addScaled(this.direction, directionDistance);
55
+ return closest.distanceToSquared(point);
56
+ }
57
+ /**
58
+ * Min squared distance between the ray and segment `v0–v1` plus the
59
+ * closest points (three.js `Ray.distanceSqToSegment`, Geometric Tools).
60
+ */
61
+ distanceSqToSegment(v0, v1) {
62
+ const segCenter = v0.add(v1).multiplyScalar(0.5);
63
+ const segDir = v1.subtract(v0).normalize();
64
+ const diff = this.origin.subtract(segCenter);
65
+ const segExtent = v0.distanceTo(v1) * 0.5;
66
+ const a01 = -this.direction.dot(segDir);
67
+ const b0 = diff.dot(this.direction);
68
+ const b1 = -diff.dot(segDir);
69
+ const c = diff.lengthSquared();
70
+ const det = Math.abs(1 - a01 * a01);
71
+ let s0;
72
+ let s1;
73
+ let sqrDist;
74
+ let extDet;
75
+ if (det > 0) {
76
+ // ray and segment are not parallel
77
+ s0 = a01 * b1 - b0;
78
+ s1 = a01 * b0 - b1;
79
+ extDet = segExtent * det;
80
+ if (s0 >= 0) {
81
+ if (s1 >= -extDet) {
82
+ if (s1 <= extDet) {
83
+ // region 0
84
+ const invDet = 1 / det;
85
+ s0 *= invDet;
86
+ s1 *= invDet;
87
+ sqrDist = s0 * (s0 + a01 * s1 + 2 * b0) + s1 * (a01 * s0 + s1 + 2 * b1) + c;
88
+ }
89
+ else {
90
+ // region 1
91
+ s1 = segExtent;
92
+ s0 = Math.max(0, -(a01 * s1 + b0));
93
+ sqrDist = -s0 * s0 + s1 * (s1 + 2 * b1) + c;
94
+ }
95
+ }
96
+ else {
97
+ // region 5
98
+ s1 = -segExtent;
99
+ s0 = Math.max(0, -(a01 * s1 + b0));
100
+ sqrDist = -s0 * s0 + s1 * (s1 + 2 * b1) + c;
101
+ }
102
+ }
103
+ else {
104
+ if (s1 <= -extDet) {
105
+ // region 4
106
+ s0 = Math.max(0, -(-a01 * segExtent + b0));
107
+ s1 = s0 > 0 ? -segExtent : Math.min(Math.max(-segExtent, -b1), segExtent);
108
+ sqrDist = -s0 * s0 + s1 * (s1 + 2 * b1) + c;
109
+ }
110
+ else if (s1 <= extDet) {
111
+ // region 3
112
+ s0 = 0;
113
+ s1 = Math.min(Math.max(-segExtent, -b1), segExtent);
114
+ sqrDist = s1 * (s1 + 2 * b1) + c;
115
+ }
116
+ else {
117
+ // region 2
118
+ s0 = Math.max(0, -(a01 * segExtent + b0));
119
+ s1 = s0 > 0 ? segExtent : Math.min(Math.max(-segExtent, -b1), segExtent);
120
+ sqrDist = -s0 * s0 + s1 * (s1 + 2 * b1) + c;
121
+ }
122
+ }
123
+ }
124
+ else {
125
+ // ray and segment are parallel
126
+ s1 = a01 > 0 ? -segExtent : segExtent;
127
+ s0 = Math.max(0, -(a01 * s1 + b0));
128
+ sqrDist = -s0 * s0 + s1 * (s1 + 2 * b1) + c;
129
+ }
130
+ return {
131
+ distanceSq: sqrDist,
132
+ pointOnRay: this.origin.addScaled(this.direction, s0),
133
+ pointOnSegment: segCenter.addScaled(segDir, s1)
134
+ };
135
+ }
136
+ /** Ray–sphere hit point (closest to the origin), or `undefined`. */
25
137
  intersectSphere(sphere) {
26
138
  const l = sphere.center.subtract(this.origin);
27
139
  const tca = l.dot(this.direction);
@@ -32,8 +144,44 @@ export class Ray {
32
144
  const thc = Math.sqrt(radius2 - d2);
33
145
  const t0 = tca - thc;
34
146
  const t1 = tca + thc;
147
+ if (t1 < 0)
148
+ return undefined;
35
149
  const distance = t0 >= 0 ? t0 : t1;
36
- return distance < 0 ? undefined : this.at(distance);
150
+ return this.at(distance);
151
+ }
152
+ /** three.js `Ray.intersectsSphere` — empty spheres never intersect. */
153
+ intersectsSphere(sphere) {
154
+ if (sphere.radius < 0)
155
+ return false;
156
+ return this.distanceSqToPoint(sphere.center) <= sphere.radius * sphere.radius;
157
+ }
158
+ /** Distance along the ray to `plane`; `null` when parallel/behind (three `distanceToPlane`). */
159
+ distanceToPlane(plane) {
160
+ const denominator = plane.normal.dot(this.direction);
161
+ if (denominator === 0) {
162
+ // line is coplanar, return origin
163
+ if (plane.distanceToPoint(this.origin) === 0)
164
+ return 0;
165
+ return null;
166
+ }
167
+ const t = -(this.origin.dot(plane.normal) + plane.constant) / denominator;
168
+ return t >= 0 ? t : null;
169
+ }
170
+ intersectPlane(plane) {
171
+ const t = this.distanceToPlane(plane);
172
+ if (t === null)
173
+ return undefined;
174
+ return this.at(t);
175
+ }
176
+ /** three.js `Ray.intersectsPlane`. */
177
+ intersectsPlane(plane) {
178
+ const distToPoint = plane.distanceToPoint(this.origin);
179
+ if (distToPoint === 0)
180
+ return true;
181
+ const denominator = plane.normal.dot(this.direction);
182
+ if (denominator * distToPoint < 0)
183
+ return true;
184
+ return false;
37
185
  }
38
186
  intersectBox(box) {
39
187
  if (box.isEmpty())
@@ -63,5 +211,50 @@ export class Ray {
63
211
  const distance = tmin >= 0 ? tmin : tmax;
64
212
  return distance < 0 ? undefined : this.at(distance);
65
213
  }
214
+ intersectsBox(box) {
215
+ return this.intersectBox(box) !== undefined;
216
+ }
217
+ /**
218
+ * Ray–triangle intersection (Möller–Trumbore via Geometric Tools) —
219
+ * three.js `Ray.intersectTriangle`. Returns the hit point or `undefined`.
220
+ */
221
+ intersectTriangle(a, b, c, backfaceCulling = false) {
222
+ const edge1 = b.subtract(a);
223
+ const edge2 = c.subtract(a);
224
+ const normal = edge1.cross(edge2);
225
+ let DdN = this.direction.dot(normal);
226
+ let sign;
227
+ if (DdN > 0) {
228
+ if (backfaceCulling)
229
+ return undefined;
230
+ sign = 1;
231
+ }
232
+ else if (DdN < 0) {
233
+ sign = -1;
234
+ DdN = -DdN;
235
+ }
236
+ else {
237
+ return undefined;
238
+ }
239
+ const diff = this.origin.subtract(a);
240
+ const DdQxE2 = sign * this.direction.dot(diff.cross(edge2));
241
+ if (DdQxE2 < 0)
242
+ return undefined; // b1 < 0
243
+ const DdE1xQ = sign * this.direction.dot(edge1.cross(diff));
244
+ if (DdE1xQ < 0)
245
+ return undefined; // b2 < 0
246
+ if (DdQxE2 + DdE1xQ > DdN)
247
+ return undefined; // b1+b2 > 1
248
+ const QdN = -sign * diff.dot(normal);
249
+ if (QdN < 0)
250
+ return undefined; // t < 0
251
+ return this.at(QdN / DdN);
252
+ }
253
+ applyMatrix4(matrix) {
254
+ return new Ray(this.origin.transformMatrix4(matrix), this.direction.transformDirection(matrix));
255
+ }
256
+ equals(ray, epsilon = 1e-10) {
257
+ return this.origin.equals(ray.origin, epsilon) && this.direction.equals(ray.direction, epsilon);
258
+ }
66
259
  }
67
260
  //# sourceMappingURL=Ray.js.map
package/dist/Ray.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"Ray.js","sourceRoot":"","sources":["../../../../packages/math/src/Ray.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Ray.js","sourceRoot":"","sources":["../../../../packages/math/src/Ray.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAGvC;;;GAGG;AACH,MAAM,OAAO,GAAG;IACL,MAAM,CAAU;IAChB,SAAS,CAAU;IAE5B,YAAY,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE;QAC5E,MAAM,UAAU,GAAG,SAAS,CAAC,SAAS,EAAE,CAAC;QACzC,IAAI,UAAU,CAAC,aAAa,EAAE,KAAK,CAAC;YAAE,MAAM,IAAI,UAAU,CAAC,iCAAiC,CAAC,CAAC;QAC9F,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,SAAS,GAAG,UAAU,CAAC;IAC9B,CAAC;IAED,GAAG,CAAC,MAAe,EAAE,SAAkB;QACrC,OAAO,IAAI,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IACpC,CAAC;IAED,KAAK;QACH,OAAO,IAAI,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;IAC9C,CAAC;IAED,IAAI,CAAC,GAAQ;QACX,OAAO,IAAI,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC;IAC5C,CAAC;IAED,EAAE,CAAC,CAAS;QACV,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3D,CAAC;IAED,iEAAiE;IACjE,MAAM,CAAC,MAAe;QACpB,OAAO,IAAI,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC;IACxE,CAAC;IAED,sEAAsE;IACtE,MAAM,CAAC,CAAS;QACd,OAAO,IAAI,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;IAC7C,CAAC;IAED,4EAA4E;IAC5E,mBAAmB,CAAC,KAAc;QAChC,MAAM,iBAAiB,GAAG,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC1E,IAAI,iBAAiB,GAAG,CAAC;YAAE,OAAO,IAAI,CAAC,MAAM,CAAC;QAC9C,OAAO,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,EAAE,iBAAiB,CAAC,CAAC;IAClE,CAAC;IAED,eAAe,CAAC,KAAc;QAC5B,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC,CAAC;IAClD,CAAC;IAED,iBAAiB,CAAC,KAAc;QAC9B,MAAM,iBAAiB,GAAG,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC1E,IAAI,iBAAiB,GAAG,CAAC,EAAE,CAAC;YAC1B,OAAO,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;QAC9C,CAAC;QACD,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,EAAE,iBAAiB,CAAC,CAAC;QACzE,OAAO,OAAO,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;IAC1C,CAAC;IAED;;;OAGG;IACH,mBAAmB,CAAC,EAAW,EAAE,EAAW;QAK1C,MAAM,SAAS,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;QACjD,MAAM,MAAM,GAAG,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,SAAS,EAAE,CAAC;QAC3C,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;QAE7C,MAAM,SAAS,GAAG,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC;QAC1C,MAAM,GAAG,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACxC,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACpC,MAAM,EAAE,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAC7B,MAAM,CAAC,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;QAC/B,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC;QACpC,IAAI,EAAU,CAAC;QACf,IAAI,EAAU,CAAC;QACf,IAAI,OAAe,CAAC;QACpB,IAAI,MAAc,CAAC;QAEnB,IAAI,GAAG,GAAG,CAAC,EAAE,CAAC;YACZ,mCAAmC;YACnC,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,CAAC;YACnB,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,CAAC;YACnB,MAAM,GAAG,SAAS,GAAG,GAAG,CAAC;YACzB,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC;gBACZ,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;oBAClB,IAAI,EAAE,IAAI,MAAM,EAAE,CAAC;wBACjB,WAAW;wBACX,MAAM,MAAM,GAAG,CAAC,GAAG,GAAG,CAAC;wBACvB,EAAE,IAAI,MAAM,CAAC;wBACb,EAAE,IAAI,MAAM,CAAC;wBACb,OAAO,GAAG,EAAE,GAAG,CAAC,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC;oBAC9E,CAAC;yBAAM,CAAC;wBACN,WAAW;wBACX,EAAE,GAAG,SAAS,CAAC;wBACf,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;wBACnC,OAAO,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC;oBAC9C,CAAC;gBACH,CAAC;qBAAM,CAAC;oBACN,WAAW;oBACX,EAAE,GAAG,CAAC,SAAS,CAAC;oBAChB,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;oBACnC,OAAO,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC;gBAC9C,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;oBAClB,WAAW;oBACX,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,SAAS,GAAG,EAAE,CAAC,CAAC,CAAC;oBAC3C,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,CAAC,EAAE,CAAC,EAAE,SAAS,CAAC,CAAC;oBAC1E,OAAO,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC;gBAC9C,CAAC;qBAAM,IAAI,EAAE,IAAI,MAAM,EAAE,CAAC;oBACxB,WAAW;oBACX,EAAE,GAAG,CAAC,CAAC;oBACP,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,CAAC,EAAE,CAAC,EAAE,SAAS,CAAC,CAAC;oBACpD,OAAO,GAAG,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC;gBACnC,CAAC;qBAAM,CAAC;oBACN,WAAW;oBACX,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,GAAG,SAAS,GAAG,EAAE,CAAC,CAAC,CAAC;oBAC1C,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,CAAC,EAAE,CAAC,EAAE,SAAS,CAAC,CAAC;oBACzE,OAAO,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC;gBAC9C,CAAC;YACH,CAAC;QACH,CAAC;aAAM,CAAC;YACN,+BAA+B;YAC/B,EAAE,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC;YACtC,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;YACnC,OAAO,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC;QAC9C,CAAC;QAED,OAAO;YACL,UAAU,EAAE,OAAO;YACnB,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,CAAC;YACrD,cAAc,EAAE,SAAS,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,CAAC;SAChD,CAAC;IACJ,CAAC;IAED,oEAAoE;IACpE,eAAe,CAAC,MAAc;QAC5B,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC9C,MAAM,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAClC,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC;QAChC,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;QAC9C,IAAI,EAAE,GAAG,OAAO;YAAE,OAAO,SAAS,CAAC;QACnC,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC,CAAC;QACpC,MAAM,EAAE,GAAG,GAAG,GAAG,GAAG,CAAC;QACrB,MAAM,EAAE,GAAG,GAAG,GAAG,GAAG,CAAC;QACrB,IAAI,EAAE,GAAG,CAAC;YAAE,OAAO,SAAS,CAAC;QAC7B,MAAM,QAAQ,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACnC,OAAO,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC;IAC3B,CAAC;IAED,uEAAuE;IACvE,gBAAgB,CAAC,MAAc;QAC7B,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC;YAAE,OAAO,KAAK,CAAC;QACpC,OAAO,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;IAChF,CAAC;IAED,gGAAgG;IAChG,eAAe,CAAC,KAAY;QAC1B,MAAM,WAAW,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACrD,IAAI,WAAW,KAAK,CAAC,EAAE,CAAC;YACtB,kCAAkC;YAClC,IAAI,KAAK,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;gBAAE,OAAO,CAAC,CAAC;YACvD,OAAO,IAAI,CAAC;QACd,CAAC;QACD,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,GAAG,WAAW,CAAC;QAC1E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC3B,CAAC;IAED,cAAc,CAAC,KAAY;QACzB,MAAM,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;QACtC,IAAI,CAAC,KAAK,IAAI;YAAE,OAAO,SAAS,CAAC;QACjC,OAAO,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;IAED,sCAAsC;IACtC,eAAe,CAAC,KAAY;QAC1B,MAAM,WAAW,GAAG,KAAK,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACvD,IAAI,WAAW,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC;QACnC,MAAM,WAAW,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACrD,IAAI,WAAW,GAAG,WAAW,GAAG,CAAC;YAAE,OAAO,IAAI,CAAC;QAC/C,OAAO,KAAK,CAAC;IACf,CAAC;IAED,YAAY,CAAC,GAAS;QACpB,IAAI,GAAG,CAAC,OAAO,EAAE;YAAE,OAAO,SAAS,CAAC;QACpC,IAAI,IAAI,GAAG,MAAM,CAAC,iBAAiB,CAAC;QACpC,IAAI,IAAI,GAAG,MAAM,CAAC,iBAAiB,CAAC;QAEpC,KAAK,MAAM,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAU,EAAE,CAAC;YAC5C,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YACjC,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;YACvC,MAAM,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAC1B,MAAM,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAC1B,IAAI,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,KAAK,EAAE,CAAC;gBAChC,IAAI,MAAM,GAAG,GAAG,IAAI,MAAM,GAAG,GAAG;oBAAE,OAAO,SAAS,CAAC;gBACnD,SAAS;YACX,CAAC;YACD,MAAM,IAAI,GAAG,CAAC,GAAG,SAAS,CAAC;YAC3B,IAAI,EAAE,GAAG,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,IAAI,CAAC;YAC/B,IAAI,EAAE,GAAG,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,IAAI,CAAC;YAC/B,IAAI,EAAE,GAAG,EAAE;gBAAE,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;YACjC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YAC1B,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YAC1B,IAAI,IAAI,GAAG,IAAI;gBAAE,OAAO,SAAS,CAAC;QACpC,CAAC;QAED,MAAM,QAAQ,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;QACzC,OAAO,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC;IACtD,CAAC;IAED,aAAa,CAAC,GAAS;QACrB,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,SAAS,CAAC;IAC9C,CAAC;IAED;;;OAGG;IACH,iBAAiB,CAAC,CAAU,EAAE,CAAU,EAAE,CAAU,EAAE,eAAe,GAAG,KAAK;QAC3E,MAAM,KAAK,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;QAC5B,MAAM,KAAK,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;QAC5B,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAElC,IAAI,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACrC,IAAI,IAAY,CAAC;QACjB,IAAI,GAAG,GAAG,CAAC,EAAE,CAAC;YACZ,IAAI,eAAe;gBAAE,OAAO,SAAS,CAAC;YACtC,IAAI,GAAG,CAAC,CAAC;QACX,CAAC;aAAM,IAAI,GAAG,GAAG,CAAC,EAAE,CAAC;YACnB,IAAI,GAAG,CAAC,CAAC,CAAC;YACV,GAAG,GAAG,CAAC,GAAG,CAAC;QACb,CAAC;aAAM,CAAC;YACN,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;QACrC,MAAM,MAAM,GAAG,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;QAC5D,IAAI,MAAM,GAAG,CAAC;YAAE,OAAO,SAAS,CAAC,CAAC,SAAS;QAE3C,MAAM,MAAM,GAAG,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;QAC5D,IAAI,MAAM,GAAG,CAAC;YAAE,OAAO,SAAS,CAAC,CAAC,SAAS;QAC3C,IAAI,MAAM,GAAG,MAAM,GAAG,GAAG;YAAE,OAAO,SAAS,CAAC,CAAC,YAAY;QAEzD,MAAM,GAAG,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACrC,IAAI,GAAG,GAAG,CAAC;YAAE,OAAO,SAAS,CAAC,CAAC,QAAQ;QAEvC,OAAO,IAAI,CAAC,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;IAC5B,CAAC;IAED,YAAY,CAAC,MAAe;QAC1B,OAAO,IAAI,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC,CAAC;IAClG,CAAC;IAED,MAAM,CAAC,GAAQ,EAAE,OAAO,GAAG,KAAK;QAC9B,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IAClG,CAAC;CACF"}
@@ -0,0 +1,28 @@
1
+ import type { Vector2 } from "./Vector2.js";
2
+ /**
3
+ * Triangulates a polygon defined by flattened 2D coordinates —
4
+ * three.js `Earcut.triangulate` / mapbox earcut parity.
5
+ *
6
+ * @param data Flattened `[x0,y0, x1,y1, ...]` vertex coordinates.
7
+ * @param holeIndices Vertex-start indices of each hole ring (or `null`).
8
+ * @param dim Coordinates per vertex (default 2).
9
+ * @returns Flat triangle index list (3 indices per face).
10
+ */
11
+ export declare function earcut(data: ArrayLike<number>, holeIndices: readonly number[] | null, dim?: number): number[];
12
+ /** Signed 2D polygon area (three.js `ShapeUtils.area`). */
13
+ export declare function shapeArea(contour: readonly Vector2[]): number;
14
+ /** `true` when the polygon winding is clockwise (three.js `isClockWise`). */
15
+ export declare function isClockWise(pts: readonly Vector2[]): boolean;
16
+ /**
17
+ * Triangulates a polygon outline with holes —
18
+ * three.js `ShapeUtils.triangulateShape` parity.
19
+ * @returns Faces as `[a,b,c]` vertex-index triples.
20
+ */
21
+ export declare function triangulateShape(contour: readonly Vector2[], holes: readonly (readonly Vector2[])[]): [number, number, number][];
22
+ /** three.js-compatible grouped surface (matches `ShapeUtils` usage style). */
23
+ export declare const ShapeUtils: {
24
+ readonly area: typeof shapeArea;
25
+ readonly isClockWise: typeof isClockWise;
26
+ readonly triangulateShape: typeof triangulateShape;
27
+ };
28
+ //# sourceMappingURL=ShapeUtils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ShapeUtils.d.ts","sourceRoot":"","sources":["../../../../packages/math/src/ShapeUtils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAsf5C;;;;;;;;GAQG;AACH,wBAAgB,MAAM,CAAC,IAAI,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,SAAS,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,SAAI,GAAG,MAAM,EAAE,CAgCxG;AAED,2DAA2D;AAC3D,wBAAgB,SAAS,CAAC,OAAO,EAAE,SAAS,OAAO,EAAE,GAAG,MAAM,CAO7D;AAED,6EAA6E;AAC7E,wBAAgB,WAAW,CAAC,GAAG,EAAE,SAAS,OAAO,EAAE,GAAG,OAAO,CAE5D;AAeD;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,SAAS,OAAO,EAAE,EAAE,KAAK,EAAE,SAAS,CAAC,SAAS,OAAO,EAAE,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,CAuBhI;AAED,8EAA8E;AAC9E,eAAO,MAAM,UAAU;;;;CAIb,CAAC"}