@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.
- package/dist/algorithms/hypergeometricPmf.d.ts.map +1 -1
- package/dist/algorithms/hypergeometricPmf.js +5 -1
- package/dist/algorithms/hypergeometricPmf.js.map +1 -1
- package/dist/algorithms/primeFactorization.d.ts +1 -1
- package/dist/algorithms/primeFactorization.d.ts.map +1 -1
- package/dist/index.d.ts +0 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +0 -1
- package/dist/index.js.map +1 -1
- package/dist/linalg/DualQuaternion.d.ts +46 -46
- package/dist/linalg/DualQuaternion.d.ts.map +1 -1
- package/dist/linalg/DualQuaternion.js.map +1 -1
- package/dist/linalg/Matrix.d.ts +7 -7
- package/dist/linalg/Matrix.d.ts.map +1 -1
- package/dist/linalg/Matrix2.d.ts +25 -25
- package/dist/linalg/Matrix2.d.ts.map +1 -1
- package/dist/linalg/Matrix2.js.map +1 -1
- package/dist/linalg/Matrix3.d.ts +35 -35
- package/dist/linalg/Matrix3.d.ts.map +1 -1
- package/dist/linalg/Matrix3.js.map +1 -1
- package/dist/linalg/Matrix4.d.ts +64 -59
- package/dist/linalg/Matrix4.d.ts.map +1 -1
- package/dist/linalg/Matrix4.js +17 -11
- package/dist/linalg/Matrix4.js.map +1 -1
- package/dist/linalg/Quaternion.d.ts +50 -48
- package/dist/linalg/Quaternion.d.ts.map +1 -1
- package/dist/linalg/Quaternion.js +11 -12
- package/dist/linalg/Quaternion.js.map +1 -1
- package/dist/linalg/SlowMatrix.d.ts +8 -8
- package/dist/linalg/SlowMatrix.d.ts.map +1 -1
- package/dist/linalg/SlowMatrix.js.map +1 -1
- package/dist/linalg/SlowSquareMatrix.d.ts +1 -1
- package/dist/linalg/SlowSquareMatrix.d.ts.map +1 -1
- package/dist/linalg/SlowSquareMatrix.js.map +1 -1
- package/dist/linalg/SlowVector.d.ts +15 -15
- package/dist/linalg/SlowVector.d.ts.map +1 -1
- package/dist/linalg/SlowVector.js.map +1 -1
- package/dist/linalg/Vector.d.ts +14 -14
- package/dist/linalg/Vector.d.ts.map +1 -1
- package/dist/linalg/Vector2.d.ts +51 -51
- package/dist/linalg/Vector2.d.ts.map +1 -1
- package/dist/linalg/Vector2.js.map +1 -1
- package/dist/linalg/Vector3.d.ts +60 -60
- package/dist/linalg/Vector3.d.ts.map +1 -1
- package/dist/linalg/Vector3.js.map +1 -1
- package/dist/linalg/Vector4.d.ts +45 -45
- package/dist/linalg/Vector4.d.ts.map +1 -1
- package/dist/linalg/Vector4.js.map +1 -1
- package/dist/utility/BigNumber.d.ts +5 -5
- package/dist/utility/BigNumber.d.ts.map +1 -1
- package/dist/utility/BigNumber.js +13 -6
- package/dist/utility/BigNumber.js.map +1 -1
- package/package.json +36 -36
- package/src/algorithms/hypergeometricPmf.ts +2 -0
- package/src/algorithms/primeFactorization.ts +1 -1
- package/src/index.ts +0 -5
- package/src/linalg/DualQuaternion.ts +69 -58
- package/src/linalg/Matrix.ts +10 -7
- package/src/linalg/Matrix2.ts +43 -32
- package/src/linalg/Matrix3.ts +53 -41
- package/src/linalg/Matrix4.ts +127 -94
- package/src/linalg/Quaternion.ts +90 -75
- package/src/linalg/SlowMatrix.ts +12 -9
- package/src/linalg/SlowSquareMatrix.ts +1 -1
- package/src/linalg/SlowVector.ts +16 -16
- package/src/linalg/Vector.ts +14 -14
- package/src/linalg/Vector2.ts +104 -76
- package/src/linalg/Vector3.ts +125 -92
- package/src/linalg/Vector4.ts +93 -62
- package/src/utility/BigNumber.ts +22 -11
- package/dist/types/AxisAngle.d.ts +0 -12
- package/dist/types/AxisAngle.d.ts.map +0 -1
- package/dist/types/AxisAngle.js +0 -2
- package/dist/types/AxisAngle.js.map +0 -1
- package/dist/types/FieldOfView.d.ts +0 -15
- package/dist/types/FieldOfView.d.ts.map +0 -1
- package/dist/types/FieldOfView.js +0 -2
- package/dist/types/FieldOfView.js.map +0 -1
- package/dist/utility/createAxisAngleLike.d.ts +0 -10
- package/dist/utility/createAxisAngleLike.d.ts.map +0 -1
- package/dist/utility/createAxisAngleLike.js +0 -10
- package/dist/utility/createAxisAngleLike.js.map +0 -1
- package/src/types/AxisAngle.ts +0 -13
- package/src/types/FieldOfView.ts +0 -17
- package/src/utility/createAxisAngleLike.ts +0 -14
package/src/linalg/SlowVector.ts
CHANGED
|
@@ -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
|
|
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
|
|
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
|
}
|
package/src/linalg/Vector.ts
CHANGED
|
@@ -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
|
|
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
|
|
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.
|