@aura3d/math 1.0.6

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 (97) hide show
  1. package/README.md +18 -0
  2. package/dist/Box3.d.ts +19 -0
  3. package/dist/Box3.d.ts.map +1 -0
  4. package/dist/Box3.js +61 -0
  5. package/dist/Box3.js.map +1 -0
  6. package/dist/Color.d.ts +15 -0
  7. package/dist/Color.d.ts.map +1 -0
  8. package/dist/Color.js +41 -0
  9. package/dist/Color.js.map +1 -0
  10. package/dist/Curves.d.ts +22 -0
  11. package/dist/Curves.d.ts.map +1 -0
  12. package/dist/Curves.js +74 -0
  13. package/dist/Curves.js.map +1 -0
  14. package/dist/Easing.d.ts +7 -0
  15. package/dist/Easing.d.ts.map +1 -0
  16. package/dist/Easing.js +24 -0
  17. package/dist/Easing.js.map +1 -0
  18. package/dist/Euler.d.ts +12 -0
  19. package/dist/Euler.d.ts.map +1 -0
  20. package/dist/Euler.js +30 -0
  21. package/dist/Euler.js.map +1 -0
  22. package/dist/Frustum.d.ts +14 -0
  23. package/dist/Frustum.d.ts.map +1 -0
  24. package/dist/Frustum.js +40 -0
  25. package/dist/Frustum.js.map +1 -0
  26. package/dist/Interpolation.d.ts +11 -0
  27. package/dist/Interpolation.d.ts.map +1 -0
  28. package/dist/Interpolation.js +30 -0
  29. package/dist/Interpolation.js.map +1 -0
  30. package/dist/Matrix3.d.ts +9 -0
  31. package/dist/Matrix3.d.ts.map +1 -0
  32. package/dist/Matrix3.js +51 -0
  33. package/dist/Matrix3.js.map +1 -0
  34. package/dist/Matrix4.d.ts +45 -0
  35. package/dist/Matrix4.d.ts.map +1 -0
  36. package/dist/Matrix4.js +204 -0
  37. package/dist/Matrix4.js.map +1 -0
  38. package/dist/Plane.d.ts +11 -0
  39. package/dist/Plane.d.ts.map +1 -0
  40. package/dist/Plane.js +31 -0
  41. package/dist/Plane.js.map +1 -0
  42. package/dist/Quaternion.d.ts +25 -0
  43. package/dist/Quaternion.d.ts.map +1 -0
  44. package/dist/Quaternion.js +121 -0
  45. package/dist/Quaternion.js.map +1 -0
  46. package/dist/Random.d.ts +9 -0
  47. package/dist/Random.d.ts.map +1 -0
  48. package/dist/Random.js +30 -0
  49. package/dist/Random.js.map +1 -0
  50. package/dist/Ray.d.ts +14 -0
  51. package/dist/Ray.d.ts.map +1 -0
  52. package/dist/Ray.js +67 -0
  53. package/dist/Ray.js.map +1 -0
  54. package/dist/Sphere.d.ts +9 -0
  55. package/dist/Sphere.d.ts.map +1 -0
  56. package/dist/Sphere.js +18 -0
  57. package/dist/Sphere.js.map +1 -0
  58. package/dist/Transform.d.ts +14 -0
  59. package/dist/Transform.d.ts.map +1 -0
  60. package/dist/Transform.js +28 -0
  61. package/dist/Transform.js.map +1 -0
  62. package/dist/Vector2.d.ts +22 -0
  63. package/dist/Vector2.d.ts.map +1 -0
  64. package/dist/Vector2.js +54 -0
  65. package/dist/Vector2.js.map +1 -0
  66. package/dist/Vector3.d.ts +34 -0
  67. package/dist/Vector3.d.ts.map +1 -0
  68. package/dist/Vector3.js +77 -0
  69. package/dist/Vector3.js.map +1 -0
  70. package/dist/Vector4.d.ts +19 -0
  71. package/dist/Vector4.d.ts.map +1 -0
  72. package/dist/Vector4.js +43 -0
  73. package/dist/Vector4.js.map +1 -0
  74. package/dist/index.d.ts +19 -0
  75. package/dist/index.d.ts.map +1 -0
  76. package/dist/index.js +19 -0
  77. package/dist/index.js.map +1 -0
  78. package/package.json +13 -0
  79. package/src/Box3.ts +65 -0
  80. package/src/Color.ts +49 -0
  81. package/src/Curves.ts +79 -0
  82. package/src/Easing.ts +24 -0
  83. package/src/Euler.ts +30 -0
  84. package/src/Frustum.ts +43 -0
  85. package/src/Interpolation.ts +34 -0
  86. package/src/Matrix3.ts +54 -0
  87. package/src/Matrix4.ts +240 -0
  88. package/src/Plane.ts +34 -0
  89. package/src/Quaternion.ts +178 -0
  90. package/src/Random.ts +32 -0
  91. package/src/Ray.ts +67 -0
  92. package/src/Sphere.ts +18 -0
  93. package/src/Transform.ts +33 -0
  94. package/src/Vector2.ts +66 -0
  95. package/src/Vector3.ts +101 -0
  96. package/src/Vector4.ts +55 -0
  97. package/src/index.ts +18 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Matrix4.d.ts","sourceRoot":"","sources":["../../../../packages/math/src/Matrix4.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAEvC,qBAAa,OAAO;IAClB,QAAQ,CAAC,QAAQ,EAAE,SAAS;QAC1B,MAAM;QAAE,MAAM;QAAE,MAAM;QAAE,MAAM;QAC9B,MAAM;QAAE,MAAM;QAAE,MAAM;QAAE,MAAM;QAC9B,MAAM;QAAE,MAAM;QAAE,MAAM;QAAE,MAAM;QAC9B,MAAM;QAAE,MAAM;QAAE,MAAM;QAAE,MAAM;KAC/B,CAAC;gBAEU,QAAQ,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC;IAS1C,MAAM,CAAC,QAAQ,IAAI,OAAO;IAI1B,MAAM,CAAC,WAAW,CAAC,CAAC,EAAE,OAAO,GAAG,OAAO;IASvC,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,OAAO,GAAG,OAAO;IASnC,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,UAAU,GAAG,OAAO;IAsBvC,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO;IAIhF,MAAM,CAAC,WAAW,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO;IAc3F,MAAM,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO;IAejH,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,GAAG,OAAO;IAmBlE,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO;IAgBjC,cAAc,CAAC,CAAC,EAAE,OAAO,GAAG,OAAO;IAcnC,gBAAgB,CAAC,CAAC,EAAE,OAAO,GAAG,OAAO;IAUrC,SAAS,IAAI,OAAO;IAUpB,WAAW,IAAI,MAAM;IAsBrB,OAAO,IAAI,OAAO;IA0BlB,SAAS,IAAI;QAAE,QAAQ,EAAE,OAAO,CAAC;QAAC,QAAQ,EAAE,UAAU,CAAC;QAAC,KAAK,EAAE,OAAO,CAAA;KAAE;IAoBxE,cAAc,IAAI,OAAO;CAI1B"}
@@ -0,0 +1,204 @@
1
+ import { Quaternion } from "./Quaternion.js";
2
+ import { Vector3 } from "./Vector3.js";
3
+ import { Vector4 } from "./Vector4.js";
4
+ export class Matrix4 {
5
+ elements;
6
+ constructor(elements) {
7
+ this.elements = elements ? [...elements] : [
8
+ 1, 0, 0, 0,
9
+ 0, 1, 0, 0,
10
+ 0, 0, 1, 0,
11
+ 0, 0, 0, 1
12
+ ];
13
+ }
14
+ static identity() {
15
+ return new Matrix4();
16
+ }
17
+ static translation(v) {
18
+ return new Matrix4([
19
+ 1, 0, 0, 0,
20
+ 0, 1, 0, 0,
21
+ 0, 0, 1, 0,
22
+ v.x, v.y, v.z, 1
23
+ ]);
24
+ }
25
+ static scaling(v) {
26
+ return new Matrix4([
27
+ v.x, 0, 0, 0,
28
+ 0, v.y, 0, 0,
29
+ 0, 0, v.z, 0,
30
+ 0, 0, 0, 1
31
+ ]);
32
+ }
33
+ static rotation(q) {
34
+ const n = q.normalize();
35
+ const x2 = n.x + n.x;
36
+ const y2 = n.y + n.y;
37
+ const z2 = n.z + n.z;
38
+ const xx = n.x * x2;
39
+ const xy = n.x * y2;
40
+ const xz = n.x * z2;
41
+ const yy = n.y * y2;
42
+ const yz = n.y * z2;
43
+ const zz = n.z * z2;
44
+ const wx = n.w * x2;
45
+ const wy = n.w * y2;
46
+ const wz = n.w * z2;
47
+ return new Matrix4([
48
+ 1 - (yy + zz), xy + wz, xz - wy, 0,
49
+ xy - wz, 1 - (xx + zz), yz + wx, 0,
50
+ xz + wy, yz - wx, 1 - (xx + yy), 0,
51
+ 0, 0, 0, 1
52
+ ]);
53
+ }
54
+ static compose(position, rotation, scale) {
55
+ return Matrix4.translation(position).multiply(Matrix4.rotation(rotation)).multiply(Matrix4.scaling(scale));
56
+ }
57
+ static perspective(fovYRadians, aspect, near, far) {
58
+ if (![fovYRadians, aspect, near, far].every(Number.isFinite) || fovYRadians <= 0 || aspect <= 0 || near <= 0 || far <= near) {
59
+ throw new RangeError("Invalid perspective projection parameters.");
60
+ }
61
+ const f = 1 / Math.tan(fovYRadians / 2);
62
+ const nf = 1 / (near - far);
63
+ return new Matrix4([
64
+ f / aspect, 0, 0, 0,
65
+ 0, f, 0, 0,
66
+ 0, 0, (far + near) * nf, -1,
67
+ 0, 0, 2 * far * near * nf, 0
68
+ ]);
69
+ }
70
+ static orthographic(left, right, bottom, top, near, far) {
71
+ if (![left, right, bottom, top, near, far].every(Number.isFinite) || left === right || bottom === top || near === far) {
72
+ throw new RangeError("Invalid orthographic projection parameters.");
73
+ }
74
+ const lr = 1 / (left - right);
75
+ const bt = 1 / (bottom - top);
76
+ const nf = 1 / (near - far);
77
+ return new Matrix4([
78
+ -2 * lr, 0, 0, 0,
79
+ 0, -2 * bt, 0, 0,
80
+ 0, 0, 2 * nf, 0,
81
+ (left + right) * lr, (top + bottom) * bt, (far + near) * nf, 1
82
+ ]);
83
+ }
84
+ static lookAt(eye, target, up) {
85
+ const z = eye.subtract(target).normalize();
86
+ if (z.lengthSquared() === 0)
87
+ throw new RangeError("Look-at eye and target must not be identical.");
88
+ let x = up.cross(z).normalize();
89
+ if (x.lengthSquared() === 0) {
90
+ const fallbackUp = Math.abs(up.z) === 1 ? Vector3.up : Vector3.forward;
91
+ x = fallbackUp.cross(z).normalize();
92
+ }
93
+ const y = z.cross(x).normalize();
94
+ return new Matrix4([
95
+ x.x, y.x, z.x, 0,
96
+ x.y, y.y, z.y, 0,
97
+ x.z, y.z, z.z, 0,
98
+ -x.dot(eye), -y.dot(eye), -z.dot(eye), 1
99
+ ]);
100
+ }
101
+ multiply(other) {
102
+ const a = this.elements;
103
+ const b = other.elements;
104
+ const out = new Array(16);
105
+ for (let row = 0; row < 4; row++) {
106
+ for (let col = 0; col < 4; col++) {
107
+ out[col * 4 + row] =
108
+ a[0 * 4 + row] * b[col * 4 + 0] +
109
+ a[1 * 4 + row] * b[col * 4 + 1] +
110
+ a[2 * 4 + row] * b[col * 4 + 2] +
111
+ a[3 * 4 + row] * b[col * 4 + 3];
112
+ }
113
+ }
114
+ return new Matrix4(out);
115
+ }
116
+ transformPoint(v) {
117
+ const m = this.elements;
118
+ const x = v.x;
119
+ const y = v.y;
120
+ const z = v.z;
121
+ const w = m[3] * x + m[7] * y + m[11] * z + m[15];
122
+ const iw = w === 0 ? 1 : 1 / w;
123
+ return new Vector3((m[0] * x + m[4] * y + m[8] * z + m[12]) * iw, (m[1] * x + m[5] * y + m[9] * z + m[13]) * iw, (m[2] * x + m[6] * y + m[10] * z + m[14]) * iw);
124
+ }
125
+ transformVector4(v) {
126
+ const m = this.elements;
127
+ return new Vector4(m[0] * v.x + m[4] * v.y + m[8] * v.z + m[12] * v.w, m[1] * v.x + m[5] * v.y + m[9] * v.z + m[13] * v.w, m[2] * v.x + m[6] * v.y + m[10] * v.z + m[14] * v.w, m[3] * v.x + m[7] * v.y + m[11] * v.z + m[15] * v.w);
128
+ }
129
+ transpose() {
130
+ const m = this.elements;
131
+ return new Matrix4([
132
+ m[0], m[4], m[8], m[12],
133
+ m[1], m[5], m[9], m[13],
134
+ m[2], m[6], m[10], m[14],
135
+ m[3], m[7], m[11], m[15]
136
+ ]);
137
+ }
138
+ determinant() {
139
+ const m = this.elements;
140
+ const m00 = m[0], m01 = m[4], m02 = m[8], m03 = m[12];
141
+ const m10 = m[1], m11 = m[5], m12 = m[9], m13 = m[13];
142
+ const m20 = m[2], m21 = m[6], m22 = m[10], m23 = m[14];
143
+ const m30 = m[3], m31 = m[7], m32 = m[11], m33 = m[15];
144
+ return (m03 * m12 * m21 * m30 - m02 * m13 * m21 * m30 -
145
+ m03 * m11 * m22 * m30 + m01 * m13 * m22 * m30 +
146
+ m02 * m11 * m23 * m30 - m01 * m12 * m23 * m30 -
147
+ m03 * m12 * m20 * m31 + m02 * m13 * m20 * m31 +
148
+ m03 * m10 * m22 * m31 - m00 * m13 * m22 * m31 -
149
+ m02 * m10 * m23 * m31 + m00 * m12 * m23 * m31 +
150
+ m03 * m11 * m20 * m32 - m01 * m13 * m20 * m32 -
151
+ m03 * m10 * m21 * m32 + m00 * m13 * m21 * m32 +
152
+ m01 * m10 * m23 * m32 - m00 * m11 * m23 * m32 -
153
+ m02 * m11 * m20 * m33 + m01 * m12 * m20 * m33 +
154
+ m02 * m10 * m21 * m33 - m00 * m12 * m21 * m33 -
155
+ m01 * m10 * m22 * m33 + m00 * m11 * m22 * m33);
156
+ }
157
+ inverse() {
158
+ const m = this.elements;
159
+ const inv = new Array(16);
160
+ inv[0] = m[5] * m[10] * m[15] - m[5] * m[11] * m[14] - m[9] * m[6] * m[15] + m[9] * m[7] * m[14] + m[13] * m[6] * m[11] - m[13] * m[7] * m[10];
161
+ inv[4] = -m[4] * m[10] * m[15] + m[4] * m[11] * m[14] + m[8] * m[6] * m[15] - m[8] * m[7] * m[14] - m[12] * m[6] * m[11] + m[12] * m[7] * m[10];
162
+ inv[8] = m[4] * m[9] * m[15] - m[4] * m[11] * m[13] - m[8] * m[5] * m[15] + m[8] * m[7] * m[13] + m[12] * m[5] * m[11] - m[12] * m[7] * m[9];
163
+ inv[12] = -m[4] * m[9] * m[14] + m[4] * m[10] * m[13] + m[8] * m[5] * m[14] - m[8] * m[6] * m[13] - m[12] * m[5] * m[10] + m[12] * m[6] * m[9];
164
+ inv[1] = -m[1] * m[10] * m[15] + m[1] * m[11] * m[14] + m[9] * m[2] * m[15] - m[9] * m[3] * m[14] - m[13] * m[2] * m[11] + m[13] * m[3] * m[10];
165
+ inv[5] = m[0] * m[10] * m[15] - m[0] * m[11] * m[14] - m[8] * m[2] * m[15] + m[8] * m[3] * m[14] + m[12] * m[2] * m[11] - m[12] * m[3] * m[10];
166
+ inv[9] = -m[0] * m[9] * m[15] + m[0] * m[11] * m[13] + m[8] * m[1] * m[15] - m[8] * m[3] * m[13] - m[12] * m[1] * m[11] + m[12] * m[3] * m[9];
167
+ inv[13] = m[0] * m[9] * m[14] - m[0] * m[10] * m[13] - m[8] * m[1] * m[14] + m[8] * m[2] * m[13] + m[12] * m[1] * m[10] - m[12] * m[2] * m[9];
168
+ inv[2] = m[1] * m[6] * m[15] - m[1] * m[7] * m[14] - m[5] * m[2] * m[15] + m[5] * m[3] * m[14] + m[13] * m[2] * m[7] - m[13] * m[3] * m[6];
169
+ inv[6] = -m[0] * m[6] * m[15] + m[0] * m[7] * m[14] + m[4] * m[2] * m[15] - m[4] * m[3] * m[14] - m[12] * m[2] * m[7] + m[12] * m[3] * m[6];
170
+ inv[10] = m[0] * m[5] * m[15] - m[0] * m[7] * m[13] - m[4] * m[1] * m[15] + m[4] * m[3] * m[13] + m[12] * m[1] * m[7] - m[12] * m[3] * m[5];
171
+ inv[14] = -m[0] * m[5] * m[14] + m[0] * m[6] * m[13] + m[4] * m[1] * m[14] - m[4] * m[2] * m[13] - m[12] * m[1] * m[6] + m[12] * m[2] * m[5];
172
+ inv[3] = -m[1] * m[6] * m[11] + m[1] * m[7] * m[10] + m[5] * m[2] * m[11] - m[5] * m[3] * m[10] - m[9] * m[2] * m[7] + m[9] * m[3] * m[6];
173
+ inv[7] = m[0] * m[6] * m[11] - m[0] * m[7] * m[10] - m[4] * m[2] * m[11] + m[4] * m[3] * m[10] + m[8] * m[2] * m[7] - m[8] * m[3] * m[6];
174
+ inv[11] = -m[0] * m[5] * m[11] + m[0] * m[7] * m[9] + m[4] * m[1] * m[11] - m[4] * m[3] * m[9] - m[8] * m[1] * m[7] + m[8] * m[3] * m[5];
175
+ inv[15] = m[0] * m[5] * m[10] - m[0] * m[6] * m[9] - m[4] * m[1] * m[10] + m[4] * m[2] * m[9] + m[8] * m[1] * m[6] - m[8] * m[2] * m[5];
176
+ const det = m[0] * inv[0] + m[1] * inv[4] + m[2] * inv[8] + m[3] * inv[12];
177
+ if (Math.abs(det) < 1e-12)
178
+ throw new RangeError("Matrix4 is singular.");
179
+ return new Matrix4(inv.map((value) => value / det));
180
+ }
181
+ decompose() {
182
+ const m = this.elements;
183
+ const position = new Vector3(m[12], m[13], m[14]);
184
+ const sx = new Vector3(m[0], m[1], m[2]).length();
185
+ const sy = new Vector3(m[4], m[5], m[6]).length();
186
+ const sz = new Vector3(m[8], m[9], m[10]).length();
187
+ if (sx === 0 || sy === 0 || sz === 0)
188
+ throw new RangeError("Cannot decompose matrix with zero scale.");
189
+ const det = this.determinant();
190
+ const scale = new Vector3(det < 0 ? -sx : sx, sy, sz);
191
+ const rotationMatrix = new Matrix4([
192
+ m[0] / scale.x, m[1] / scale.x, m[2] / scale.x, 0,
193
+ m[4] / scale.y, m[5] / scale.y, m[6] / scale.y, 0,
194
+ m[8] / scale.z, m[9] / scale.z, m[10] / scale.z, 0,
195
+ 0, 0, 0, 1
196
+ ]);
197
+ return { position, rotation: Quaternion.fromRotationMatrix(rotationMatrix), scale };
198
+ }
199
+ getTranslation() {
200
+ const m = this.elements;
201
+ return new Vector3(m[12], m[13], m[14]);
202
+ }
203
+ }
204
+ //# sourceMappingURL=Matrix4.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Matrix4.js","sourceRoot":"","sources":["../../../../packages/math/src/Matrix4.ts"],"names":[],"mappings":"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GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;QACvD,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;QACvD,OAAO,CACL,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG;YAC7C,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG;YAC7C,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG;YAC7C,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG;YAC7C,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG;YAC7C,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG;YAC7C,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG;YAC7C,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG;YAC7C,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG;YAC7C,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG;YAC7C,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG;YAC7C,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAC9C,CAAC;IACJ,CAAC;IAED,OAAO;QACL,MAAM,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC;QACxB,MAAM,GAAG,GAAG,IAAI,KAAK,CAAS,EAAE,CAAC,CAAC;QAElC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;QAC/I,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;QAChJ,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7I,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/I,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;QAChJ,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;QAC/I,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9I,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9I,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3I,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAC5I,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAC5I,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7I,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1I,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACzI,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,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"}
@@ -0,0 +1,11 @@
1
+ import { Vector3 } from "./Vector3.js";
2
+ export declare class Plane {
3
+ readonly normal: Vector3;
4
+ readonly constant: number;
5
+ constructor(normal?: Vector3, constant?: number);
6
+ static fromPointNormal(point: Vector3, normal: Vector3): Plane;
7
+ distanceToPoint(point: Vector3): number;
8
+ projectPoint(point: Vector3): Vector3;
9
+ intersectLine(start: Vector3, end: Vector3): Vector3 | undefined;
10
+ }
11
+ //# sourceMappingURL=Plane.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Plane.d.ts","sourceRoot":"","sources":["../../../../packages/math/src/Plane.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAEvC,qBAAa,KAAK;IAChB,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;gBAEd,MAAM,UAAqB,EAAE,QAAQ,SAAI;IAOrD,MAAM,CAAC,eAAe,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,GAAG,KAAK;IAK9D,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM;IAIvC,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO;IAIrC,aAAa,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,GAAG,OAAO,GAAG,SAAS;CAOjE"}
package/dist/Plane.js ADDED
@@ -0,0 +1,31 @@
1
+ import { Vector3 } from "./Vector3.js";
2
+ export class Plane {
3
+ normal;
4
+ constant;
5
+ constructor(normal = Vector3.up.clone(), constant = 0) {
6
+ const len = normal.length();
7
+ if (len === 0)
8
+ throw new RangeError("Plane normal must be non-zero.");
9
+ this.normal = normal.multiplyScalar(1 / len);
10
+ this.constant = constant / len;
11
+ }
12
+ static fromPointNormal(point, normal) {
13
+ const normalized = normal.normalize();
14
+ return new Plane(normalized, -point.dot(normalized));
15
+ }
16
+ distanceToPoint(point) {
17
+ return this.normal.dot(point) + this.constant;
18
+ }
19
+ projectPoint(point) {
20
+ return point.subtract(this.normal.multiplyScalar(this.distanceToPoint(point)));
21
+ }
22
+ intersectLine(start, end) {
23
+ const direction = end.subtract(start);
24
+ const denominator = this.normal.dot(direction);
25
+ if (Math.abs(denominator) < 1e-12)
26
+ return undefined;
27
+ const t = -(start.dot(this.normal) + this.constant) / denominator;
28
+ return t < 0 || t > 1 ? undefined : start.add(direction.multiplyScalar(t));
29
+ }
30
+ }
31
+ //# sourceMappingURL=Plane.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Plane.js","sourceRoot":"","sources":["../../../../packages/math/src/Plane.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAEvC,MAAM,OAAO,KAAK;IACP,MAAM,CAAU;IAChB,QAAQ,CAAS;IAE1B,YAAY,MAAM,GAAG,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,EAAE,QAAQ,GAAG,CAAC;QACnD,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC;QAC5B,IAAI,GAAG,KAAK,CAAC;YAAE,MAAM,IAAI,UAAU,CAAC,gCAAgC,CAAC,CAAC;QACtE,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,cAAc,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC;QAC7C,IAAI,CAAC,QAAQ,GAAG,QAAQ,GAAG,GAAG,CAAC;IACjC,CAAC;IAED,MAAM,CAAC,eAAe,CAAC,KAAc,EAAE,MAAe;QACpD,MAAM,UAAU,GAAG,MAAM,CAAC,SAAS,EAAE,CAAC;QACtC,OAAO,IAAI,KAAK,CAAC,UAAU,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC;IACvD,CAAC;IAED,eAAe,CAAC,KAAc;QAC5B,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC;IAChD,CAAC;IAED,YAAY,CAAC,KAAc;QACzB,OAAO,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACjF,CAAC;IAED,aAAa,CAAC,KAAc,EAAE,GAAY;QACxC,MAAM,SAAS,GAAG,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QACtC,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAC/C,IAAI,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,GAAG,KAAK;YAAE,OAAO,SAAS,CAAC;QACpD,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,WAAW,CAAC;QAClE,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7E,CAAC;CACF"}
@@ -0,0 +1,25 @@
1
+ import { Vector3 } from "./Vector3.js";
2
+ import type { Matrix4 } from "./Matrix4.js";
3
+ export type EulerOrder = "XYZ";
4
+ export declare class Quaternion {
5
+ readonly x: number;
6
+ readonly y: number;
7
+ readonly z: number;
8
+ readonly w: number;
9
+ static readonly identity: Readonly<Quaternion>;
10
+ constructor(x?: number, y?: number, z?: number, w?: number);
11
+ static fromAxisAngle(axis: Vector3, radians: number): Quaternion;
12
+ static fromUnitVectors(from: Vector3, to: Vector3): Quaternion;
13
+ static fromEuler(x: number, y: number, z: number, order?: EulerOrder): Quaternion;
14
+ static fromRotationMatrix(matrix: Matrix4): Quaternion;
15
+ clone(): Quaternion;
16
+ length(): number;
17
+ normalize(): Quaternion;
18
+ conjugate(): Quaternion;
19
+ inverse(): Quaternion;
20
+ multiply(q: Quaternion): Quaternion;
21
+ rotateVector(v: Vector3): Vector3;
22
+ slerp(to: Quaternion, t: number): Quaternion;
23
+ equals(q: Quaternion, epsilon?: number): boolean;
24
+ }
25
+ //# sourceMappingURL=Quaternion.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Quaternion.d.ts","sourceRoot":"","sources":["../../../../packages/math/src/Quaternion.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAE5C,MAAM,MAAM,UAAU,GAAG,KAAK,CAAC;AAE/B,qBAAa,UAAU;IAInB,QAAQ,CAAC,CAAC;IACV,QAAQ,CAAC,CAAC;IACV,QAAQ,CAAC,CAAC;IACV,QAAQ,CAAC,CAAC;IANZ,MAAM,CAAC,QAAQ,CAAC,QAAQ,uBAA6C;gBAG1D,CAAC,SAAI,EACL,CAAC,SAAI,EACL,CAAC,SAAI,EACL,CAAC,SAAI;IAGhB,MAAM,CAAC,aAAa,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,GAAG,UAAU;IAQhE,MAAM,CAAC,eAAe,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,GAAG,UAAU;IAe9D,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,KAAK,GAAE,UAAkB,GAAG,UAAU;IAiBxF,MAAM,CAAC,kBAAkB,CAAC,MAAM,EAAE,OAAO,GAAG,UAAU;IA2CtD,KAAK,IAAI,UAAU;IAInB,MAAM,IAAI,MAAM;IAIhB,SAAS,IAAI,UAAU;IAMvB,SAAS,IAAI,UAAU;IAIvB,OAAO,IAAI,UAAU;IAYrB,QAAQ,CAAC,CAAC,EAAE,UAAU,GAAG,UAAU;IASnC,YAAY,CAAC,CAAC,EAAE,OAAO,GAAG,OAAO;IAMjC,KAAK,CAAC,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,MAAM,GAAG,UAAU;IA+B5C,MAAM,CAAC,CAAC,EAAE,UAAU,EAAE,OAAO,SAAQ,GAAG,OAAO;CAGhD"}
@@ -0,0 +1,121 @@
1
+ import { Vector3 } from "./Vector3.js";
2
+ export class Quaternion {
3
+ x;
4
+ y;
5
+ z;
6
+ w;
7
+ static identity = Object.freeze(new Quaternion(0, 0, 0, 1));
8
+ constructor(x = 0, y = 0, z = 0, w = 1) {
9
+ this.x = x;
10
+ this.y = y;
11
+ this.z = z;
12
+ this.w = w;
13
+ }
14
+ static fromAxisAngle(axis, radians) {
15
+ const normalized = axis.normalize();
16
+ if (normalized.lengthSquared() === 0)
17
+ throw new RangeError("Axis must be non-zero.");
18
+ const half = radians / 2;
19
+ const s = Math.sin(half);
20
+ return new Quaternion(normalized.x * s, normalized.y * s, normalized.z * s, Math.cos(half)).normalize();
21
+ }
22
+ static fromUnitVectors(from, to) {
23
+ const vFrom = from.normalize();
24
+ const vTo = to.normalize();
25
+ const dot = vFrom.dot(vTo);
26
+ if (dot < -0.999999) {
27
+ const axis = Math.abs(vFrom.x) > 0.1 ? Vector3.up.cross(vFrom).normalize() : Vector3.right.cross(vFrom).normalize();
28
+ return Quaternion.fromAxisAngle(axis, Math.PI);
29
+ }
30
+ if (dot > 0.999999)
31
+ return Quaternion.identity.clone();
32
+ const cross = vFrom.cross(vTo);
33
+ return new Quaternion(cross.x, cross.y, cross.z, 1 + dot).normalize();
34
+ }
35
+ static fromEuler(x, y, z, order = "XYZ") {
36
+ if (order !== "XYZ")
37
+ throw new RangeError(`Unsupported Euler order: ${order}`);
38
+ if (![x, y, z].every(Number.isFinite))
39
+ throw new RangeError("Euler angles must be finite.");
40
+ const c1 = Math.cos(x / 2);
41
+ const c2 = Math.cos(y / 2);
42
+ const c3 = Math.cos(z / 2);
43
+ const s1 = Math.sin(x / 2);
44
+ const s2 = Math.sin(y / 2);
45
+ 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();
47
+ }
48
+ static fromRotationMatrix(matrix) {
49
+ const m = matrix.elements;
50
+ const m11 = m[0], m12 = m[4], m13 = m[8];
51
+ const m21 = m[1], m22 = m[5], m23 = m[9];
52
+ const m31 = m[2], m32 = m[6], m33 = m[10];
53
+ const trace = m11 + m22 + m33;
54
+ if (trace > 0) {
55
+ const s = 0.5 / Math.sqrt(trace + 1);
56
+ return new Quaternion((m32 - m23) * s, (m13 - m31) * s, (m21 - m12) * s, 0.25 / s).normalize();
57
+ }
58
+ if (m11 > m22 && m11 > m33) {
59
+ const s = 2 * Math.sqrt(1 + m11 - m22 - m33);
60
+ return new Quaternion(0.25 * s, (m12 + m21) / s, (m13 + m31) / s, (m32 - m23) / s).normalize();
61
+ }
62
+ if (m22 > m33) {
63
+ const s = 2 * Math.sqrt(1 + m22 - m11 - m33);
64
+ return new Quaternion((m12 + m21) / s, 0.25 * s, (m23 + m32) / s, (m13 - m31) / s).normalize();
65
+ }
66
+ const s = 2 * Math.sqrt(1 + m33 - m11 - m22);
67
+ return new Quaternion((m13 + m31) / s, (m23 + m32) / s, 0.25 * s, (m21 - m12) / s).normalize();
68
+ }
69
+ clone() {
70
+ return new Quaternion(this.x, this.y, this.z, this.w);
71
+ }
72
+ length() {
73
+ return Math.hypot(this.x, this.y, this.z, this.w);
74
+ }
75
+ normalize() {
76
+ const len = this.length();
77
+ if (len === 0)
78
+ return Quaternion.identity.clone();
79
+ return new Quaternion(this.x / len, this.y / len, this.z / len, this.w / len);
80
+ }
81
+ conjugate() {
82
+ return new Quaternion(-this.x, -this.y, -this.z, this.w);
83
+ }
84
+ inverse() {
85
+ const lengthSquared = this.x * this.x + this.y * this.y + this.z * this.z + this.w * this.w;
86
+ if (lengthSquared === 0)
87
+ return Quaternion.identity.clone();
88
+ const conjugate = this.conjugate();
89
+ return new Quaternion(conjugate.x / lengthSquared, conjugate.y / lengthSquared, conjugate.z / lengthSquared, conjugate.w / lengthSquared);
90
+ }
91
+ multiply(q) {
92
+ return new Quaternion(this.w * q.x + this.x * q.w + this.y * q.z - this.z * q.y, this.w * q.y - this.x * q.z + this.y * q.w + this.z * q.x, this.w * q.z + this.x * q.y - this.y * q.x + this.z * q.w, this.w * q.w - this.x * q.x - this.y * q.y - this.z * q.z);
93
+ }
94
+ rotateVector(v) {
95
+ const qv = new Quaternion(v.x, v.y, v.z, 0);
96
+ const result = this.multiply(qv).multiply(this.conjugate());
97
+ return new Vector3(result.x, result.y, result.z);
98
+ }
99
+ slerp(to, t) {
100
+ let target = to;
101
+ let cosHalfTheta = this.x * to.x + this.y * to.y + this.z * to.z + this.w * to.w;
102
+ if (cosHalfTheta < 0) {
103
+ target = new Quaternion(-to.x, -to.y, -to.z, -to.w);
104
+ cosHalfTheta = -cosHalfTheta;
105
+ }
106
+ if (cosHalfTheta >= 1.0)
107
+ return this.clone();
108
+ if (cosHalfTheta > 0.9995) {
109
+ return new Quaternion(this.x + t * (target.x - this.x), this.y + t * (target.y - this.y), this.z + t * (target.z - this.z), this.w + t * (target.w - this.w)).normalize();
110
+ }
111
+ const halfTheta = Math.acos(cosHalfTheta);
112
+ const sinHalfTheta = Math.sqrt(1 - cosHalfTheta * cosHalfTheta);
113
+ const ratioA = Math.sin((1 - t) * halfTheta) / sinHalfTheta;
114
+ const ratioB = Math.sin(t * halfTheta) / sinHalfTheta;
115
+ return new Quaternion(this.x * ratioA + target.x * ratioB, this.y * ratioA + target.y * ratioB, this.z * ratioA + target.z * ratioB, this.w * ratioA + target.w * ratioB).normalize();
116
+ }
117
+ equals(q, epsilon = 1e-10) {
118
+ return Math.abs(this.x - q.x) <= epsilon && Math.abs(this.y - q.y) <= epsilon && Math.abs(this.z - q.z) <= epsilon && Math.abs(this.w - q.w) <= epsilon;
119
+ }
120
+ }
121
+ //# sourceMappingURL=Quaternion.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Quaternion.js","sourceRoot":"","sources":["../../../../packages/math/src/Quaternion.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ export declare class SeededRandom {
2
+ private state;
3
+ constructor(seed: number);
4
+ nextUint32(): number;
5
+ nextFloat(): number;
6
+ range(min: number, max: number): number;
7
+ clone(): SeededRandom;
8
+ }
9
+ //# sourceMappingURL=Random.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Random.d.ts","sourceRoot":"","sources":["../../../../packages/math/src/Random.ts"],"names":[],"mappings":"AAAA,qBAAa,YAAY;IACvB,OAAO,CAAC,KAAK,CAAS;gBAEV,IAAI,EAAE,MAAM;IAKxB,UAAU,IAAI,MAAM;IASpB,SAAS,IAAI,MAAM;IAInB,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM;IAKvC,KAAK,IAAI,YAAY;CAKtB"}
package/dist/Random.js ADDED
@@ -0,0 +1,30 @@
1
+ export class SeededRandom {
2
+ state;
3
+ constructor(seed) {
4
+ if (!Number.isInteger(seed))
5
+ throw new RangeError("Seed must be an integer.");
6
+ this.state = seed >>> 0;
7
+ }
8
+ nextUint32() {
9
+ let x = this.state;
10
+ x ^= x << 13;
11
+ x ^= x >>> 17;
12
+ x ^= x << 5;
13
+ this.state = x >>> 0;
14
+ return this.state;
15
+ }
16
+ nextFloat() {
17
+ return this.nextUint32() / 0x1_0000_0000;
18
+ }
19
+ range(min, max) {
20
+ if (min > max)
21
+ throw new RangeError("min must be <= max");
22
+ return min + (max - min) * this.nextFloat();
23
+ }
24
+ clone() {
25
+ const random = new SeededRandom(0);
26
+ random.state = this.state;
27
+ return random;
28
+ }
29
+ }
30
+ //# sourceMappingURL=Random.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Random.js","sourceRoot":"","sources":["../../../../packages/math/src/Random.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,YAAY;IACf,KAAK,CAAS;IAEtB,YAAY,IAAY;QACtB,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC;YAAE,MAAM,IAAI,UAAU,CAAC,0BAA0B,CAAC,CAAC;QAC9E,IAAI,CAAC,KAAK,GAAG,IAAI,KAAK,CAAC,CAAC;IAC1B,CAAC;IAED,UAAU;QACR,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC;QACnB,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;QACb,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;QACd,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACZ,IAAI,CAAC,KAAK,GAAG,CAAC,KAAK,CAAC,CAAC;QACrB,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAED,SAAS;QACP,OAAO,IAAI,CAAC,UAAU,EAAE,GAAG,aAAa,CAAC;IAC3C,CAAC;IAED,KAAK,CAAC,GAAW,EAAE,GAAW;QAC5B,IAAI,GAAG,GAAG,GAAG;YAAE,MAAM,IAAI,UAAU,CAAC,oBAAoB,CAAC,CAAC;QAC1D,OAAO,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;IAC9C,CAAC;IAED,KAAK;QACH,MAAM,MAAM,GAAG,IAAI,YAAY,CAAC,CAAC,CAAC,CAAC;QACnC,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QAC1B,OAAO,MAAM,CAAC;IAChB,CAAC;CACF"}
package/dist/Ray.d.ts ADDED
@@ -0,0 +1,14 @@
1
+ import { Box3 } from "./Box3.js";
2
+ import { Plane } from "./Plane.js";
3
+ import { Sphere } from "./Sphere.js";
4
+ import { Vector3 } from "./Vector3.js";
5
+ export declare class Ray {
6
+ readonly origin: Vector3;
7
+ readonly direction: Vector3;
8
+ constructor(origin?: Vector3, direction?: Vector3);
9
+ at(distance: number): Vector3;
10
+ intersectPlane(plane: Plane): Vector3 | undefined;
11
+ intersectSphere(sphere: Sphere): Vector3 | undefined;
12
+ intersectBox(box: Box3): Vector3 | undefined;
13
+ }
14
+ //# sourceMappingURL=Ray.d.ts.map
@@ -0,0 +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"}
package/dist/Ray.js ADDED
@@ -0,0 +1,67 @@
1
+ import { Box3 } from "./Box3.js";
2
+ import { Plane } from "./Plane.js";
3
+ import { Sphere } from "./Sphere.js";
4
+ import { Vector3 } from "./Vector3.js";
5
+ export class Ray {
6
+ origin;
7
+ direction;
8
+ constructor(origin = Vector3.zero.clone(), direction = Vector3.forward.clone()) {
9
+ const normalized = direction.normalize();
10
+ if (normalized.lengthSquared() === 0)
11
+ throw new RangeError("Ray direction must be non-zero.");
12
+ this.origin = origin;
13
+ this.direction = normalized;
14
+ }
15
+ at(distance) {
16
+ return this.origin.add(this.direction.multiplyScalar(distance));
17
+ }
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);
24
+ }
25
+ intersectSphere(sphere) {
26
+ const l = sphere.center.subtract(this.origin);
27
+ const tca = l.dot(this.direction);
28
+ const d2 = l.dot(l) - tca * tca;
29
+ const radius2 = sphere.radius * sphere.radius;
30
+ if (d2 > radius2)
31
+ return undefined;
32
+ const thc = Math.sqrt(radius2 - d2);
33
+ const t0 = tca - thc;
34
+ const t1 = tca + thc;
35
+ const distance = t0 >= 0 ? t0 : t1;
36
+ return distance < 0 ? undefined : this.at(distance);
37
+ }
38
+ intersectBox(box) {
39
+ if (box.isEmpty())
40
+ return undefined;
41
+ let tmin = Number.NEGATIVE_INFINITY;
42
+ let tmax = Number.POSITIVE_INFINITY;
43
+ for (const axis of ["x", "y", "z"]) {
44
+ const origin = this.origin[axis];
45
+ const direction = this.direction[axis];
46
+ const min = box.min[axis];
47
+ const max = box.max[axis];
48
+ if (Math.abs(direction) < 1e-12) {
49
+ if (origin < min || origin > max)
50
+ return undefined;
51
+ continue;
52
+ }
53
+ const invD = 1 / direction;
54
+ let t1 = (min - origin) * invD;
55
+ let t2 = (max - origin) * invD;
56
+ if (t1 > t2)
57
+ [t1, t2] = [t2, t1];
58
+ tmin = Math.max(tmin, t1);
59
+ tmax = Math.min(tmax, t2);
60
+ if (tmin > tmax)
61
+ return undefined;
62
+ }
63
+ const distance = tmin >= 0 ? tmin : tmax;
64
+ return distance < 0 ? undefined : this.at(distance);
65
+ }
66
+ }
67
+ //# sourceMappingURL=Ray.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Ray.js","sourceRoot":"","sources":["../../../../packages/math/src/Ray.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import { Vector3 } from "./Vector3.js";
2
+ export declare class Sphere {
3
+ readonly center: Vector3;
4
+ readonly radius: number;
5
+ constructor(center?: Vector3, radius?: number);
6
+ containsPoint(point: Vector3): boolean;
7
+ intersectsSphere(other: Sphere): boolean;
8
+ }
9
+ //# sourceMappingURL=Sphere.d.ts.map
@@ -0,0 +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"}