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