@pawells/math-extended 1.0.5 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (106) hide show
  1. package/README.md +5 -5
  2. package/build/angles.d.ts +43 -3
  3. package/build/angles.d.ts.map +1 -1
  4. package/build/angles.js +61 -34
  5. package/build/angles.js.map +1 -1
  6. package/build/clamp.d.ts +5 -3
  7. package/build/clamp.d.ts.map +1 -1
  8. package/build/clamp.js +5 -3
  9. package/build/clamp.js.map +1 -1
  10. package/build/interpolation.d.ts +444 -67
  11. package/build/interpolation.d.ts.map +1 -1
  12. package/build/interpolation.js +444 -67
  13. package/build/interpolation.js.map +1 -1
  14. package/build/matrices/_exports.d.ts +13 -0
  15. package/build/matrices/_exports.d.ts.map +1 -0
  16. package/build/matrices/_exports.js +13 -0
  17. package/build/matrices/_exports.js.map +1 -0
  18. package/build/matrices/arithmetic.d.ts +170 -181
  19. package/build/matrices/arithmetic.d.ts.map +1 -1
  20. package/build/matrices/arithmetic.js +192 -202
  21. package/build/matrices/arithmetic.js.map +1 -1
  22. package/build/matrices/asserts.d.ts +244 -116
  23. package/build/matrices/asserts.d.ts.map +1 -1
  24. package/build/matrices/asserts.js +291 -94
  25. package/build/matrices/asserts.js.map +1 -1
  26. package/build/matrices/core.d.ts +40 -41
  27. package/build/matrices/core.d.ts.map +1 -1
  28. package/build/matrices/core.js +12 -13
  29. package/build/matrices/core.js.map +1 -1
  30. package/build/matrices/decompositions.d.ts +121 -124
  31. package/build/matrices/decompositions.d.ts.map +1 -1
  32. package/build/matrices/decompositions.js +168 -226
  33. package/build/matrices/decompositions.js.map +1 -1
  34. package/build/matrices/index.d.ts +3 -2
  35. package/build/matrices/index.d.ts.map +1 -1
  36. package/build/matrices/index.js +5 -2
  37. package/build/matrices/index.js.map +1 -1
  38. package/build/matrices/linear-algebra.d.ts +18 -13
  39. package/build/matrices/linear-algebra.d.ts.map +1 -1
  40. package/build/matrices/linear-algebra.js +58 -23
  41. package/build/matrices/linear-algebra.js.map +1 -1
  42. package/build/matrices/normalization.d.ts +8 -8
  43. package/build/matrices/transformations.d.ts +184 -168
  44. package/build/matrices/transformations.d.ts.map +1 -1
  45. package/build/matrices/transformations.js +99 -83
  46. package/build/matrices/transformations.js.map +1 -1
  47. package/build/matrices/types.d.ts +12 -12
  48. package/build/matrices/types.d.ts.map +1 -1
  49. package/build/quaternions/_exports.d.ts +11 -0
  50. package/build/quaternions/_exports.d.ts.map +1 -0
  51. package/build/quaternions/_exports.js +11 -0
  52. package/build/quaternions/_exports.js.map +1 -0
  53. package/build/quaternions/asserts.d.ts +115 -7
  54. package/build/quaternions/asserts.d.ts.map +1 -1
  55. package/build/quaternions/asserts.js +162 -8
  56. package/build/quaternions/asserts.js.map +1 -1
  57. package/build/quaternions/conversions.d.ts +31 -21
  58. package/build/quaternions/conversions.d.ts.map +1 -1
  59. package/build/quaternions/conversions.js +28 -18
  60. package/build/quaternions/conversions.js.map +1 -1
  61. package/build/quaternions/core.d.ts +73 -41
  62. package/build/quaternions/core.d.ts.map +1 -1
  63. package/build/quaternions/core.js +84 -49
  64. package/build/quaternions/core.js.map +1 -1
  65. package/build/quaternions/index.d.ts +3 -2
  66. package/build/quaternions/index.d.ts.map +1 -1
  67. package/build/quaternions/index.js +5 -2
  68. package/build/quaternions/index.js.map +1 -1
  69. package/build/quaternions/interpolation.d.ts +15 -9
  70. package/build/quaternions/interpolation.d.ts.map +1 -1
  71. package/build/quaternions/interpolation.js +15 -9
  72. package/build/quaternions/interpolation.js.map +1 -1
  73. package/build/quaternions/predefined.d.ts +9 -3
  74. package/build/quaternions/predefined.d.ts.map +1 -1
  75. package/build/quaternions/predefined.js +9 -3
  76. package/build/quaternions/predefined.js.map +1 -1
  77. package/build/quaternions/types.d.ts +3 -3
  78. package/build/random.d.ts +5 -2
  79. package/build/random.d.ts.map +1 -1
  80. package/build/random.js +20 -17
  81. package/build/random.js.map +1 -1
  82. package/build/vectors/_exports.d.ts +10 -0
  83. package/build/vectors/_exports.d.ts.map +1 -0
  84. package/build/vectors/_exports.js +10 -0
  85. package/build/vectors/_exports.js.map +1 -0
  86. package/build/vectors/asserts.d.ts +153 -49
  87. package/build/vectors/asserts.d.ts.map +1 -1
  88. package/build/vectors/asserts.js +202 -52
  89. package/build/vectors/asserts.js.map +1 -1
  90. package/build/vectors/core.d.ts +216 -137
  91. package/build/vectors/core.d.ts.map +1 -1
  92. package/build/vectors/core.js +217 -158
  93. package/build/vectors/core.js.map +1 -1
  94. package/build/vectors/index.d.ts +1 -0
  95. package/build/vectors/index.d.ts.map +1 -1
  96. package/build/vectors/index.js +3 -0
  97. package/build/vectors/index.js.map +1 -1
  98. package/build/vectors/interpolation.d.ts +39 -27
  99. package/build/vectors/interpolation.d.ts.map +1 -1
  100. package/build/vectors/interpolation.js +39 -27
  101. package/build/vectors/interpolation.js.map +1 -1
  102. package/build/vectors/predefined.d.ts +48 -24
  103. package/build/vectors/predefined.d.ts.map +1 -1
  104. package/build/vectors/predefined.js +38 -18
  105. package/build/vectors/predefined.js.map +1 -1
  106. package/package.json +12 -15
@@ -11,8 +11,10 @@ import { TQuaternion, TEulerAngles, TAxisAngle } from './types.js';
11
11
  * @returns Identity quaternion [0, 0, 0, 1]
12
12
  *
13
13
  * @example
14
- * const identity = QuaternionIdentity();
15
- * console.log(identity); // [0, 0, 0, 1]
14
+ * ```typescript
15
+ * const identity = QuaternionIdentity();
16
+ * console.log(identity); // [0, 0, 0, 1]
17
+ * ```
16
18
  */
17
19
  export declare function QuaternionIdentity(): TQuaternion;
18
20
  /**
@@ -23,9 +25,11 @@ export declare function QuaternionIdentity(): TQuaternion;
23
25
  * @returns A new quaternion with identical components
24
26
  *
25
27
  * @example
26
- * const original = [0, 0, 0.707, 0.707];
27
- * const copy = QuaternionClone(original);
28
- * copy[0] = 1; // original remains unchanged
28
+ * ```typescript
29
+ * const original = [0, 0, 0.707, 0.707];
30
+ * const copy = QuaternionClone(original);
31
+ * copy[0] = 1; // original remains unchanged
32
+ * ```
29
33
  */
30
34
  export declare function QuaternionClone(quaternion: TQuaternion): TQuaternion;
31
35
  /**
@@ -40,10 +44,12 @@ export declare function QuaternionClone(quaternion: TQuaternion): TQuaternion;
40
44
  * @returns True if quaternions are equal within tolerance
41
45
  *
42
46
  * @example
43
- * const q1 = [0, 0, 0, 1];
44
- * const q2 = [0, 0, 0, -1];
45
- * console.log(QuaternionEquals(q1, q2)); // false (different components)
46
- * console.log(QuaternionEquals(q1, q2, 1e-6, true)); // true (same rotation)
47
+ * ```typescript
48
+ * const q1 = [0, 0, 0, 1];
49
+ * const q2 = [0, 0, 0, -1];
50
+ * console.log(QuaternionEquals(q1, q2)); // false (different components)
51
+ * console.log(QuaternionEquals(q1, q2, 1e-6, true)); // true (same rotation)
52
+ * ```
47
53
  */
48
54
  export declare function QuaternionEquals(a: TQuaternion, b: TQuaternion, tolerance?: number, checkEquivalence?: boolean): boolean;
49
55
  /**
@@ -54,8 +60,10 @@ export declare function QuaternionEquals(a: TQuaternion, b: TQuaternion, toleran
54
60
  * @returns The magnitude of the quaternion
55
61
  *
56
62
  * @example
57
- * const q = [0, 0, 0, 1];
58
- * console.log(QuaternionMagnitude(q)); // 1
63
+ * ```typescript
64
+ * const q = [0, 0, 0, 1];
65
+ * console.log(QuaternionMagnitude(q)); // 1
66
+ * ```
59
67
  */
60
68
  export declare function QuaternionMagnitude(quaternion: TQuaternion): number;
61
69
  /**
@@ -66,9 +74,11 @@ export declare function QuaternionMagnitude(quaternion: TQuaternion): number;
66
74
  * @returns A normalized quaternion with magnitude 1
67
75
  *
68
76
  * @example
69
- * const q = [1, 1, 1, 1];
70
- * const normalized = QuaternionNormalize(q);
71
- * console.log(QuaternionMagnitude(normalized)); // 1
77
+ * ```typescript
78
+ * const q = [1, 1, 1, 1];
79
+ * const normalized = QuaternionNormalize(q);
80
+ * console.log(QuaternionMagnitude(normalized)); // 1
81
+ * ```
72
82
  */
73
83
  export declare function QuaternionNormalize(quaternion: TQuaternion): TQuaternion;
74
84
  /**
@@ -80,9 +90,11 @@ export declare function QuaternionNormalize(quaternion: TQuaternion): TQuaternio
80
90
  * @returns The conjugate quaternion
81
91
  *
82
92
  * @example
83
- * const q = [0.5, 0.5, 0.5, 0.5];
84
- * const conjugate = QuaternionConjugate(q);
85
- * console.log(conjugate); // [-0.5, -0.5, -0.5, 0.5]
93
+ * ```typescript
94
+ * const q = [0.5, 0.5, 0.5, 0.5];
95
+ * const conjugate = QuaternionConjugate(q);
96
+ * console.log(conjugate); // [-0.5, -0.5, -0.5, 0.5]
97
+ * ```
86
98
  */
87
99
  export declare function QuaternionConjugate(quaternion: TQuaternion): TQuaternion;
88
100
  /**
@@ -94,8 +106,10 @@ export declare function QuaternionConjugate(quaternion: TQuaternion): TQuaternio
94
106
  * @returns The inverse quaternion
95
107
  *
96
108
  * @example
97
- * const q = [0, 0, 0.707, 0.707]; // 90° rotation around Z
98
- * const inverse = QuaternionInverse(q); // -90° rotation around Z
109
+ * ```typescript
110
+ * const q = [0, 0, 0.707, 0.707]; // 90° rotation around Z
111
+ * const inverse = QuaternionInverse(q); // -90° rotation around Z
112
+ * ```
99
113
  */
100
114
  export declare function QuaternionInverse(quaternion: TQuaternion): TQuaternion;
101
115
  /**
@@ -108,9 +122,11 @@ export declare function QuaternionInverse(quaternion: TQuaternion): TQuaternion;
108
122
  * @returns The product quaternion representing the combined rotation
109
123
  *
110
124
  * @example
111
- * const rotX = QuaternionFromAxisAngle([1, 0, 0], Math.PI/2); // 90° around X
112
- * const rotY = QuaternionFromAxisAngle([0, 1, 0], Math.PI/2); // 90° around Y
113
- * const combined = QuaternionMultiply(rotX, rotY); // Y rotation then X rotation
125
+ * ```typescript
126
+ * const rotX = QuaternionFromAxisAngle([1, 0, 0], Math.PI/2); // 90° around X
127
+ * const rotY = QuaternionFromAxisAngle([0, 1, 0], Math.PI/2); // 90° around Y
128
+ * const combined = QuaternionMultiply(rotX, rotY); // Y rotation then X rotation
129
+ * ```
114
130
  */
115
131
  export declare function QuaternionMultiply(a: TQuaternion, b: TQuaternion): TQuaternion;
116
132
  /**
@@ -122,9 +138,11 @@ export declare function QuaternionMultiply(a: TQuaternion, b: TQuaternion): TQua
122
138
  * @returns A quaternion representing the rotation
123
139
  *
124
140
  * @example
125
- * const axis = [0, 1, 0]; // Y-axis
126
- * const angle = Math.PI / 2; // 90 degrees
127
- * const q = QuaternionFromAxisAngle(axis, angle);
141
+ * ```typescript
142
+ * const axis = [0, 1, 0]; // Y-axis
143
+ * const angle = Math.PI / 2; // 90 degrees
144
+ * const q = QuaternionFromAxisAngle(axis, angle);
145
+ * ```
128
146
  */
129
147
  export declare function QuaternionFromAxisAngle(axis: TVector3, angle: number): TQuaternion;
130
148
  /**
@@ -137,13 +155,19 @@ export declare function QuaternionFromAxisAngleVector(axisAngle: TAxisAngle): TQ
137
155
  /**
138
156
  * Converts a quaternion to axis-angle representation.
139
157
  *
140
- * @param quaternion - The quaternion to convert
141
- * @returns The axis-angle representation as [x, y, z, angle]
158
+ * The quaternion is first normalized to canonical form (w ≥ 0) so that q and -q,
159
+ * which represent the same rotation, always produce the same axis-angle result.
160
+ *
161
+ * @param quaternion - The quaternion to convert (must be normalized)
162
+ * @returns The axis-angle representation as [x, y, z, angle] where angle ∈ [0, π]
163
+ * @throws {Error} If the quaternion is not normalized
142
164
  *
143
165
  * @example
144
- * const q = [0, 0.707, 0, 0.707]; // 90° around Y-axis
145
- * const axisAngle = QuaternionToAxisAngle(q);
146
- * console.log(axisAngle); // [0, 1, 0, π/2]
166
+ * ```typescript
167
+ * const q = [0, 0.707, 0, 0.707]; // 90° around Y-axis
168
+ * const axisAngle = QuaternionToAxisAngle(q);
169
+ * console.log(axisAngle); // [0, 1, 0, π/2]
170
+ * ```
147
171
  */
148
172
  export declare function QuaternionToAxisAngle(quaternion: TQuaternion): TAxisAngle;
149
173
  /**
@@ -154,8 +178,10 @@ export declare function QuaternionToAxisAngle(quaternion: TQuaternion): TAxisAng
154
178
  * @returns A quaternion representing the rotation
155
179
  *
156
180
  * @example
157
- * const euler = [0, Math.PI/4, 0]; // 45° pitch
158
- * const q = QuaternionFromEuler(euler);
181
+ * ```typescript
182
+ * const euler = [0, Math.PI/4, 0]; // 45° pitch
183
+ * const q = QuaternionFromEuler(euler);
184
+ * ```
159
185
  */
160
186
  export declare function QuaternionFromEuler(euler: TEulerAngles): TQuaternion;
161
187
  /**
@@ -166,9 +192,11 @@ export declare function QuaternionFromEuler(euler: TEulerAngles): TQuaternion;
166
192
  * @returns Euler angles as [x, y, z] in radians
167
193
  *
168
194
  * @example
169
- * const q = [0, 0.383, 0, 0.924]; // ~45° around Y-axis
170
- * const euler = QuaternionToEuler(q);
171
- * console.log(euler); // [0, π/4, 0]
195
+ * ```typescript
196
+ * const q = [0, 0.383, 0, 0.924]; // ~45° around Y-axis
197
+ * const euler = QuaternionToEuler(q);
198
+ * console.log(euler); // [0, π/4, 0]
199
+ * ```
172
200
  */
173
201
  export declare function QuaternionToEuler(quaternion: TQuaternion): TEulerAngles;
174
202
  /**
@@ -180,9 +208,11 @@ export declare function QuaternionToEuler(quaternion: TQuaternion): TEulerAngles
180
208
  * @returns The rotated vector
181
209
  *
182
210
  * @example
183
- * const q = QuaternionFromAxisAngle([0, 0, 1], Math.PI/2); // 90° around Z
184
- * const v = [1, 0, 0]; // Point along X-axis
185
- * const rotated = QuaternionRotateVector(q, v); // Should point along Y-axis
211
+ * ```typescript
212
+ * const q = QuaternionFromAxisAngle([0, 0, 1], Math.PI/2); // 90° around Z
213
+ * const v = [1, 0, 0]; // Point along X-axis
214
+ * const rotated = QuaternionRotateVector(q, v); // Should point along Y-axis
215
+ * ```
186
216
  */
187
217
  export declare function QuaternionRotateVector(quaternion: TQuaternion, vector: TVector3): TVector3;
188
218
  /**
@@ -195,9 +225,11 @@ export declare function QuaternionRotateVector(quaternion: TQuaternion, vector:
195
225
  * @returns Interpolated quaternion
196
226
  *
197
227
  * @example
198
- * const q1 = QuaternionIdentity();
199
- * const q2 = QuaternionFromAxisAngle([0, 1, 0], Math.PI/2);
200
- * const halfway = QuaternionSLERP(q1, q2, 0.5); // 45° rotation
228
+ * ```typescript
229
+ * const q1 = QuaternionIdentity();
230
+ * const q2 = QuaternionFromAxisAngle([0, 1, 0], Math.PI/2);
231
+ * const halfway = QuaternionSLERP(q1, q2, 0.5); // 45° rotation
232
+ * ```
201
233
  */
202
234
  export declare function QuaternionSLERP(a: TQuaternion, b: TQuaternion, t: number): TQuaternion;
203
235
  //# sourceMappingURL=core.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../../src/quaternions/core.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAE/C,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAMnE;;;;;;;;;GASG;AACH,wBAAgB,kBAAkB,IAAI,WAAW,CAEhD;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,eAAe,CAAC,UAAU,EAAE,WAAW,GAAG,WAAW,CAGpE;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,WAAW,EAAE,SAAS,GAAE,MAAa,EAAE,gBAAgB,GAAE,OAAe,GAAG,OAAO,CAcrI;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,WAAW,GAAG,MAAM,CAGnE;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,WAAW,GAAG,WAAW,CAGxE;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,WAAW,GAAG,WAAW,CAKxE;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,WAAW,GAAG,WAAW,CAiBtE;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,WAAW,GAAG,WAAW,CAa9E;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,GAAG,WAAW,CAYlF;AAED;;;;;GAKG;AACH,wBAAgB,6BAA6B,CAAC,SAAS,EAAE,UAAU,GAAG,WAAW,CAKhF;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,qBAAqB,CAAC,UAAU,EAAE,WAAW,GAAG,UAAU,CAwBzE;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,YAAY,GAAG,WAAW,CAiBpE;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,WAAW,GAAG,YAAY,CAoBvE;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,sBAAsB,CAAC,UAAU,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ,GAAG,QAAQ,CAsB1F;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,eAAe,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,MAAM,GAAG,WAAW,CAwCtF"}
1
+ {"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../../src/quaternions/core.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAE/C,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAMnE;;;;;;;;;;;GAWG;AACH,wBAAgB,kBAAkB,IAAI,WAAW,CAEhD;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,eAAe,CAAC,UAAU,EAAE,WAAW,GAAG,WAAW,CAGpE;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,WAAW,EAAE,SAAS,GAAE,MAAa,EAAE,gBAAgB,GAAE,OAAe,GAAG,OAAO,CAcrI;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,WAAW,GAAG,MAAM,CAGnE;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,WAAW,GAAG,WAAW,CAGxE;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,WAAW,GAAG,WAAW,CAKxE;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,WAAW,GAAG,WAAW,CAiBtE;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,WAAW,GAAG,WAAW,CAa9E;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,GAAG,WAAW,CAYlF;AAED;;;;;GAKG;AACH,wBAAgB,6BAA6B,CAAC,SAAS,EAAE,UAAU,GAAG,WAAW,CAKhF;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,qBAAqB,CAAC,UAAU,EAAE,WAAW,GAAG,UAAU,CA4BzE;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,YAAY,GAAG,WAAW,CAiBpE;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,WAAW,GAAG,YAAY,CAoBvE;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,sBAAsB,CAAC,UAAU,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ,GAAG,QAAQ,CAsB1F;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,eAAe,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,MAAM,GAAG,WAAW,CAwCtF"}
@@ -14,8 +14,10 @@ const SLERP_DOT_THRESHOLD = 0.9995;
14
14
  * @returns Identity quaternion [0, 0, 0, 1]
15
15
  *
16
16
  * @example
17
- * const identity = QuaternionIdentity();
18
- * console.log(identity); // [0, 0, 0, 1]
17
+ * ```typescript
18
+ * const identity = QuaternionIdentity();
19
+ * console.log(identity); // [0, 0, 0, 1]
20
+ * ```
19
21
  */
20
22
  export function QuaternionIdentity() {
21
23
  return [0, 0, 0, 1];
@@ -28,9 +30,11 @@ export function QuaternionIdentity() {
28
30
  * @returns A new quaternion with identical components
29
31
  *
30
32
  * @example
31
- * const original = [0, 0, 0.707, 0.707];
32
- * const copy = QuaternionClone(original);
33
- * copy[0] = 1; // original remains unchanged
33
+ * ```typescript
34
+ * const original = [0, 0, 0.707, 0.707];
35
+ * const copy = QuaternionClone(original);
36
+ * copy[0] = 1; // original remains unchanged
37
+ * ```
34
38
  */
35
39
  export function QuaternionClone(quaternion) {
36
40
  AssertQuaternion(quaternion);
@@ -48,10 +52,12 @@ export function QuaternionClone(quaternion) {
48
52
  * @returns True if quaternions are equal within tolerance
49
53
  *
50
54
  * @example
51
- * const q1 = [0, 0, 0, 1];
52
- * const q2 = [0, 0, 0, -1];
53
- * console.log(QuaternionEquals(q1, q2)); // false (different components)
54
- * console.log(QuaternionEquals(q1, q2, 1e-6, true)); // true (same rotation)
55
+ * ```typescript
56
+ * const q1 = [0, 0, 0, 1];
57
+ * const q2 = [0, 0, 0, -1];
58
+ * console.log(QuaternionEquals(q1, q2)); // false (different components)
59
+ * console.log(QuaternionEquals(q1, q2, 1e-6, true)); // true (same rotation)
60
+ * ```
55
61
  */
56
62
  export function QuaternionEquals(a, b, tolerance = 1e-6, checkEquivalence = false) {
57
63
  AssertQuaternion(a);
@@ -73,8 +79,10 @@ export function QuaternionEquals(a, b, tolerance = 1e-6, checkEquivalence = fals
73
79
  * @returns The magnitude of the quaternion
74
80
  *
75
81
  * @example
76
- * const q = [0, 0, 0, 1];
77
- * console.log(QuaternionMagnitude(q)); // 1
82
+ * ```typescript
83
+ * const q = [0, 0, 0, 1];
84
+ * console.log(QuaternionMagnitude(q)); // 1
85
+ * ```
78
86
  */
79
87
  export function QuaternionMagnitude(quaternion) {
80
88
  AssertQuaternion(quaternion);
@@ -88,9 +96,11 @@ export function QuaternionMagnitude(quaternion) {
88
96
  * @returns A normalized quaternion with magnitude 1
89
97
  *
90
98
  * @example
91
- * const q = [1, 1, 1, 1];
92
- * const normalized = QuaternionNormalize(q);
93
- * console.log(QuaternionMagnitude(normalized)); // 1
99
+ * ```typescript
100
+ * const q = [1, 1, 1, 1];
101
+ * const normalized = QuaternionNormalize(q);
102
+ * console.log(QuaternionMagnitude(normalized)); // 1
103
+ * ```
94
104
  */
95
105
  export function QuaternionNormalize(quaternion) {
96
106
  AssertQuaternion(quaternion);
@@ -105,9 +115,11 @@ export function QuaternionNormalize(quaternion) {
105
115
  * @returns The conjugate quaternion
106
116
  *
107
117
  * @example
108
- * const q = [0.5, 0.5, 0.5, 0.5];
109
- * const conjugate = QuaternionConjugate(q);
110
- * console.log(conjugate); // [-0.5, -0.5, -0.5, 0.5]
118
+ * ```typescript
119
+ * const q = [0.5, 0.5, 0.5, 0.5];
120
+ * const conjugate = QuaternionConjugate(q);
121
+ * console.log(conjugate); // [-0.5, -0.5, -0.5, 0.5]
122
+ * ```
111
123
  */
112
124
  export function QuaternionConjugate(quaternion) {
113
125
  AssertQuaternion(quaternion);
@@ -123,8 +135,10 @@ export function QuaternionConjugate(quaternion) {
123
135
  * @returns The inverse quaternion
124
136
  *
125
137
  * @example
126
- * const q = [0, 0, 0.707, 0.707]; // 90° rotation around Z
127
- * const inverse = QuaternionInverse(q); // -90° rotation around Z
138
+ * ```typescript
139
+ * const q = [0, 0, 0.707, 0.707]; // 90° rotation around Z
140
+ * const inverse = QuaternionInverse(q); // -90° rotation around Z
141
+ * ```
128
142
  */
129
143
  export function QuaternionInverse(quaternion) {
130
144
  AssertQuaternion(quaternion);
@@ -151,9 +165,11 @@ export function QuaternionInverse(quaternion) {
151
165
  * @returns The product quaternion representing the combined rotation
152
166
  *
153
167
  * @example
154
- * const rotX = QuaternionFromAxisAngle([1, 0, 0], Math.PI/2); // 90° around X
155
- * const rotY = QuaternionFromAxisAngle([0, 1, 0], Math.PI/2); // 90° around Y
156
- * const combined = QuaternionMultiply(rotX, rotY); // Y rotation then X rotation
168
+ * ```typescript
169
+ * const rotX = QuaternionFromAxisAngle([1, 0, 0], Math.PI/2); // 90° around X
170
+ * const rotY = QuaternionFromAxisAngle([0, 1, 0], Math.PI/2); // 90° around Y
171
+ * const combined = QuaternionMultiply(rotX, rotY); // Y rotation then X rotation
172
+ * ```
157
173
  */
158
174
  export function QuaternionMultiply(a, b) {
159
175
  AssertQuaternion(a);
@@ -176,9 +192,11 @@ export function QuaternionMultiply(a, b) {
176
192
  * @returns A quaternion representing the rotation
177
193
  *
178
194
  * @example
179
- * const axis = [0, 1, 0]; // Y-axis
180
- * const angle = Math.PI / 2; // 90 degrees
181
- * const q = QuaternionFromAxisAngle(axis, angle);
195
+ * ```typescript
196
+ * const axis = [0, 1, 0]; // Y-axis
197
+ * const angle = Math.PI / 2; // 90 degrees
198
+ * const q = QuaternionFromAxisAngle(axis, angle);
199
+ * ```
182
200
  */
183
201
  export function QuaternionFromAxisAngle(axis, angle) {
184
202
  const normalizedAxis = VectorNormalize(axis);
@@ -206,31 +224,40 @@ export function QuaternionFromAxisAngleVector(axisAngle) {
206
224
  /**
207
225
  * Converts a quaternion to axis-angle representation.
208
226
  *
209
- * @param quaternion - The quaternion to convert
210
- * @returns The axis-angle representation as [x, y, z, angle]
227
+ * The quaternion is first normalized to canonical form (w ≥ 0) so that q and -q,
228
+ * which represent the same rotation, always produce the same axis-angle result.
229
+ *
230
+ * @param quaternion - The quaternion to convert (must be normalized)
231
+ * @returns The axis-angle representation as [x, y, z, angle] where angle ∈ [0, π]
232
+ * @throws {Error} If the quaternion is not normalized
211
233
  *
212
234
  * @example
213
- * const q = [0, 0.707, 0, 0.707]; // 90° around Y-axis
214
- * const axisAngle = QuaternionToAxisAngle(q);
215
- * console.log(axisAngle); // [0, 1, 0, π/2]
235
+ * ```typescript
236
+ * const q = [0, 0.707, 0, 0.707]; // 90° around Y-axis
237
+ * const axisAngle = QuaternionToAxisAngle(q);
238
+ * console.log(axisAngle); // [0, 1, 0, π/2]
239
+ * ```
216
240
  */
217
241
  export function QuaternionToAxisAngle(quaternion) {
218
242
  AssertNormalizedQuaternion(quaternion);
219
243
  const [x, y, z, w] = quaternion;
244
+ // Normalize to canonical form with w >= 0 (q and -q represent the same rotation).
245
+ // Without this, a quaternion with w < 0 would pair the wrong axis with the wrong angle.
246
+ const [qx, qy, qz, qw] = w < 0 ? [-x, -y, -z, -w] : [x, y, z, w];
220
247
  // Handle identity quaternion
221
- if (Math.abs(w) >= 1) {
248
+ if (qw >= 1) {
222
249
  return [1, 0, 0, 0]; // Arbitrary axis, zero angle
223
250
  }
224
- const angle = 2 * Math.acos(Math.min(1, Math.abs(w)));
225
- const sinHalfAngle = Math.sqrt(1 - (w * w));
251
+ const angle = 2 * Math.acos(Math.min(1, qw));
252
+ const sinHalfAngle = Math.sqrt(1 - (qw * qw));
226
253
  if (sinHalfAngle < QUATERNION_ANGLE_TOLERANCE) {
227
254
  // Avoid division by zero for small angles
228
255
  return [1, 0, 0, 0];
229
256
  }
230
257
  return [
231
- x / sinHalfAngle,
232
- y / sinHalfAngle,
233
- z / sinHalfAngle,
258
+ qx / sinHalfAngle,
259
+ qy / sinHalfAngle,
260
+ qz / sinHalfAngle,
234
261
  angle,
235
262
  ];
236
263
  }
@@ -242,8 +269,10 @@ export function QuaternionToAxisAngle(quaternion) {
242
269
  * @returns A quaternion representing the rotation
243
270
  *
244
271
  * @example
245
- * const euler = [0, Math.PI/4, 0]; // 45° pitch
246
- * const q = QuaternionFromEuler(euler);
272
+ * ```typescript
273
+ * const euler = [0, Math.PI/4, 0]; // 45° pitch
274
+ * const q = QuaternionFromEuler(euler);
275
+ * ```
247
276
  */
248
277
  export function QuaternionFromEuler(euler) {
249
278
  AssertEulerAngles(euler);
@@ -269,9 +298,11 @@ export function QuaternionFromEuler(euler) {
269
298
  * @returns Euler angles as [x, y, z] in radians
270
299
  *
271
300
  * @example
272
- * const q = [0, 0.383, 0, 0.924]; // ~45° around Y-axis
273
- * const euler = QuaternionToEuler(q);
274
- * console.log(euler); // [0, π/4, 0]
301
+ * ```typescript
302
+ * const q = [0, 0.383, 0, 0.924]; // ~45° around Y-axis
303
+ * const euler = QuaternionToEuler(q);
304
+ * console.log(euler); // [0, π/4, 0]
305
+ * ```
275
306
  */
276
307
  export function QuaternionToEuler(quaternion) {
277
308
  AssertNormalizedQuaternion(quaternion);
@@ -298,9 +329,11 @@ export function QuaternionToEuler(quaternion) {
298
329
  * @returns The rotated vector
299
330
  *
300
331
  * @example
301
- * const q = QuaternionFromAxisAngle([0, 0, 1], Math.PI/2); // 90° around Z
302
- * const v = [1, 0, 0]; // Point along X-axis
303
- * const rotated = QuaternionRotateVector(q, v); // Should point along Y-axis
332
+ * ```typescript
333
+ * const q = QuaternionFromAxisAngle([0, 0, 1], Math.PI/2); // 90° around Z
334
+ * const v = [1, 0, 0]; // Point along X-axis
335
+ * const rotated = QuaternionRotateVector(q, v); // Should point along Y-axis
336
+ * ```
304
337
  */
305
338
  export function QuaternionRotateVector(quaternion, vector) {
306
339
  AssertNormalizedQuaternion(quaternion);
@@ -332,9 +365,11 @@ export function QuaternionRotateVector(quaternion, vector) {
332
365
  * @returns Interpolated quaternion
333
366
  *
334
367
  * @example
335
- * const q1 = QuaternionIdentity();
336
- * const q2 = QuaternionFromAxisAngle([0, 1, 0], Math.PI/2);
337
- * const halfway = QuaternionSLERP(q1, q2, 0.5); // 45° rotation
368
+ * ```typescript
369
+ * const q1 = QuaternionIdentity();
370
+ * const q2 = QuaternionFromAxisAngle([0, 1, 0], Math.PI/2);
371
+ * const halfway = QuaternionSLERP(q1, q2, 0.5); // 45° rotation
372
+ * ```
338
373
  */
339
374
  export function QuaternionSLERP(a, b, t) {
340
375
  AssertNormalizedQuaternion(a);
@@ -359,8 +394,8 @@ export function QuaternionSLERP(a, b, t) {
359
394
  ];
360
395
  return QuaternionNormalize(result);
361
396
  }
362
- // Calculate interpolation factors
363
- const theta = Math.acos(Math.abs(dot));
397
+ // Calculate interpolation factors (dot is guaranteed >= 0 from the sign-flip above)
398
+ const theta = Math.acos(Math.min(1, dot));
364
399
  const sinTheta = Math.sin(theta);
365
400
  const factor1 = Math.sin((1 - clampedT) * theta) / sinTheta;
366
401
  const factor2 = Math.sin(clampedT * theta) / sinTheta;
@@ -1 +1 @@
1
- {"version":3,"file":"core.js","sourceRoot":"","sources":["../../src/quaternions/core.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"core.js","sourceRoot":"","sources":["../../src/quaternions/core.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,8 @@
1
+ export * from './types.js';
2
+ export * from './core.js';
1
3
  export * from './asserts.js';
2
4
  export * from './conversions.js';
3
- export * from './core.js';
4
5
  export * from './interpolation.js';
5
6
  export * from './predefined.js';
6
- export * from './types.js';
7
+ export * as QuaternionNamespace from './_exports.js';
7
8
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/quaternions/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,kBAAkB,CAAC;AACjC,cAAc,WAAW,CAAC;AAC1B,cAAc,oBAAoB,CAAC;AACnC,cAAc,iBAAiB,CAAC;AAChC,cAAc,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/quaternions/index.ts"],"names":[],"mappings":"AACA,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC;AAC7B,cAAc,kBAAkB,CAAC;AACjC,cAAc,oBAAoB,CAAC;AACnC,cAAc,iBAAiB,CAAC;AAGhC,OAAO,KAAK,mBAAmB,MAAM,eAAe,CAAC"}
@@ -1,7 +1,10 @@
1
+ // Named re-exports for direct access
2
+ export * from './types.js';
3
+ export * from './core.js';
1
4
  export * from './asserts.js';
2
5
  export * from './conversions.js';
3
- export * from './core.js';
4
6
  export * from './interpolation.js';
5
7
  export * from './predefined.js';
6
- export * from './types.js';
8
+ // Namespace re-exports for grouped access
9
+ export * as QuaternionNamespace from './_exports.js';
7
10
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/quaternions/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,kBAAkB,CAAC;AACjC,cAAc,WAAW,CAAC;AAC1B,cAAc,oBAAoB,CAAC;AACnC,cAAc,iBAAiB,CAAC;AAChC,cAAc,YAAY,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/quaternions/index.ts"],"names":[],"mappings":"AAAA,qCAAqC;AACrC,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC;AAC7B,cAAc,kBAAkB,CAAC;AACjC,cAAc,oBAAoB,CAAC;AACnC,cAAc,iBAAiB,CAAC;AAEhC,0CAA0C;AAC1C,OAAO,KAAK,mBAAmB,MAAM,eAAe,CAAC"}
@@ -14,9 +14,11 @@ import { TQuaternion } from './types.js';
14
14
  * @returns Interpolated and normalized quaternion
15
15
  *
16
16
  * @example
17
- * const q1 = [0, 0, 0, 1];
18
- * const q2 = [0, 0, 0.707, 0.707];
19
- * const interpolated = QuaternionNLERP(q1, q2, 0.5);
17
+ * ```typescript
18
+ * const q1 = [0, 0, 0, 1];
19
+ * const q2 = [0, 0, 0.707, 0.707];
20
+ * const interpolated = QuaternionNLERP(q1, q2, 0.5);
21
+ * ```
20
22
  */
21
23
  export declare function QuaternionNLERP(a: TQuaternion, b: TQuaternion, t: number): TQuaternion;
22
24
  /**
@@ -31,9 +33,11 @@ export declare function QuaternionNLERP(a: TQuaternion, b: TQuaternion, t: numbe
31
33
  * @returns Smoothly interpolated quaternion
32
34
  *
33
35
  * @example
34
- * // Create a smooth path through multiple rotations
35
- * const path = [q0, q1, q2, q3]; // Array of quaternions
36
- * const smooth = QuaternionSQUAD(path[0], path[1], path[2], path[3], 0.5);
36
+ * ```typescript
37
+ * // Create a smooth path through multiple rotations
38
+ * const path = [q0, q1, q2, q3]; // Array of quaternions
39
+ * const smooth = QuaternionSQUAD(path[0], path[1], path[2], path[3], 0.5);
40
+ * ```
37
41
  */
38
42
  export declare function QuaternionSQUAD(q0: TQuaternion, q1: TQuaternion, q2: TQuaternion, q3: TQuaternion, t: number): TQuaternion;
39
43
  /**
@@ -46,9 +50,11 @@ export declare function QuaternionSQUAD(q0: TQuaternion, q1: TQuaternion, q2: TQ
46
50
  * @returns Function that takes t ∈ [0, 1] and returns interpolated quaternion
47
51
  *
48
52
  * @example
49
- * const path = [q1, q2, q3, q4];
50
- * const interpolator = QuaternionCreatePath(path, 'slerp');
51
- * const halfway = interpolator(0.5); // Interpolated quaternion at 50% along path
53
+ * ```typescript
54
+ * const path = [q1, q2, q3, q4];
55
+ * const interpolator = QuaternionCreatePath(path, 'slerp');
56
+ * const halfway = interpolator(0.5); // Interpolated quaternion at 50% along path
57
+ * ```
52
58
  */
53
59
  export declare function QuaternionCreatePath(quaternions: TQuaternion[], method?: 'slerp' | 'nlerp' | 'squad'): (t: number) => TQuaternion;
54
60
  //# sourceMappingURL=interpolation.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"interpolation.d.ts","sourceRoot":"","sources":["../../src/quaternions/interpolation.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAMzC;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,eAAe,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,MAAM,GAAG,WAAW,CAoBtF;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,eAAe,CAAC,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,WAAW,EAAE,CAAC,EAAE,MAAM,GAAG,WAAW,CAiB1H;AAkFD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,oBAAoB,CACnC,WAAW,EAAE,WAAW,EAAE,EAC1B,MAAM,GAAE,OAAO,GAAG,OAAO,GAAG,OAAiB,GAC3C,CAAC,CAAC,EAAE,MAAM,KAAK,WAAW,CAkD5B"}
1
+ {"version":3,"file":"interpolation.d.ts","sourceRoot":"","sources":["../../src/quaternions/interpolation.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAMzC;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,eAAe,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,MAAM,GAAG,WAAW,CAoBtF;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,eAAe,CAAC,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,WAAW,EAAE,CAAC,EAAE,MAAM,GAAG,WAAW,CAiB1H;AAkFD;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,oBAAoB,CACnC,WAAW,EAAE,WAAW,EAAE,EAC1B,MAAM,GAAE,OAAO,GAAG,OAAO,GAAG,OAAiB,GAC3C,CAAC,CAAC,EAAE,MAAM,KAAK,WAAW,CAkD5B"}