@lakuna/umath 1.3.4 → 1.3.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.
- package/LICENSE +1 -1
- package/README.md +7 -9
- package/dist/algorithms/combinations.d.ts +7 -0
- package/dist/algorithms/combinations.d.ts.map +1 -1
- package/dist/algorithms/combinations.js +8 -1
- package/dist/algorithms/combinations.js.map +1 -1
- package/dist/algorithms/degreesToRadians.d.ts +7 -0
- package/dist/algorithms/degreesToRadians.d.ts.map +1 -1
- package/dist/algorithms/degreesToRadians.js +7 -0
- package/dist/algorithms/degreesToRadians.js.map +1 -1
- package/dist/algorithms/factorial.d.ts +6 -0
- package/dist/algorithms/factorial.d.ts.map +1 -1
- package/dist/algorithms/factorial.js +15 -5
- package/dist/algorithms/factorial.js.map +1 -1
- package/dist/algorithms/fibonacci.d.ts +6 -1
- package/dist/algorithms/fibonacci.d.ts.map +1 -1
- package/dist/algorithms/fibonacci.js +6 -1
- package/dist/algorithms/fibonacci.js.map +1 -1
- package/dist/algorithms/greatestCommonDivisor.d.ts +14 -0
- package/dist/algorithms/greatestCommonDivisor.d.ts.map +1 -1
- package/dist/algorithms/greatestCommonDivisor.js +7 -9
- package/dist/algorithms/greatestCommonDivisor.js.map +1 -1
- package/dist/algorithms/hypergeometricPmf.d.ts +9 -0
- package/dist/algorithms/hypergeometricPmf.d.ts.map +1 -1
- package/dist/algorithms/hypergeometricPmf.js +10 -1
- package/dist/algorithms/hypergeometricPmf.js.map +1 -1
- package/dist/algorithms/isPrime.d.ts +6 -0
- package/dist/algorithms/isPrime.d.ts.map +1 -1
- package/dist/algorithms/isPrime.js +8 -1
- package/dist/algorithms/isPrime.js.map +1 -1
- package/dist/algorithms/permutations.d.ts +7 -0
- package/dist/algorithms/permutations.d.ts.map +1 -1
- package/dist/algorithms/permutations.js +8 -1
- package/dist/algorithms/permutations.js.map +1 -1
- package/dist/algorithms/primeFactorization.d.ts +7 -1
- package/dist/algorithms/primeFactorization.d.ts.map +1 -1
- package/dist/algorithms/primeFactorization.js +10 -3
- package/dist/algorithms/primeFactorization.js.map +1 -1
- package/dist/algorithms/radiansToDegrees.d.ts +7 -0
- package/dist/algorithms/radiansToDegrees.d.ts.map +1 -1
- package/dist/algorithms/radiansToDegrees.js +7 -0
- package/dist/algorithms/radiansToDegrees.js.map +1 -1
- package/dist/algorithms/summation.d.ts +8 -0
- package/dist/algorithms/summation.d.ts.map +1 -1
- package/dist/algorithms/summation.js +9 -0
- package/dist/algorithms/summation.js.map +1 -1
- package/dist/index.d.ts +32 -33
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +27 -27
- package/dist/index.js.map +1 -1
- package/dist/linalg/DualQuaternion.d.ts +460 -83
- package/dist/linalg/DualQuaternion.d.ts.map +1 -1
- package/dist/linalg/DualQuaternion.js +514 -133
- package/dist/linalg/DualQuaternion.js.map +1 -1
- package/dist/linalg/Matrix.d.ts +80 -12
- package/dist/linalg/Matrix.d.ts.map +1 -1
- package/dist/linalg/Matrix2.d.ts +337 -52
- package/dist/linalg/Matrix2.d.ts.map +1 -1
- package/dist/linalg/Matrix2.js +345 -61
- package/dist/linalg/Matrix2.js.map +1 -1
- package/dist/linalg/Matrix3.d.ts +470 -72
- package/dist/linalg/Matrix3.d.ts.map +1 -1
- package/dist/linalg/Matrix3.js +488 -94
- package/dist/linalg/Matrix3.js.map +1 -1
- package/dist/linalg/Matrix4.d.ts +842 -137
- package/dist/linalg/Matrix4.d.ts.map +1 -1
- package/dist/linalg/Matrix4.js +896 -175
- package/dist/linalg/Matrix4.js.map +1 -1
- package/dist/linalg/Quaternion.d.ts +395 -70
- package/dist/linalg/Quaternion.d.ts.map +1 -1
- package/dist/linalg/Quaternion.js +416 -70
- package/dist/linalg/Quaternion.js.map +1 -1
- package/dist/linalg/SlowMatrix.d.ts +79 -9
- package/dist/linalg/SlowMatrix.d.ts.map +1 -1
- package/dist/linalg/SlowMatrix.js +147 -27
- package/dist/linalg/SlowMatrix.js.map +1 -1
- package/dist/linalg/SlowSquareMatrix.d.ts +58 -3
- package/dist/linalg/SlowSquareMatrix.d.ts.map +1 -1
- package/dist/linalg/SlowSquareMatrix.js +111 -21
- package/dist/linalg/SlowSquareMatrix.js.map +1 -1
- package/dist/linalg/SquareMatrix.d.ts +26 -3
- package/dist/linalg/SquareMatrix.d.ts.map +1 -1
- package/dist/linalg/Vector.d.ts +148 -24
- package/dist/linalg/Vector.d.ts.map +1 -1
- package/dist/linalg/Vector2.d.ts +484 -84
- package/dist/linalg/Vector2.d.ts.map +1 -1
- package/dist/linalg/Vector2.js +487 -71
- package/dist/linalg/Vector2.js.map +1 -1
- package/dist/linalg/Vector3.d.ts +582 -98
- package/dist/linalg/Vector3.d.ts.map +1 -1
- package/dist/linalg/Vector3.js +625 -134
- package/dist/linalg/Vector3.js.map +1 -1
- package/dist/linalg/Vector4.d.ts +450 -75
- package/dist/linalg/Vector4.d.ts.map +1 -1
- package/dist/linalg/Vector4.js +447 -62
- package/dist/linalg/Vector4.js.map +1 -1
- package/dist/types/AxisAngle.d.ts +4 -1
- package/dist/types/AxisAngle.d.ts.map +1 -1
- package/dist/types/FieldOfView.d.ts +5 -0
- package/dist/types/FieldOfView.d.ts.map +1 -1
- package/dist/utility/BigNumber.d.ts +41 -8
- package/dist/utility/BigNumber.d.ts.map +1 -1
- package/dist/utility/BigNumber.js +47 -5
- package/dist/utility/BigNumber.js.map +1 -1
- package/dist/utility/MagnitudeError.d.ts +5 -0
- package/dist/utility/MagnitudeError.d.ts.map +1 -1
- package/dist/utility/MagnitudeError.js +6 -1
- package/dist/utility/MagnitudeError.js.map +1 -1
- package/dist/utility/MatrixSizeError.d.ts +5 -0
- package/dist/utility/MatrixSizeError.d.ts.map +1 -1
- package/dist/utility/MatrixSizeError.js +5 -0
- package/dist/utility/MatrixSizeError.js.map +1 -1
- package/dist/utility/PartialMatrixError.d.ts +5 -0
- package/dist/utility/PartialMatrixError.d.ts.map +1 -1
- package/dist/utility/PartialMatrixError.js +5 -0
- package/dist/utility/PartialMatrixError.js.map +1 -1
- package/dist/utility/SingularMatrixError.d.ts +8 -0
- package/dist/utility/SingularMatrixError.d.ts.map +1 -1
- package/dist/utility/SingularMatrixError.js +8 -0
- package/dist/utility/SingularMatrixError.js.map +1 -1
- package/dist/utility/epsilon.d.ts +1 -0
- package/dist/utility/epsilon.d.ts.map +1 -1
- package/dist/utility/epsilon.js +1 -0
- package/dist/utility/epsilon.js.map +1 -1
- package/package.json +20 -51
- package/src/algorithms/combinations.ts +4 -4
- package/src/algorithms/degreesToRadians.ts +3 -3
- package/src/algorithms/factorial.ts +13 -8
- package/src/algorithms/fibonacci.ts +3 -3
- package/src/algorithms/greatestCommonDivisor.ts +15 -19
- package/src/algorithms/hypergeometricPmf.ts +5 -6
- package/src/algorithms/isPrime.ts +4 -4
- package/src/algorithms/permutations.ts +4 -4
- package/src/algorithms/primeFactorization.ts +9 -9
- package/src/algorithms/radiansToDegrees.ts +3 -3
- package/src/algorithms/summation.ts +5 -5
- package/src/index.ts +35 -33
- package/src/linalg/DualQuaternion.ts +558 -804
- package/src/linalg/Matrix.ts +35 -36
- package/src/linalg/Matrix2.ts +277 -413
- package/src/linalg/Matrix3.ts +532 -737
- package/src/linalg/Matrix4.ts +1078 -1604
- package/src/linalg/Quaternion.ts +415 -690
- package/src/linalg/SlowMatrix.ts +118 -69
- package/src/linalg/SlowSquareMatrix.ts +85 -56
- package/src/linalg/SquareMatrix.ts +7 -7
- package/src/linalg/Vector.ts +71 -70
- package/src/linalg/Vector2.ts +380 -576
- package/src/linalg/Vector3.ts +544 -840
- package/src/linalg/Vector4.ts +383 -549
- package/src/types/AxisAngle.ts +1 -1
- package/src/utility/BigNumber.ts +33 -42
- package/src/utility/MagnitudeError.ts +4 -4
- package/src/utility/MatrixSizeError.ts +2 -3
- package/src/utility/PartialMatrixError.ts +2 -3
- package/src/utility/SingularMatrixError.ts +2 -2
- package/src/utility/epsilon.ts +1 -4
- package/dist/types/IntegerRepresentation.d.ts +0 -2
- package/dist/types/IntegerRepresentation.d.ts.map +0 -1
- package/dist/types/IntegerRepresentation.js +0 -2
- package/dist/types/IntegerRepresentation.js.map +0 -1
- package/src/types/IntegerRepresentation.ts +0 -2
package/src/linalg/Vector.ts
CHANGED
|
@@ -1,178 +1,179 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
import type { Vector4Like } from "./Vector4.js";
|
|
2
|
+
|
|
3
|
+
/** An object that could be interpreted as a vector. */
|
|
4
|
+
export type VectorLike = Record<number, number>;
|
|
3
5
|
|
|
4
6
|
/**
|
|
5
7
|
* A quantity with magnitude and direction.
|
|
6
8
|
* @see [Wikipedia](https://en.wikipedia.org/wiki/Euclidean_vector)
|
|
7
9
|
*/
|
|
8
|
-
export default interface Vector extends
|
|
10
|
+
export default interface Vector extends VectorLike {
|
|
9
11
|
/**
|
|
10
|
-
*
|
|
11
|
-
* @param vector The other vector.
|
|
12
|
+
* Determine whether this vector is roughly equivalent to another.
|
|
13
|
+
* @param vector - The other vector.
|
|
12
14
|
* @returns Whether the vectors are equivalent.
|
|
13
15
|
*/
|
|
14
|
-
equals(vector:
|
|
16
|
+
equals(vector: Vector4Like): boolean;
|
|
15
17
|
|
|
16
18
|
/**
|
|
17
|
-
*
|
|
18
|
-
* @param vector The other vector.
|
|
19
|
+
* Determine whether this vector is exactly equivalent to another.
|
|
20
|
+
* @param vector - The other vector.
|
|
19
21
|
* @returns Whether the vectors are equivalent.
|
|
20
22
|
*/
|
|
21
|
-
exactEquals(vector:
|
|
23
|
+
exactEquals(vector: Vector4Like): boolean;
|
|
22
24
|
|
|
23
25
|
/**
|
|
24
|
-
*
|
|
25
|
-
* @param vector The other vector.
|
|
26
|
+
* Add two vectors of the same size.
|
|
27
|
+
* @param vector - The other vector.
|
|
26
28
|
* @returns The sum of the vectors.
|
|
27
29
|
*/
|
|
28
|
-
add(vector:
|
|
30
|
+
add(vector: Vector4Like): VectorLike;
|
|
29
31
|
|
|
30
32
|
/**
|
|
31
|
-
*
|
|
33
|
+
* Create a copy of this vector.
|
|
32
34
|
* @returns A copy of this vector.
|
|
33
35
|
*/
|
|
34
|
-
clone():
|
|
36
|
+
clone(): VectorLike;
|
|
35
37
|
|
|
36
38
|
/**
|
|
37
|
-
*
|
|
38
|
-
* @param vector The vector to copy.
|
|
39
|
+
* Copy the values of another vector into this one.
|
|
40
|
+
* @param vector - The vector to copy.
|
|
39
41
|
* @returns This vector.
|
|
40
42
|
*/
|
|
41
|
-
copy(vector:
|
|
43
|
+
copy(vector: Vector4Like): this;
|
|
42
44
|
|
|
43
45
|
/**
|
|
44
|
-
*
|
|
45
|
-
* @param vector The other vector.
|
|
46
|
+
* Multiply this vector by another.
|
|
47
|
+
* @param vector - The other vector.
|
|
46
48
|
* @returns The product of the vectors.
|
|
47
49
|
*/
|
|
48
|
-
multiply(vector:
|
|
50
|
+
multiply(vector: Vector4Like): VectorLike;
|
|
49
51
|
|
|
50
52
|
/**
|
|
51
|
-
*
|
|
52
|
-
* @param vector The other vector.
|
|
53
|
+
* Divide this vector by another.
|
|
54
|
+
* @param vector - The other vector.
|
|
53
55
|
* @returns The quotient of the vectors.
|
|
54
56
|
*/
|
|
55
|
-
divide(vector:
|
|
57
|
+
divide(vector: Vector4Like): VectorLike;
|
|
56
58
|
|
|
57
59
|
/**
|
|
58
|
-
*
|
|
59
|
-
* @param vector The other vector.
|
|
60
|
+
* Subtract another vector from this one.
|
|
61
|
+
* @param vector - The other vector.
|
|
60
62
|
* @returns The difference between the vectors.
|
|
61
63
|
*/
|
|
62
|
-
subtract(vector:
|
|
64
|
+
subtract(vector: Vector4Like): VectorLike;
|
|
63
65
|
|
|
64
66
|
/**
|
|
65
|
-
*
|
|
67
|
+
* Round up the components of this vector.
|
|
66
68
|
* @returns The rounded vector.
|
|
67
69
|
*/
|
|
68
|
-
ceil():
|
|
70
|
+
ceil(): VectorLike;
|
|
69
71
|
|
|
70
72
|
/**
|
|
71
|
-
*
|
|
73
|
+
* Round down the components of this vector.
|
|
72
74
|
* @returns The rounded vector.
|
|
73
75
|
*/
|
|
74
|
-
floor():
|
|
76
|
+
floor(): VectorLike;
|
|
75
77
|
|
|
76
78
|
/**
|
|
77
|
-
*
|
|
79
|
+
* Round the components of this vector.
|
|
78
80
|
* @returns The rounded vector.
|
|
79
81
|
*/
|
|
80
|
-
round():
|
|
82
|
+
round(): VectorLike;
|
|
81
83
|
|
|
82
84
|
/**
|
|
83
|
-
*
|
|
84
|
-
* @param vector The other vector.
|
|
85
|
+
* Return the minimum of this and another vector.
|
|
86
|
+
* @param vector - The other vector.
|
|
85
87
|
* @returns The minimum.
|
|
86
88
|
*/
|
|
87
|
-
min(vector:
|
|
89
|
+
min(vector: Vector4Like): VectorLike;
|
|
88
90
|
|
|
89
91
|
/**
|
|
90
|
-
*
|
|
91
|
-
* @param vector The other vector.
|
|
92
|
+
* Return the maximum of this and another vector.
|
|
93
|
+
* @param vector - The other vector.
|
|
92
94
|
* @returns The maximum.
|
|
93
95
|
*/
|
|
94
|
-
max(vector:
|
|
96
|
+
max(vector: Vector4Like): VectorLike;
|
|
95
97
|
|
|
96
98
|
/**
|
|
97
|
-
*
|
|
98
|
-
* @param scalar The scalar.
|
|
99
|
+
* Scale this vector by a scalar.
|
|
100
|
+
* @param scalar - The scalar.
|
|
99
101
|
* @returns The scaled vector.
|
|
100
102
|
*/
|
|
101
|
-
scale(scalar: number):
|
|
103
|
+
scale(scalar: number): VectorLike;
|
|
102
104
|
|
|
103
105
|
/**
|
|
104
|
-
*
|
|
105
|
-
* @param vector The other vector.
|
|
106
|
-
* @param scalar The scalar.
|
|
106
|
+
* Add another vector to this one after scaling the other by a scalar.
|
|
107
|
+
* @param vector - The other vector.
|
|
108
|
+
* @param scalar - The scalar.
|
|
107
109
|
* @returns The sum.
|
|
108
110
|
*/
|
|
109
|
-
scaleAndAdd(vector:
|
|
111
|
+
scaleAndAdd(vector: Vector4Like, scalar: number): VectorLike;
|
|
110
112
|
|
|
111
113
|
/**
|
|
112
|
-
*
|
|
113
|
-
* @param vector The other vector.
|
|
114
|
+
* Calculate the Euclidean distance between this vector and another.
|
|
115
|
+
* @param vector - The other vector.
|
|
114
116
|
* @returns The distance.
|
|
115
117
|
*/
|
|
116
|
-
distance(vector:
|
|
118
|
+
distance(vector: Vector4Like): number;
|
|
117
119
|
|
|
118
120
|
/**
|
|
119
|
-
*
|
|
120
|
-
*
|
|
121
|
-
* @param vector The other vector.
|
|
121
|
+
* Calculate the squared Euclidean distance between this vector and another.
|
|
122
|
+
* @param vector - The other vector.
|
|
122
123
|
* @returns The squared distance.
|
|
123
124
|
*/
|
|
124
|
-
squaredDistance(vector:
|
|
125
|
+
squaredDistance(vector: Vector4Like): number;
|
|
125
126
|
|
|
126
|
-
/**
|
|
127
|
+
/** Get the magnitude (length) of this vector. */
|
|
127
128
|
get magnitude(): number;
|
|
128
129
|
|
|
129
|
-
/**
|
|
130
|
+
/** Get the squared magnitude (length) of this vector. */
|
|
130
131
|
get squaredMagnitude(): number;
|
|
131
132
|
|
|
132
133
|
/**
|
|
133
|
-
*
|
|
134
|
+
* Negate this vector.
|
|
134
135
|
* @returns The negated vector.
|
|
135
136
|
*/
|
|
136
|
-
negate():
|
|
137
|
+
negate(): VectorLike;
|
|
137
138
|
|
|
138
139
|
/**
|
|
139
|
-
*
|
|
140
|
+
* Calculate the multiplicative inverse of the components of this vector.
|
|
140
141
|
* @returns The inverted vector.
|
|
141
142
|
*/
|
|
142
|
-
invert():
|
|
143
|
+
invert(): VectorLike;
|
|
143
144
|
|
|
144
145
|
/**
|
|
145
|
-
*
|
|
146
|
+
* Normalize this vector.
|
|
146
147
|
* @returns The normalized vector.
|
|
147
148
|
* @see [Unit vector](https://en.wikipedia.org/wiki/Unit_vector)
|
|
148
149
|
*/
|
|
149
|
-
normalize():
|
|
150
|
+
normalize(): VectorLike;
|
|
150
151
|
|
|
151
152
|
/**
|
|
152
|
-
*
|
|
153
|
-
* @param vector The other vector.
|
|
153
|
+
* Calculate the dot product of this and another vector.
|
|
154
|
+
* @param vector - The other vector.
|
|
154
155
|
* @returns The dot product.
|
|
155
156
|
* @see [Dot product](https://en.wikipedia.org/wiki/Dot_product)
|
|
156
157
|
*/
|
|
157
|
-
dot(vector:
|
|
158
|
+
dot(vector: Vector4Like): number;
|
|
158
159
|
|
|
159
160
|
/**
|
|
160
|
-
*
|
|
161
|
-
* @param vector The other vector.
|
|
162
|
-
* @param t The interpolation amount (in `[0,1]`).
|
|
161
|
+
* Perform a linear interpolation between this and another vector.
|
|
162
|
+
* @param vector - The other vector.
|
|
163
|
+
* @param t - The interpolation amount (in `[0,1]`).
|
|
163
164
|
* @returns The interpolated vector.
|
|
164
165
|
*/
|
|
165
|
-
lerp(vector:
|
|
166
|
+
lerp(vector: Vector4Like, t: number): VectorLike;
|
|
166
167
|
|
|
167
168
|
/**
|
|
168
|
-
*
|
|
169
|
-
* @param magnitude The magnitude.
|
|
169
|
+
* Set this vector to a random value with the given magnitude.
|
|
170
|
+
* @param magnitude - The magnitude.
|
|
170
171
|
* @returns This vector.
|
|
171
172
|
*/
|
|
172
173
|
random(magnitude: number): this;
|
|
173
174
|
|
|
174
175
|
/**
|
|
175
|
-
*
|
|
176
|
+
* Set this to the zero vector.
|
|
176
177
|
* @returns This vector.
|
|
177
178
|
*/
|
|
178
179
|
zero(): this;
|