@lakuna/umath 0.0.2 → 0.0.4
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/README.md +41 -1
- package/dist/algorithms/combinations.d.ts +2 -0
- package/dist/algorithms/combinations.d.ts.map +1 -0
- package/dist/algorithms/combinations.js +5 -0
- package/dist/algorithms/combinations.js.map +1 -0
- package/dist/algorithms/degreesToRadians.d.ts +2 -0
- package/dist/algorithms/degreesToRadians.d.ts.map +1 -0
- package/dist/algorithms/degreesToRadians.js +4 -0
- package/dist/algorithms/degreesToRadians.js.map +1 -0
- package/dist/algorithms/factorial.d.ts +2 -0
- package/dist/algorithms/factorial.d.ts.map +1 -0
- package/dist/algorithms/factorial.js +4 -0
- package/dist/algorithms/factorial.js.map +1 -0
- package/dist/algorithms/fibonacci.d.ts +2 -0
- package/dist/algorithms/fibonacci.d.ts.map +1 -0
- package/dist/algorithms/fibonacci.js +9 -0
- package/dist/algorithms/fibonacci.js.map +1 -0
- package/dist/algorithms/greatestCommonDivisor.d.ts +3 -0
- package/dist/algorithms/greatestCommonDivisor.d.ts.map +1 -0
- package/dist/algorithms/greatestCommonDivisor.js +13 -0
- package/dist/algorithms/greatestCommonDivisor.js.map +1 -0
- package/dist/algorithms/isPrime.d.ts +2 -0
- package/dist/algorithms/isPrime.d.ts.map +1 -0
- package/dist/algorithms/isPrime.js +12 -0
- package/dist/algorithms/isPrime.js.map +1 -0
- package/dist/algorithms/permutations.d.ts +2 -0
- package/dist/algorithms/permutations.d.ts.map +1 -0
- package/dist/algorithms/permutations.js +5 -0
- package/dist/algorithms/permutations.js.map +1 -0
- package/dist/algorithms/primeFactorization.d.ts +2 -0
- package/dist/algorithms/primeFactorization.d.ts.map +1 -0
- package/dist/algorithms/primeFactorization.js +15 -0
- package/dist/algorithms/primeFactorization.js.map +1 -0
- package/dist/algorithms/radiansToDegrees.d.ts +2 -0
- package/dist/algorithms/radiansToDegrees.d.ts.map +1 -0
- package/dist/algorithms/radiansToDegrees.js +4 -0
- package/dist/algorithms/radiansToDegrees.js.map +1 -0
- package/dist/algorithms/summation.d.ts +2 -0
- package/dist/algorithms/summation.d.ts.map +1 -0
- package/dist/algorithms/summation.js +7 -0
- package/dist/algorithms/summation.js.map +1 -0
- package/dist/index.d.ts +28 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +22 -1
- package/dist/index.js.map +1 -1
- package/dist/linear/DualQuaternion.d.ts +89 -0
- package/dist/linear/DualQuaternion.d.ts.map +1 -0
- package/dist/linear/DualQuaternion.js +530 -0
- package/dist/linear/DualQuaternion.js.map +1 -0
- package/dist/linear/Matrix.d.ts +18 -0
- package/dist/linear/Matrix.d.ts.map +1 -0
- package/dist/linear/Matrix.js +2 -0
- package/dist/linear/Matrix.js.map +1 -0
- package/dist/linear/Matrix2.d.ts +66 -0
- package/dist/linear/Matrix2.d.ts.map +1 -0
- package/dist/linear/Matrix2.js +240 -0
- package/dist/linear/Matrix2.js.map +1 -0
- package/dist/linear/Matrix3.d.ts +91 -0
- package/dist/linear/Matrix3.d.ts.map +1 -0
- package/dist/linear/Matrix3.js +533 -0
- package/dist/linear/Matrix3.js.map +1 -0
- package/dist/linear/Matrix4.d.ts +140 -0
- package/dist/linear/Matrix4.d.ts.map +1 -0
- package/dist/linear/Matrix4.js +1363 -0
- package/dist/linear/Matrix4.js.map +1 -0
- package/dist/linear/Quaternion.d.ts +80 -0
- package/dist/linear/Quaternion.d.ts.map +1 -0
- package/dist/linear/Quaternion.js +371 -0
- package/dist/linear/Quaternion.js.map +1 -0
- package/dist/linear/SquareMatrix.d.ts +7 -0
- package/dist/linear/SquareMatrix.d.ts.map +1 -0
- package/dist/linear/SquareMatrix.js +2 -0
- package/dist/linear/SquareMatrix.js.map +1 -0
- package/dist/linear/Vector.d.ts +30 -0
- package/dist/linear/Vector.d.ts.map +1 -0
- package/dist/linear/Vector.js +2 -0
- package/dist/linear/Vector.js.map +1 -0
- package/dist/linear/Vector2.d.ts +96 -0
- package/dist/linear/Vector2.d.ts.map +1 -0
- package/dist/linear/Vector2.js +293 -0
- package/dist/linear/Vector2.js.map +1 -0
- package/dist/linear/Vector3.d.ts +111 -0
- package/dist/linear/Vector3.d.ts.map +1 -0
- package/dist/linear/Vector3.js +466 -0
- package/dist/linear/Vector3.js.map +1 -0
- package/dist/linear/Vector4.d.ts +86 -0
- package/dist/linear/Vector4.d.ts.map +1 -0
- package/dist/linear/Vector4.js +348 -0
- package/dist/linear/Vector4.js.map +1 -0
- package/dist/types/AxisAngle.d.ts +6 -0
- package/dist/types/AxisAngle.d.ts.map +1 -0
- package/dist/types/AxisAngle.js +2 -0
- package/dist/types/AxisAngle.js.map +1 -0
- package/dist/types/FieldOfView.d.ts +7 -0
- package/dist/types/FieldOfView.d.ts.map +1 -0
- package/dist/types/FieldOfView.js +2 -0
- package/dist/types/FieldOfView.js.map +1 -0
- package/dist/types/IntegerRepresentation.d.ts +2 -0
- package/dist/types/IntegerRepresentation.d.ts.map +1 -0
- package/dist/types/IntegerRepresentation.js +2 -0
- package/dist/types/IntegerRepresentation.js.map +1 -0
- package/dist/utility/BigNumber.d.ts +15 -0
- package/dist/utility/BigNumber.d.ts.map +1 -0
- package/dist/utility/BigNumber.js +75 -0
- package/dist/utility/BigNumber.js.map +1 -0
- package/dist/utility/MagnitudeError.d.ts +4 -0
- package/dist/utility/MagnitudeError.d.ts.map +1 -0
- package/dist/utility/MagnitudeError.js +6 -0
- package/dist/utility/MagnitudeError.js.map +1 -0
- package/dist/utility/SingularMatrixError.d.ts +4 -0
- package/dist/utility/SingularMatrixError.d.ts.map +1 -0
- package/dist/utility/SingularMatrixError.js +6 -0
- package/dist/utility/SingularMatrixError.js.map +1 -0
- package/dist/utility/epsilon.d.ts +3 -0
- package/dist/utility/epsilon.d.ts.map +1 -0
- package/dist/utility/epsilon.js +2 -0
- package/dist/utility/epsilon.js.map +1 -0
- package/package.json +17 -9
- package/src/algorithms/combinations.ts +12 -0
- package/src/algorithms/degreesToRadians.ts +10 -0
- package/src/algorithms/factorial.ts +9 -0
- package/src/algorithms/fibonacci.ts +14 -0
- package/src/algorithms/greatestCommonDivisor.ts +30 -0
- package/src/algorithms/isPrime.ts +20 -0
- package/src/algorithms/permutations.ts +12 -0
- package/src/algorithms/primeFactorization.ts +21 -0
- package/src/algorithms/radiansToDegrees.ts +10 -0
- package/src/algorithms/summation.ts +23 -0
- package/src/index.ts +28 -1
- package/src/linear/DualQuaternion.ts +1213 -0
- package/src/linear/Matrix.ts +106 -0
- package/src/linear/Matrix2.ts +709 -0
- package/src/linear/Matrix3.ts +1194 -0
- package/src/linear/Matrix4.ts +2569 -0
- package/src/linear/Quaternion.ts +967 -0
- package/src/linear/SquareMatrix.ts +27 -0
- package/src/linear/Vector.ts +178 -0
- package/src/linear/Vector2.ts +979 -0
- package/src/linear/Vector3.ts +1320 -0
- package/src/linear/Vector4.ts +975 -0
- package/src/types/AxisAngle.ts +10 -0
- package/src/types/FieldOfView.ts +14 -0
- package/src/types/IntegerRepresentation.ts +2 -0
- package/src/utility/BigNumber.ts +130 -0
- package/src/utility/MagnitudeError.ts +10 -0
- package/src/utility/SingularMatrixError.ts +13 -0
- package/src/utility/epsilon.ts +2 -0
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type { Matrix } from "@lakuna/umath";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* A matrix with the same number of rows and columns.
|
|
5
|
+
* @see [Square matrix](https://en.wikipedia.org/wiki/Square_matrix)
|
|
6
|
+
*/
|
|
7
|
+
export default interface SquareMatrix extends Matrix {
|
|
8
|
+
/**
|
|
9
|
+
* The determinant of this matrix.
|
|
10
|
+
* @see [Determinant](https://en.wikipedia.org/wiki/Determinant)
|
|
11
|
+
*/
|
|
12
|
+
get determinant(): number;
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* Resets this matrix to identity.
|
|
16
|
+
* @returns This matrix.
|
|
17
|
+
* @see [Identity matrix](https://en.wikipedia.org/wiki/Identity_matrix)
|
|
18
|
+
*/
|
|
19
|
+
identity(): this;
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* Inverts this matrix.
|
|
23
|
+
* @returns The inverted matrix.
|
|
24
|
+
* @see [Invertible matrix](https://en.wikipedia.org/wiki/Invertible_matrix)
|
|
25
|
+
*/
|
|
26
|
+
invert(): SquareMatrix;
|
|
27
|
+
}
|
|
@@ -0,0 +1,178 @@
|
|
|
1
|
+
/** A quantity with magnitude and direction. */
|
|
2
|
+
export type VectorLike = Vector | Iterable<number>;
|
|
3
|
+
|
|
4
|
+
// TODO: Link documentation to relevant articles.
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* A quantity with magnitude and direction.
|
|
8
|
+
* @see [Wikipedia](https://en.wikipedia.org/wiki/Euclidean_vector)
|
|
9
|
+
*/
|
|
10
|
+
export default interface Vector extends Iterable<number> {
|
|
11
|
+
/**
|
|
12
|
+
* Determines whether this vector is roughly equivalent to another.
|
|
13
|
+
* @param vector The other vector.
|
|
14
|
+
* @returns Whether the vectors are equivalent.
|
|
15
|
+
*/
|
|
16
|
+
equals(vector: VectorLike): boolean;
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* Determines whether this vector is exactly equivalent to another.
|
|
20
|
+
* @param vector The other vector.
|
|
21
|
+
* @returns Whether the vectors are equivalent.
|
|
22
|
+
*/
|
|
23
|
+
exactEquals(vector: VectorLike): boolean;
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* Adds two vectors of the same size.
|
|
27
|
+
* @param vector The other vector.
|
|
28
|
+
* @returns The sum of the vectors.
|
|
29
|
+
*/
|
|
30
|
+
add(vector: VectorLike): Vector;
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* Creates a copy of this vector.
|
|
34
|
+
* @returns A copy of this vector.
|
|
35
|
+
*/
|
|
36
|
+
clone(): Vector;
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* Copies the values of another vector into this one.
|
|
40
|
+
* @param vector The vector to copy.
|
|
41
|
+
* @returns This vector.
|
|
42
|
+
*/
|
|
43
|
+
copy(vector: VectorLike): this;
|
|
44
|
+
|
|
45
|
+
/**
|
|
46
|
+
* Multiplies this vector by another.
|
|
47
|
+
* @param vector The other vector.
|
|
48
|
+
* @returns The product of the vectors.
|
|
49
|
+
*/
|
|
50
|
+
multiply(vector: VectorLike): Vector;
|
|
51
|
+
|
|
52
|
+
/**
|
|
53
|
+
* Divides this vector by another.
|
|
54
|
+
* @param vector The other vector.
|
|
55
|
+
* @returns The quotient of the vectors.
|
|
56
|
+
*/
|
|
57
|
+
divide(vector: VectorLike): Vector;
|
|
58
|
+
|
|
59
|
+
/**
|
|
60
|
+
* Subtracts another vector from this one.
|
|
61
|
+
* @param vector The other vector.
|
|
62
|
+
* @returns The difference between the vectors.
|
|
63
|
+
*/
|
|
64
|
+
subtract(vector: VectorLike): Vector;
|
|
65
|
+
|
|
66
|
+
/**
|
|
67
|
+
* Rounds up the components of this vector.
|
|
68
|
+
* @returns The rounded vector.
|
|
69
|
+
*/
|
|
70
|
+
ceil(): Vector;
|
|
71
|
+
|
|
72
|
+
/**
|
|
73
|
+
* Rounds down the components of this vector.
|
|
74
|
+
* @returns The rounded vector.
|
|
75
|
+
*/
|
|
76
|
+
floor(): Vector;
|
|
77
|
+
|
|
78
|
+
/**
|
|
79
|
+
* Rounds the components of this vector.
|
|
80
|
+
* @returns The rounded vector.
|
|
81
|
+
*/
|
|
82
|
+
round(): Vector;
|
|
83
|
+
|
|
84
|
+
/**
|
|
85
|
+
* Returns the minimum of this and another vector.
|
|
86
|
+
* @param vector The other vector.
|
|
87
|
+
* @returns The minimum.
|
|
88
|
+
*/
|
|
89
|
+
min(vector: VectorLike): Vector;
|
|
90
|
+
|
|
91
|
+
/**
|
|
92
|
+
* Returns the maximum of this and another vector.
|
|
93
|
+
* @param vector The other vector.
|
|
94
|
+
* @returns The maximum.
|
|
95
|
+
*/
|
|
96
|
+
max(vector: VectorLike): Vector;
|
|
97
|
+
|
|
98
|
+
/**
|
|
99
|
+
* Scales this vector by a scalar.
|
|
100
|
+
* @param scalar The scalar.
|
|
101
|
+
* @returns The scaled vector.
|
|
102
|
+
*/
|
|
103
|
+
scale(scalar: number): Vector;
|
|
104
|
+
|
|
105
|
+
/**
|
|
106
|
+
* Adds another vector to this one after scaling the other by a scalar.
|
|
107
|
+
* @param vector The other vector.
|
|
108
|
+
* @param scalar The scalar.
|
|
109
|
+
* @returns The sum.
|
|
110
|
+
*/
|
|
111
|
+
scaleAndAdd(vector: VectorLike, scalar: number): Vector;
|
|
112
|
+
|
|
113
|
+
/**
|
|
114
|
+
* Calculates the Euclidean distance between this vector and another.
|
|
115
|
+
* @param vector The other vector.
|
|
116
|
+
* @returns The distance.
|
|
117
|
+
*/
|
|
118
|
+
distance(vector: VectorLike): number;
|
|
119
|
+
|
|
120
|
+
/**
|
|
121
|
+
* Calculates the squared Euclidean distance between this vector and another.
|
|
122
|
+
* @param vector The other vector.
|
|
123
|
+
* @returns The squared distance.
|
|
124
|
+
*/
|
|
125
|
+
squaredDistance(vector: VectorLike): number;
|
|
126
|
+
|
|
127
|
+
/** The magnitude (length) of this vector. */
|
|
128
|
+
get magnitude(): number;
|
|
129
|
+
|
|
130
|
+
/** The squared magnitude (length) of this vector. */
|
|
131
|
+
get squaredMagnitude(): number;
|
|
132
|
+
|
|
133
|
+
/**
|
|
134
|
+
* Negates this vector.
|
|
135
|
+
* @returns The negated vector.
|
|
136
|
+
*/
|
|
137
|
+
negate(): Vector;
|
|
138
|
+
|
|
139
|
+
/**
|
|
140
|
+
* Calculates the multiplicative inverse of the components of this vector.
|
|
141
|
+
* @returns The inverted vector.
|
|
142
|
+
*/
|
|
143
|
+
inverse(): Vector;
|
|
144
|
+
|
|
145
|
+
/**
|
|
146
|
+
* Normalizes this vector.
|
|
147
|
+
* @returns The normalized vector.
|
|
148
|
+
*/
|
|
149
|
+
normalize(): Vector;
|
|
150
|
+
|
|
151
|
+
/**
|
|
152
|
+
* Calculates the dot product of this and another vector.
|
|
153
|
+
* @param vector The other vector.
|
|
154
|
+
* @returns The dot product.
|
|
155
|
+
*/
|
|
156
|
+
dot(vector: VectorLike): number;
|
|
157
|
+
|
|
158
|
+
/**
|
|
159
|
+
* Performs a linear interpolation between this and another vector.
|
|
160
|
+
* @param vector The other vector.
|
|
161
|
+
* @param t The interpolation amount (in `[0,1]`).
|
|
162
|
+
* @returns The interpolated vector.
|
|
163
|
+
*/
|
|
164
|
+
lerp(vector: VectorLike, t: number): Vector;
|
|
165
|
+
|
|
166
|
+
/**
|
|
167
|
+
* Sets this vector to a random value with the given magnitude.
|
|
168
|
+
* @param magnitude The magnitude.
|
|
169
|
+
* @returns This vector.
|
|
170
|
+
*/
|
|
171
|
+
random(magnitude: number): this;
|
|
172
|
+
|
|
173
|
+
/**
|
|
174
|
+
* Sets this to the zero vector.
|
|
175
|
+
* @returns This vector.
|
|
176
|
+
*/
|
|
177
|
+
zero(): this;
|
|
178
|
+
}
|