@aura3d/math 4.0.3 → 4.0.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/Box3.d.ts +50 -0
- package/dist/Box3.d.ts.map +1 -1
- package/dist/Box3.js +177 -6
- package/dist/Box3.js.map +1 -1
- package/dist/Capsule.d.ts +25 -0
- package/dist/Capsule.d.ts.map +1 -0
- package/dist/Capsule.js +54 -0
- package/dist/Capsule.js.map +1 -0
- package/dist/Color.d.ts +27 -0
- package/dist/Color.d.ts.map +1 -1
- package/dist/Color.js +87 -0
- package/dist/Color.js.map +1 -1
- package/dist/ConvexHull.d.ts +100 -0
- package/dist/ConvexHull.d.ts.map +1 -0
- package/dist/ConvexHull.js +578 -0
- package/dist/ConvexHull.js.map +1 -0
- package/dist/Curves.d.ts +59 -18
- package/dist/Curves.d.ts.map +1 -1
- package/dist/Curves.js +15 -73
- package/dist/Curves.js.map +1 -1
- package/dist/Cylindrical.d.ts +19 -0
- package/dist/Cylindrical.d.ts.map +1 -0
- package/dist/Cylindrical.js +40 -0
- package/dist/Cylindrical.js.map +1 -0
- package/dist/Euler.d.ts +24 -0
- package/dist/Euler.d.ts.map +1 -1
- package/dist/Euler.js +126 -2
- package/dist/Euler.js.map +1 -1
- package/dist/Frustum.d.ts +18 -0
- package/dist/Frustum.d.ts.map +1 -1
- package/dist/Frustum.js +62 -12
- package/dist/Frustum.js.map +1 -1
- package/dist/Line3.d.ts +38 -0
- package/dist/Line3.d.ts.map +1 -0
- package/dist/Line3.js +122 -0
- package/dist/Line3.js.map +1 -0
- package/dist/MathUtils.d.ts +37 -0
- package/dist/MathUtils.d.ts.map +1 -0
- package/dist/MathUtils.js +105 -0
- package/dist/MathUtils.js.map +1 -0
- package/dist/Matrix3.d.ts +23 -2
- package/dist/Matrix3.d.ts.map +1 -1
- package/dist/Matrix3.js +90 -0
- package/dist/Matrix3.js.map +1 -1
- package/dist/Matrix4.d.ts +3 -0
- package/dist/Matrix4.d.ts.map +1 -1
- package/dist/Matrix4.js +17 -0
- package/dist/Matrix4.js.map +1 -1
- package/dist/OBB.d.ts +44 -0
- package/dist/OBB.d.ts.map +1 -0
- package/dist/OBB.js +214 -0
- package/dist/OBB.js.map +1 -0
- package/dist/Octree.d.ts +72 -0
- package/dist/Octree.d.ts.map +1 -0
- package/dist/Octree.js +385 -0
- package/dist/Octree.js.map +1 -0
- package/dist/Plane.d.ts +42 -0
- package/dist/Plane.d.ts.map +1 -1
- package/dist/Plane.js +79 -3
- package/dist/Plane.js.map +1 -1
- package/dist/Quaternion.d.ts +6 -1
- package/dist/Quaternion.d.ts.map +1 -1
- package/dist/Quaternion.js +28 -3
- package/dist/Quaternion.js.map +1 -1
- package/dist/Ray.d.ts +42 -2
- package/dist/Ray.d.ts.map +1 -1
- package/dist/Ray.js +202 -9
- package/dist/Ray.js.map +1 -1
- package/dist/ShapeUtils.d.ts +28 -0
- package/dist/ShapeUtils.d.ts.map +1 -0
- package/dist/ShapeUtils.js +551 -0
- package/dist/ShapeUtils.js.map +1 -0
- package/dist/Sphere.d.ts +32 -0
- package/dist/Sphere.d.ts.map +1 -1
- package/dist/Sphere.js +122 -4
- package/dist/Sphere.js.map +1 -1
- package/dist/Spherical.d.ts +21 -0
- package/dist/Spherical.d.ts.map +1 -0
- package/dist/Spherical.js +50 -0
- package/dist/Spherical.js.map +1 -0
- package/dist/SphericalHarmonics3.d.ts +35 -0
- package/dist/SphericalHarmonics3.d.ts.map +1 -0
- package/dist/SphericalHarmonics3.js +115 -0
- package/dist/SphericalHarmonics3.js.map +1 -0
- package/dist/Triangle.d.ts +45 -0
- package/dist/Triangle.d.ts.map +1 -0
- package/dist/Triangle.js +160 -0
- package/dist/Triangle.js.map +1 -0
- package/dist/Vector2.d.ts +7 -0
- package/dist/Vector2.d.ts.map +1 -1
- package/dist/Vector2.js +17 -0
- package/dist/Vector2.js.map +1 -1
- package/dist/Vector3.d.ts +16 -0
- package/dist/Vector3.d.ts.map +1 -1
- package/dist/Vector3.js +35 -0
- package/dist/Vector3.js.map +1 -1
- package/dist/curves/ArcCurve.d.ts +7 -0
- package/dist/curves/ArcCurve.d.ts.map +1 -0
- package/dist/curves/ArcCurve.js +9 -0
- package/dist/curves/ArcCurve.js.map +1 -0
- package/dist/curves/CatmullRomCurve3.d.ts +39 -0
- package/dist/curves/CatmullRomCurve3.d.ts.map +1 -0
- package/dist/curves/CatmullRomCurve3.js +176 -0
- package/dist/curves/CatmullRomCurve3.js.map +1 -0
- package/dist/curves/ClampedCatmullRomCurve3.d.ts +26 -0
- package/dist/curves/ClampedCatmullRomCurve3.d.ts.map +1 -0
- package/dist/curves/ClampedCatmullRomCurve3.js +48 -0
- package/dist/curves/ClampedCatmullRomCurve3.js.map +1 -0
- package/dist/curves/CubicBezierCurve.d.ts +14 -0
- package/dist/curves/CubicBezierCurve.d.ts.map +1 -0
- package/dist/curves/CubicBezierCurve.js +25 -0
- package/dist/curves/CubicBezierCurve.js.map +1 -0
- package/dist/curves/CubicBezierCurve3.d.ts +14 -0
- package/dist/curves/CubicBezierCurve3.d.ts.map +1 -0
- package/dist/curves/CubicBezierCurve3.js +25 -0
- package/dist/curves/CubicBezierCurve3.js.map +1 -0
- package/dist/curves/CurveBase.d.ts +49 -0
- package/dist/curves/CurveBase.d.ts.map +1 -0
- package/dist/curves/CurveBase.js +199 -0
- package/dist/curves/CurveBase.js.map +1 -0
- package/dist/curves/CurvePath.d.ts +34 -0
- package/dist/curves/CurvePath.d.ts.map +1 -0
- package/dist/curves/CurvePath.js +135 -0
- package/dist/curves/CurvePath.js.map +1 -0
- package/dist/curves/EllipseCurve.d.ts +18 -0
- package/dist/curves/EllipseCurve.d.ts.map +1 -0
- package/dist/curves/EllipseCurve.js +67 -0
- package/dist/curves/EllipseCurve.js.map +1 -0
- package/dist/curves/Interpolations.d.ts +9 -0
- package/dist/curves/Interpolations.d.ts.map +1 -0
- package/dist/curves/Interpolations.js +21 -0
- package/dist/curves/Interpolations.js.map +1 -0
- package/dist/curves/LineCurve.d.ts +16 -0
- package/dist/curves/LineCurve.d.ts.map +1 -0
- package/dist/curves/LineCurve.js +32 -0
- package/dist/curves/LineCurve.js.map +1 -0
- package/dist/curves/LineCurve3.d.ts +16 -0
- package/dist/curves/LineCurve3.d.ts.map +1 -0
- package/dist/curves/LineCurve3.js +32 -0
- package/dist/curves/LineCurve3.js.map +1 -0
- package/dist/curves/Path.d.ts +23 -0
- package/dist/curves/Path.d.ts.map +1 -0
- package/dist/curves/Path.js +94 -0
- package/dist/curves/Path.js.map +1 -0
- package/dist/curves/QuadraticBezierCurve.d.ts +13 -0
- package/dist/curves/QuadraticBezierCurve.d.ts.map +1 -0
- package/dist/curves/QuadraticBezierCurve.js +23 -0
- package/dist/curves/QuadraticBezierCurve.js.map +1 -0
- package/dist/curves/QuadraticBezierCurve3.d.ts +13 -0
- package/dist/curves/QuadraticBezierCurve3.d.ts.map +1 -0
- package/dist/curves/QuadraticBezierCurve3.js +23 -0
- package/dist/curves/QuadraticBezierCurve3.js.map +1 -0
- package/dist/curves/Shape.d.ts +15 -0
- package/dist/curves/Shape.d.ts.map +1 -0
- package/dist/curves/Shape.js +26 -0
- package/dist/curves/Shape.js.map +1 -0
- package/dist/curves/SplineCurve.d.ts +11 -0
- package/dist/curves/SplineCurve.d.ts.map +1 -0
- package/dist/curves/SplineCurve.js +27 -0
- package/dist/curves/SplineCurve.js.map +1 -0
- package/dist/index.d.ts +12 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +16 -0
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/Quaternion.js
CHANGED
|
@@ -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
|
-
|
|
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;
|
package/dist/Quaternion.js.map
CHANGED
|
@@ -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
|
-
|
|
10
|
-
|
|
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;
|
|
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
|
-
|
|
16
|
-
return
|
|
19
|
+
set(origin, direction) {
|
|
20
|
+
return new Ray(origin, direction);
|
|
17
21
|
}
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
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
|
|
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":"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"}
|
|
@@ -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"}
|