@lakuna/umath 3.0.0 → 4.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 (85) hide show
  1. package/dist/algorithms/hypergeometricPmf.d.ts.map +1 -1
  2. package/dist/algorithms/hypergeometricPmf.js +5 -1
  3. package/dist/algorithms/hypergeometricPmf.js.map +1 -1
  4. package/dist/algorithms/primeFactorization.d.ts +1 -1
  5. package/dist/algorithms/primeFactorization.d.ts.map +1 -1
  6. package/dist/index.d.ts +0 -3
  7. package/dist/index.d.ts.map +1 -1
  8. package/dist/index.js +0 -1
  9. package/dist/index.js.map +1 -1
  10. package/dist/linalg/DualQuaternion.d.ts +46 -46
  11. package/dist/linalg/DualQuaternion.d.ts.map +1 -1
  12. package/dist/linalg/DualQuaternion.js.map +1 -1
  13. package/dist/linalg/Matrix.d.ts +7 -7
  14. package/dist/linalg/Matrix.d.ts.map +1 -1
  15. package/dist/linalg/Matrix2.d.ts +25 -25
  16. package/dist/linalg/Matrix2.d.ts.map +1 -1
  17. package/dist/linalg/Matrix2.js.map +1 -1
  18. package/dist/linalg/Matrix3.d.ts +35 -35
  19. package/dist/linalg/Matrix3.d.ts.map +1 -1
  20. package/dist/linalg/Matrix3.js.map +1 -1
  21. package/dist/linalg/Matrix4.d.ts +64 -59
  22. package/dist/linalg/Matrix4.d.ts.map +1 -1
  23. package/dist/linalg/Matrix4.js +17 -11
  24. package/dist/linalg/Matrix4.js.map +1 -1
  25. package/dist/linalg/Quaternion.d.ts +50 -48
  26. package/dist/linalg/Quaternion.d.ts.map +1 -1
  27. package/dist/linalg/Quaternion.js +11 -12
  28. package/dist/linalg/Quaternion.js.map +1 -1
  29. package/dist/linalg/SlowMatrix.d.ts +8 -8
  30. package/dist/linalg/SlowMatrix.d.ts.map +1 -1
  31. package/dist/linalg/SlowMatrix.js.map +1 -1
  32. package/dist/linalg/SlowSquareMatrix.d.ts +1 -1
  33. package/dist/linalg/SlowSquareMatrix.d.ts.map +1 -1
  34. package/dist/linalg/SlowSquareMatrix.js.map +1 -1
  35. package/dist/linalg/SlowVector.d.ts +15 -15
  36. package/dist/linalg/SlowVector.d.ts.map +1 -1
  37. package/dist/linalg/SlowVector.js.map +1 -1
  38. package/dist/linalg/Vector.d.ts +14 -14
  39. package/dist/linalg/Vector.d.ts.map +1 -1
  40. package/dist/linalg/Vector2.d.ts +51 -51
  41. package/dist/linalg/Vector2.d.ts.map +1 -1
  42. package/dist/linalg/Vector2.js.map +1 -1
  43. package/dist/linalg/Vector3.d.ts +60 -60
  44. package/dist/linalg/Vector3.d.ts.map +1 -1
  45. package/dist/linalg/Vector3.js.map +1 -1
  46. package/dist/linalg/Vector4.d.ts +45 -45
  47. package/dist/linalg/Vector4.d.ts.map +1 -1
  48. package/dist/linalg/Vector4.js.map +1 -1
  49. package/dist/utility/BigNumber.d.ts +5 -5
  50. package/dist/utility/BigNumber.d.ts.map +1 -1
  51. package/dist/utility/BigNumber.js +13 -6
  52. package/dist/utility/BigNumber.js.map +1 -1
  53. package/package.json +36 -36
  54. package/src/algorithms/hypergeometricPmf.ts +2 -0
  55. package/src/algorithms/primeFactorization.ts +1 -1
  56. package/src/index.ts +0 -5
  57. package/src/linalg/DualQuaternion.ts +69 -58
  58. package/src/linalg/Matrix.ts +10 -7
  59. package/src/linalg/Matrix2.ts +43 -32
  60. package/src/linalg/Matrix3.ts +53 -41
  61. package/src/linalg/Matrix4.ts +127 -94
  62. package/src/linalg/Quaternion.ts +90 -75
  63. package/src/linalg/SlowMatrix.ts +12 -9
  64. package/src/linalg/SlowSquareMatrix.ts +1 -1
  65. package/src/linalg/SlowVector.ts +16 -16
  66. package/src/linalg/Vector.ts +14 -14
  67. package/src/linalg/Vector2.ts +104 -76
  68. package/src/linalg/Vector3.ts +125 -92
  69. package/src/linalg/Vector4.ts +93 -62
  70. package/src/utility/BigNumber.ts +22 -11
  71. package/dist/types/AxisAngle.d.ts +0 -12
  72. package/dist/types/AxisAngle.d.ts.map +0 -1
  73. package/dist/types/AxisAngle.js +0 -2
  74. package/dist/types/AxisAngle.js.map +0 -1
  75. package/dist/types/FieldOfView.d.ts +0 -15
  76. package/dist/types/FieldOfView.d.ts.map +0 -1
  77. package/dist/types/FieldOfView.js +0 -2
  78. package/dist/types/FieldOfView.js.map +0 -1
  79. package/dist/utility/createAxisAngleLike.d.ts +0 -10
  80. package/dist/utility/createAxisAngleLike.d.ts.map +0 -1
  81. package/dist/utility/createAxisAngleLike.js +0 -10
  82. package/dist/utility/createAxisAngleLike.js.map +0 -1
  83. package/src/types/AxisAngle.ts +0 -13
  84. package/src/types/FieldOfView.ts +0 -17
  85. package/src/utility/createAxisAngleLike.ts +0 -14
@@ -17,7 +17,7 @@ interface SizedVectorLike extends VectorLike {
17
17
  * Determine whether the given `VectorLike` has size information.
18
18
  * @internal
19
19
  */
20
- const isSized = (vector: VectorLike): vector is SizedVectorLike =>
20
+ const isSized = (vector: Readonly<VectorLike>): vector is SizedVectorLike =>
21
21
  "length" in vector && typeof vector.length === "number";
22
22
 
23
23
  /**
@@ -45,7 +45,7 @@ export default class SlowVector extends Float32Array implements Vector {
45
45
  * Create a variable-size vector from the given values.
46
46
  * @param values - The values in the vector.
47
47
  */
48
- public constructor(...values: number[]) {
48
+ public constructor(...values: readonly number[]) {
49
49
  super(values);
50
50
  }
51
51
 
@@ -54,7 +54,7 @@ export default class SlowVector extends Float32Array implements Vector {
54
54
  * @param vector - The other vector.
55
55
  * @returns The sum of the vectors.
56
56
  */
57
- public add(vector: VectorLike): SlowVector {
57
+ public add(vector: Readonly<VectorLike>): SlowVector {
58
58
  if (!isSized(vector) || this.length !== vector.length) {
59
59
  throw new VectorSizeError();
60
60
  }
@@ -93,7 +93,7 @@ export default class SlowVector extends Float32Array implements Vector {
93
93
  * @param vector - The vector to copy.
94
94
  * @returns This vector.
95
95
  */
96
- public copy(vector: VectorLike): this {
96
+ public copy(vector: Readonly<VectorLike>): this {
97
97
  if (!isSized(vector) || this.length !== vector.length) {
98
98
  throw new VectorSizeError();
99
99
  }
@@ -110,7 +110,7 @@ export default class SlowVector extends Float32Array implements Vector {
110
110
  * @param vector - The other vector.
111
111
  * @returns The distance.
112
112
  */
113
- public distance(vector: VectorLike): number {
113
+ public distance(vector: Readonly<VectorLike>): number {
114
114
  if (!isSized(vector) || this.length !== vector.length) {
115
115
  throw new VectorSizeError();
116
116
  }
@@ -128,7 +128,7 @@ export default class SlowVector extends Float32Array implements Vector {
128
128
  * @param vector - The other vector.
129
129
  * @returns The quotient of the vectors.
130
130
  */
131
- public divide(vector: VectorLike): SlowVector {
131
+ public divide(vector: Readonly<VectorLike>): SlowVector {
132
132
  if (!isSized(vector) || this.length !== vector.length) {
133
133
  throw new VectorSizeError();
134
134
  }
@@ -147,7 +147,7 @@ export default class SlowVector extends Float32Array implements Vector {
147
147
  * @returns The dot product.
148
148
  * @see {@link https://en.wikipedia.org/wiki/Dot_product | Dot product}
149
149
  */
150
- public dot(vector: VectorLike): number {
150
+ public dot(vector: Readonly<VectorLike>): number {
151
151
  if (!isSized(vector) || this.length !== vector.length) {
152
152
  throw new VectorSizeError();
153
153
  }
@@ -165,7 +165,7 @@ export default class SlowVector extends Float32Array implements Vector {
165
165
  * @param vector - The other vector.
166
166
  * @returns Whether the vectors are equivalent.
167
167
  */
168
- public equals(vector: VectorLike): boolean {
168
+ public equals(vector: Readonly<VectorLike>): boolean {
169
169
  if (!isSized(vector) || this.length !== vector.length) {
170
170
  throw new VectorSizeError();
171
171
  }
@@ -190,7 +190,7 @@ export default class SlowVector extends Float32Array implements Vector {
190
190
  * @param vector - The other vector.
191
191
  * @returns Whether the vectors are equivalent.
192
192
  */
193
- public exactEquals(vector: VectorLike): boolean {
193
+ public exactEquals(vector: Readonly<VectorLike>): boolean {
194
194
  if (!isSized(vector) || this.length !== vector.length) {
195
195
  throw new VectorSizeError();
196
196
  }
@@ -236,7 +236,7 @@ export default class SlowVector extends Float32Array implements Vector {
236
236
  * @param t - The interpolation amount (in `[0,1]`).
237
237
  * @returns The interpolated vector.
238
238
  */
239
- public lerp(vector: VectorLike, t: number): SlowVector {
239
+ public lerp(vector: Readonly<VectorLike>, t: number): SlowVector {
240
240
  if (!isSized(vector) || this.length !== vector.length) {
241
241
  throw new VectorSizeError();
242
242
  }
@@ -255,7 +255,7 @@ export default class SlowVector extends Float32Array implements Vector {
255
255
  * @param vector - The other vector.
256
256
  * @returns The maximum.
257
257
  */
258
- public max(vector: VectorLike): SlowVector {
258
+ public max(vector: Readonly<VectorLike>): SlowVector {
259
259
  if (!isSized(vector) || this.length !== vector.length) {
260
260
  throw new VectorSizeError();
261
261
  }
@@ -273,7 +273,7 @@ export default class SlowVector extends Float32Array implements Vector {
273
273
  * @param vector - The other vector.
274
274
  * @returns The minimum.
275
275
  */
276
- public min(vector: VectorLike): SlowVector {
276
+ public min(vector: Readonly<VectorLike>): SlowVector {
277
277
  if (!isSized(vector) || this.length !== vector.length) {
278
278
  throw new VectorSizeError();
279
279
  }
@@ -291,7 +291,7 @@ export default class SlowVector extends Float32Array implements Vector {
291
291
  * @param vector - The other vector.
292
292
  * @returns The product of the vectors.
293
293
  */
294
- public multiply(vector: VectorLike): SlowVector {
294
+ public multiply(vector: Readonly<VectorLike>): SlowVector {
295
295
  if (!isSized(vector) || this.length !== vector.length) {
296
296
  throw new VectorSizeError();
297
297
  }
@@ -387,7 +387,7 @@ export default class SlowVector extends Float32Array implements Vector {
387
387
  * @param scalar - The scalar.
388
388
  * @returns The sum.
389
389
  */
390
- public scaleAndAdd(vector: VectorLike, scalar: number): SlowVector {
390
+ public scaleAndAdd(vector: Readonly<VectorLike>, scalar: number): SlowVector {
391
391
  if (!isSized(vector)) {
392
392
  throw new VectorSizeError();
393
393
  }
@@ -405,7 +405,7 @@ export default class SlowVector extends Float32Array implements Vector {
405
405
  * @param vector - The other vector.
406
406
  * @returns The squared distance.
407
407
  */
408
- public squaredDistance(vector: VectorLike): number {
408
+ public squaredDistance(vector: Readonly<VectorLike>): number {
409
409
  if (!isSized(vector) || this.length !== vector.length) {
410
410
  throw new VectorSizeError();
411
411
  }
@@ -423,7 +423,7 @@ export default class SlowVector extends Float32Array implements Vector {
423
423
  * @param vector - The other vector.
424
424
  * @returns The difference between the vectors.
425
425
  */
426
- public subtract(vector: VectorLike): SlowVector {
426
+ public subtract(vector: Readonly<VectorLike>): SlowVector {
427
427
  if (!isSized(vector) || this.length !== vector.length) {
428
428
  throw new VectorSizeError();
429
429
  }
@@ -11,7 +11,7 @@ export default interface Vector extends VectorLike {
11
11
  * @param vector - The other vector.
12
12
  * @returns The sum of the vectors.
13
13
  */
14
- add: (vector: Vector4Like) => VectorLike;
14
+ add: (vector: Readonly<Vector4Like>) => VectorLike;
15
15
 
16
16
  /**
17
17
  * Round up the components of this vector.
@@ -30,21 +30,21 @@ export default interface Vector extends VectorLike {
30
30
  * @param vector - The vector to copy.
31
31
  * @returns This vector.
32
32
  */
33
- copy: (vector: Vector4Like) => this;
33
+ copy: (vector: Readonly<Vector4Like>) => this;
34
34
 
35
35
  /**
36
36
  * Calculate the Euclidean distance between this vector and another.
37
37
  * @param vector - The other vector.
38
38
  * @returns The distance.
39
39
  */
40
- distance: (vector: Vector4Like) => number;
40
+ distance: (vector: Readonly<Vector4Like>) => number;
41
41
 
42
42
  /**
43
43
  * Divide this vector by another.
44
44
  * @param vector - The other vector.
45
45
  * @returns The quotient of the vectors.
46
46
  */
47
- divide: (vector: Vector4Like) => VectorLike;
47
+ divide: (vector: Readonly<Vector4Like>) => VectorLike;
48
48
 
49
49
  /**
50
50
  * Calculate the dot product of this and another vector.
@@ -52,21 +52,21 @@ export default interface Vector extends VectorLike {
52
52
  * @returns The dot product.
53
53
  * @see {@link https://en.wikipedia.org/wiki/Dot_product | Dot product}
54
54
  */
55
- dot: (vector: Vector4Like) => number;
55
+ dot: (vector: Readonly<Vector4Like>) => number;
56
56
 
57
57
  /**
58
58
  * Determine whether this vector is roughly equivalent to another.
59
59
  * @param vector - The other vector.
60
60
  * @returns Whether the vectors are equivalent.
61
61
  */
62
- equals: (vector: Vector4Like) => boolean;
62
+ equals: (vector: Readonly<Vector4Like>) => boolean;
63
63
 
64
64
  /**
65
65
  * Determine whether this vector is exactly equivalent to another.
66
66
  * @param vector - The other vector.
67
67
  * @returns Whether the vectors are equivalent.
68
68
  */
69
- exactEquals: (vector: Vector4Like) => boolean;
69
+ exactEquals: (vector: Readonly<Vector4Like>) => boolean;
70
70
 
71
71
  /**
72
72
  * Round down the components of this vector.
@@ -86,7 +86,7 @@ export default interface Vector extends VectorLike {
86
86
  * @param t - The interpolation amount (in `[0,1]`).
87
87
  * @returns The interpolated vector.
88
88
  */
89
- lerp: (vector: Vector4Like, t: number) => VectorLike;
89
+ lerp: (vector: Readonly<Vector4Like>, t: number) => VectorLike;
90
90
 
91
91
  /** Get the magnitude (length) of this vector. */
92
92
  get magnitude(): number;
@@ -96,21 +96,21 @@ export default interface Vector extends VectorLike {
96
96
  * @param vector - The other vector.
97
97
  * @returns The maximum.
98
98
  */
99
- max: (vector: Vector4Like) => VectorLike;
99
+ max: (vector: Readonly<Vector4Like>) => VectorLike;
100
100
 
101
101
  /**
102
102
  * Return the minimum of this and another vector.
103
103
  * @param vector - The other vector.
104
104
  * @returns The minimum.
105
105
  */
106
- min: (vector: Vector4Like) => VectorLike;
106
+ min: (vector: Readonly<Vector4Like>) => VectorLike;
107
107
 
108
108
  /**
109
109
  * Multiply this vector by another.
110
110
  * @param vector - The other vector.
111
111
  * @returns The product of the vectors.
112
112
  */
113
- multiply: (vector: Vector4Like) => VectorLike;
113
+ multiply: (vector: Readonly<Vector4Like>) => VectorLike;
114
114
 
115
115
  /**
116
116
  * Negate this vector.
@@ -158,14 +158,14 @@ export default interface Vector extends VectorLike {
158
158
  * @param scalar - The scalar.
159
159
  * @returns The sum.
160
160
  */
161
- scaleAndAdd: (vector: Vector4Like, scalar: number) => VectorLike;
161
+ scaleAndAdd: (vector: Readonly<Vector4Like>, scalar: number) => VectorLike;
162
162
 
163
163
  /**
164
164
  * Calculate the squared Euclidean distance between this vector and another.
165
165
  * @param vector - The other vector.
166
166
  * @returns The squared distance.
167
167
  */
168
- squaredDistance: (vector: Vector4Like) => number;
168
+ squaredDistance: (vector: Readonly<Vector4Like>) => number;
169
169
 
170
170
  /** Get the squared magnitude (length) of this vector. */
171
171
  get squaredMagnitude(): number;
@@ -175,7 +175,7 @@ export default interface Vector extends VectorLike {
175
175
  * @param vector - The other vector.
176
176
  * @returns The difference between the vectors.
177
177
  */
178
- subtract: (vector: Vector4Like) => VectorLike;
178
+ subtract: (vector: Readonly<Vector4Like>) => VectorLike;
179
179
 
180
180
  /**
181
181
  * Set this to the zero vector.