@lakuna/umath 2.0.0 → 3.0.1

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 (88) hide show
  1. package/LICENSE +1 -1
  2. package/dist/algorithms/greatestCommonDivisor.d.ts.map +1 -1
  3. package/dist/algorithms/greatestCommonDivisor.js +14 -4
  4. package/dist/algorithms/greatestCommonDivisor.js.map +1 -1
  5. package/dist/index.d.ts +12 -12
  6. package/dist/index.d.ts.map +1 -1
  7. package/dist/index.js.map +1 -1
  8. package/dist/linalg/DualQuaternion.d.ts +158 -158
  9. package/dist/linalg/DualQuaternion.d.ts.map +1 -1
  10. package/dist/linalg/DualQuaternion.js +173 -165
  11. package/dist/linalg/DualQuaternion.js.map +1 -1
  12. package/dist/linalg/Matrix.d.ts +24 -24
  13. package/dist/linalg/Matrix.d.ts.map +1 -1
  14. package/dist/linalg/Matrix2.d.ts +85 -85
  15. package/dist/linalg/Matrix2.d.ts.map +1 -1
  16. package/dist/linalg/Matrix2.js +92 -88
  17. package/dist/linalg/Matrix2.js.map +1 -1
  18. package/dist/linalg/Matrix3.d.ts +134 -134
  19. package/dist/linalg/Matrix3.d.ts.map +1 -1
  20. package/dist/linalg/Matrix3.js +147 -138
  21. package/dist/linalg/Matrix3.js.map +1 -1
  22. package/dist/linalg/Matrix4.d.ts +245 -246
  23. package/dist/linalg/Matrix4.d.ts.map +1 -1
  24. package/dist/linalg/Matrix4.js +272 -251
  25. package/dist/linalg/Matrix4.js.map +1 -1
  26. package/dist/linalg/Quaternion.d.ts +147 -146
  27. package/dist/linalg/Quaternion.d.ts.map +1 -1
  28. package/dist/linalg/Quaternion.js +175 -161
  29. package/dist/linalg/Quaternion.js.map +1 -1
  30. package/dist/linalg/SlowMatrix.d.ts +12 -12
  31. package/dist/linalg/SlowMatrix.d.ts.map +1 -1
  32. package/dist/linalg/SlowMatrix.js +12 -12
  33. package/dist/linalg/SlowMatrix.js.map +1 -1
  34. package/dist/linalg/SlowSquareMatrix.d.ts +7 -7
  35. package/dist/linalg/SlowSquareMatrix.d.ts.map +1 -1
  36. package/dist/linalg/SlowSquareMatrix.js +15 -15
  37. package/dist/linalg/SlowSquareMatrix.js.map +1 -1
  38. package/dist/linalg/SlowVector.d.ts +77 -77
  39. package/dist/linalg/SlowVector.d.ts.map +1 -1
  40. package/dist/linalg/SlowVector.js +153 -153
  41. package/dist/linalg/SlowVector.js.map +1 -1
  42. package/dist/linalg/SquareMatrix.d.ts +8 -8
  43. package/dist/linalg/SquareMatrix.d.ts.map +1 -1
  44. package/dist/linalg/Vector.d.ts +85 -84
  45. package/dist/linalg/Vector.d.ts.map +1 -1
  46. package/dist/linalg/Vector2.d.ts +143 -143
  47. package/dist/linalg/Vector2.d.ts.map +1 -1
  48. package/dist/linalg/Vector2.js +145 -143
  49. package/dist/linalg/Vector2.js.map +1 -1
  50. package/dist/linalg/Vector3.d.ts +173 -173
  51. package/dist/linalg/Vector3.d.ts.map +1 -1
  52. package/dist/linalg/Vector3.js +176 -173
  53. package/dist/linalg/Vector3.js.map +1 -1
  54. package/dist/linalg/Vector4.d.ts +137 -137
  55. package/dist/linalg/Vector4.d.ts.map +1 -1
  56. package/dist/linalg/Vector4.js +144 -140
  57. package/dist/linalg/Vector4.js.map +1 -1
  58. package/dist/types/AxisAngle.d.ts +11 -1
  59. package/dist/types/AxisAngle.d.ts.map +1 -1
  60. package/dist/types/FieldOfView.d.ts +2 -2
  61. package/dist/types/FieldOfView.d.ts.map +1 -1
  62. package/dist/utility/BigNumber.d.ts +21 -11
  63. package/dist/utility/BigNumber.d.ts.map +1 -1
  64. package/dist/utility/BigNumber.js +49 -31
  65. package/dist/utility/BigNumber.js.map +1 -1
  66. package/dist/utility/createAxisAngleLike.d.ts.map +1 -1
  67. package/dist/utility/createAxisAngleLike.js.map +1 -1
  68. package/package.json +13 -12
  69. package/src/algorithms/greatestCommonDivisor.ts +19 -7
  70. package/src/index.ts +21 -14
  71. package/src/linalg/DualQuaternion.ts +264 -238
  72. package/src/linalg/Matrix.ts +31 -28
  73. package/src/linalg/Matrix2.ts +157 -137
  74. package/src/linalg/Matrix3.ts +222 -191
  75. package/src/linalg/Matrix4.ts +464 -412
  76. package/src/linalg/Quaternion.ts +267 -234
  77. package/src/linalg/SlowMatrix.ts +31 -27
  78. package/src/linalg/SlowSquareMatrix.ts +19 -18
  79. package/src/linalg/SlowVector.ts +175 -174
  80. package/src/linalg/SquareMatrix.ts +9 -9
  81. package/src/linalg/Vector.ts +91 -89
  82. package/src/linalg/Vector2.ts +250 -217
  83. package/src/linalg/Vector3.ts +309 -269
  84. package/src/linalg/Vector4.ts +246 -206
  85. package/src/types/AxisAngle.ts +13 -1
  86. package/src/types/FieldOfView.ts +3 -3
  87. package/src/utility/BigNumber.ts +71 -38
  88. package/src/utility/createAxisAngleLike.ts +1 -0
@@ -1,6 +1,6 @@
1
- import type { default as Vector, VectorLike } from "./Vector.js";
2
1
  import type { Matrix4Like } from "./Matrix4.js";
3
2
  import type { QuaternionLike } from "./Quaternion.js";
3
+ import type { default as Vector, VectorLike } from "./Vector.js";
4
4
  /**
5
5
  * A quantity with magnitude and direction in four dimensions.
6
6
  * @public
@@ -39,7 +39,7 @@ export declare const fromValues: <T extends Vector4Like>(x: number, y: number, z
39
39
  * @returns Whether or not the vectors are equivalent.
40
40
  * @public
41
41
  */
42
- export declare const equals: (a: Vector4Like, b: Vector4Like) => boolean;
42
+ export declare const equals: (a: Readonly<Vector4Like>, b: Readonly<Vector4Like>) => boolean;
43
43
  /**
44
44
  * Determine whether or not two vectors are exactly equivalent.
45
45
  * @param a - The first vector.
@@ -47,7 +47,7 @@ export declare const equals: (a: Vector4Like, b: Vector4Like) => boolean;
47
47
  * @returns Whether or not the vectors are equivalent.
48
48
  * @public
49
49
  */
50
- export declare const exactEquals: (a: Vector4Like, b: Vector4Like) => boolean;
50
+ export declare const exactEquals: (a: Readonly<Vector4Like>, b: Readonly<Vector4Like>) => boolean;
51
51
  /**
52
52
  * Add two vectors.
53
53
  * @param a - The augend.
@@ -56,7 +56,7 @@ export declare const exactEquals: (a: Vector4Like, b: Vector4Like) => boolean;
56
56
  * @returns The sum.
57
57
  * @public
58
58
  */
59
- export declare const add: <T extends Vector4Like>(a: Vector4Like, b: Vector4Like, out: T) => T;
59
+ export declare const add: <T extends Vector4Like>(a: Readonly<Vector4Like>, b: Readonly<Vector4Like>, out: T) => T;
60
60
  /**
61
61
  * Copy the values from one vector to another.
62
62
  * @param vector - The vector to copy.
@@ -64,7 +64,7 @@ export declare const add: <T extends Vector4Like>(a: Vector4Like, b: Vector4Like
64
64
  * @returns The copy.
65
65
  * @public
66
66
  */
67
- export declare const copy: <T extends Vector4Like>(vector: Vector4Like, out: T) => T;
67
+ export declare const copy: <T extends Vector4Like>(vector: Readonly<Vector4Like>, out: T) => T;
68
68
  /**
69
69
  * Multiply two vectors.
70
70
  * @param a - The multiplier.
@@ -73,7 +73,7 @@ export declare const copy: <T extends Vector4Like>(vector: Vector4Like, out: T)
73
73
  * @returns The product.
74
74
  * @public
75
75
  */
76
- export declare const multiply: <T extends Vector4Like>(a: Vector4Like, b: Vector4Like, out: T) => T;
76
+ export declare const multiply: <T extends Vector4Like>(a: Readonly<Vector4Like>, b: Readonly<Vector4Like>, out: T) => T;
77
77
  /**
78
78
  * Divide two vectors.
79
79
  * @param a - The dividend.
@@ -82,7 +82,7 @@ export declare const multiply: <T extends Vector4Like>(a: Vector4Like, b: Vector
82
82
  * @returns The quotient.
83
83
  * @public
84
84
  */
85
- export declare const divide: <T extends Vector4Like>(a: Vector4Like, b: Vector4Like, out: T) => T;
85
+ export declare const divide: <T extends Vector4Like>(a: Readonly<Vector4Like>, b: Readonly<Vector4Like>, out: T) => T;
86
86
  /**
87
87
  * Subtract two vectors.
88
88
  * @param a - The minuend.
@@ -91,7 +91,7 @@ export declare const divide: <T extends Vector4Like>(a: Vector4Like, b: Vector4L
91
91
  * @returns The difference.
92
92
  * @public
93
93
  */
94
- export declare const subtract: <T extends Vector4Like>(a: Vector4Like, b: Vector4Like, out: T) => T;
94
+ export declare const subtract: <T extends Vector4Like>(a: Readonly<Vector4Like>, b: Readonly<Vector4Like>, out: T) => T;
95
95
  /**
96
96
  * Absolutize the components of a vector.
97
97
  * @param vector - The vector.
@@ -99,7 +99,7 @@ export declare const subtract: <T extends Vector4Like>(a: Vector4Like, b: Vector
99
99
  * @returns The absolutized vector.
100
100
  * @public
101
101
  */
102
- export declare const abs: <T extends Vector4Like>(vector: Vector4Like, out: T) => T;
102
+ export declare const abs: <T extends Vector4Like>(vector: Readonly<Vector4Like>, out: T) => T;
103
103
  /**
104
104
  * Round up the components of a vector.
105
105
  * @param vector - The vector.
@@ -107,7 +107,7 @@ export declare const abs: <T extends Vector4Like>(vector: Vector4Like, out: T) =
107
107
  * @returns The rounded vector.
108
108
  * @public
109
109
  */
110
- export declare const ceil: <T extends Vector4Like>(vector: Vector4Like, out: T) => T;
110
+ export declare const ceil: <T extends Vector4Like>(vector: Readonly<Vector4Like>, out: T) => T;
111
111
  /**
112
112
  * Round down the components of a vector.
113
113
  * @param vector - The vector.
@@ -115,7 +115,7 @@ export declare const ceil: <T extends Vector4Like>(vector: Vector4Like, out: T)
115
115
  * @returns The rounded vector.
116
116
  * @public
117
117
  */
118
- export declare const floor: <T extends Vector4Like>(vector: Vector4Like, out: T) => T;
118
+ export declare const floor: <T extends Vector4Like>(vector: Readonly<Vector4Like>, out: T) => T;
119
119
  /**
120
120
  * Round the components of a vector.
121
121
  * @param vector - The vector.
@@ -123,7 +123,7 @@ export declare const floor: <T extends Vector4Like>(vector: Vector4Like, out: T)
123
123
  * @returns The rounded vector.
124
124
  * @public
125
125
  */
126
- export declare const round: <T extends Vector4Like>(vector: Vector4Like, out: T) => T;
126
+ export declare const round: <T extends Vector4Like>(vector: Readonly<Vector4Like>, out: T) => T;
127
127
  /**
128
128
  * Return the minimum of two vectors.
129
129
  * @param a - The first vector.
@@ -132,7 +132,7 @@ export declare const round: <T extends Vector4Like>(vector: Vector4Like, out: T)
132
132
  * @returns The minimum.
133
133
  * @public
134
134
  */
135
- export declare const min: <T extends Vector4Like>(a: Vector4Like, b: Vector4Like, out: T) => T;
135
+ export declare const min: <T extends Vector4Like>(a: Readonly<Vector4Like>, b: Readonly<Vector4Like>, out: T) => T;
136
136
  /**
137
137
  * Return the maximum of two vectors.
138
138
  * @param a - The first vector.
@@ -141,7 +141,7 @@ export declare const min: <T extends Vector4Like>(a: Vector4Like, b: Vector4Like
141
141
  * @returns The maximum.
142
142
  * @public
143
143
  */
144
- export declare const max: <T extends Vector4Like>(a: Vector4Like, b: Vector4Like, out: T) => T;
144
+ export declare const max: <T extends Vector4Like>(a: Readonly<Vector4Like>, b: Readonly<Vector4Like>, out: T) => T;
145
145
  /**
146
146
  * Raise each component of a vector to the given power.
147
147
  * @param vector - The base.
@@ -150,7 +150,7 @@ export declare const max: <T extends Vector4Like>(a: Vector4Like, b: Vector4Like
150
150
  * @returns The power (result of the exponentiation).
151
151
  * @public
152
152
  */
153
- export declare const pow: <T extends Vector4Like>(vector: Vector4Like, scalar: number, out: T) => T;
153
+ export declare const pow: <T extends Vector4Like>(vector: Readonly<Vector4Like>, scalar: number, out: T) => T;
154
154
  /**
155
155
  * Scale a vector by a scalar.
156
156
  * @param vector - The multiplier.
@@ -159,7 +159,7 @@ export declare const pow: <T extends Vector4Like>(vector: Vector4Like, scalar: n
159
159
  * @returns The product.
160
160
  * @public
161
161
  */
162
- export declare const scale: <T extends Vector4Like>(vector: Vector4Like, scalar: number, out: T) => T;
162
+ export declare const scale: <T extends Vector4Like>(vector: Readonly<Vector4Like>, scalar: number, out: T) => T;
163
163
  /**
164
164
  * Add two vectors after scaling the second by a scalar.
165
165
  * @param a - The augend.
@@ -169,7 +169,7 @@ export declare const scale: <T extends Vector4Like>(vector: Vector4Like, scalar:
169
169
  * @returns The sum.
170
170
  * @public
171
171
  */
172
- export declare const scaleAndAdd: <T extends Vector4Like>(a: Vector4Like, b: Vector4Like, scalar: number, out: T) => T;
172
+ export declare const scaleAndAdd: <T extends Vector4Like>(a: Readonly<Vector4Like>, b: Readonly<Vector4Like>, scalar: number, out: T) => T;
173
173
  /**
174
174
  * Calculate the Euclidean distance between two vectors.
175
175
  * @param a - The first vector
@@ -178,7 +178,7 @@ export declare const scaleAndAdd: <T extends Vector4Like>(a: Vector4Like, b: Vec
178
178
  * @see {@link https://en.wikipedia.org/wiki/Euclidean_distance | Euclidean distance}
179
179
  * @public
180
180
  */
181
- export declare const distance: (a: Vector4Like, b: Vector4Like) => number;
181
+ export declare const distance: (a: Readonly<Vector4Like>, b: Readonly<Vector4Like>) => number;
182
182
  /**
183
183
  * Calculate the squared Euclidean distance between two vectors.
184
184
  * @param a - The first vector.
@@ -187,21 +187,21 @@ export declare const distance: (a: Vector4Like, b: Vector4Like) => number;
187
187
  * @see {@link https://en.wikipedia.org/wiki/Euclidean_distance | Euclidean distance}
188
188
  * @public
189
189
  */
190
- export declare const squaredDistance: (a: Vector4Like, b: Vector4Like) => number;
190
+ export declare const squaredDistance: (a: Readonly<Vector4Like>, b: Readonly<Vector4Like>) => number;
191
191
  /**
192
192
  * Calculate the magnitude (length) of a vector.
193
193
  * @param vector - The vector.
194
194
  * @returns The magnitude.
195
195
  * @public
196
196
  */
197
- export declare const getMagnitude: (vector: Vector4Like) => number;
197
+ export declare const getMagnitude: (vector: Readonly<Vector4Like>) => number;
198
198
  /**
199
199
  * Calculate the squared magnitude (length) of a vector.
200
200
  * @param vector - The vector.
201
201
  * @returns The magnitude.
202
202
  * @public
203
203
  */
204
- export declare const getSquaredMagnitude: (vector: Vector4Like) => number;
204
+ export declare const getSquaredMagnitude: (vector: Readonly<Vector4Like>) => number;
205
205
  /**
206
206
  * Negate a vector.
207
207
  * @param vector - The vector.
@@ -209,7 +209,7 @@ export declare const getSquaredMagnitude: (vector: Vector4Like) => number;
209
209
  * @returns The negated vector.
210
210
  * @public
211
211
  */
212
- export declare const negate: <T extends Vector4Like>(vector: Vector4Like, out: T) => T;
212
+ export declare const negate: <T extends Vector4Like>(vector: Readonly<Vector4Like>, out: T) => T;
213
213
  /**
214
214
  * Calculate the multiplicative inverse of the components of a vector.
215
215
  * @param vector - The vector.
@@ -217,7 +217,7 @@ export declare const negate: <T extends Vector4Like>(vector: Vector4Like, out: T
217
217
  * @returns The inverted vector.
218
218
  * @public
219
219
  */
220
- export declare const invert: <T extends Vector4Like>(vector: Vector4Like, out: T) => T;
220
+ export declare const invert: <T extends Vector4Like>(vector: Readonly<Vector4Like>, out: T) => T;
221
221
  /**
222
222
  * Normalize a vector.
223
223
  * @param vector - The vector.
@@ -226,7 +226,7 @@ export declare const invert: <T extends Vector4Like>(vector: Vector4Like, out: T
226
226
  * @see {@link https://en.wikipedia.org/wiki/Unit_vector | Unit vector}
227
227
  * @public
228
228
  */
229
- export declare const normalize: <T extends Vector4Like>(vector: Vector4Like, out: T) => T;
229
+ export declare const normalize: <T extends Vector4Like>(vector: Readonly<Vector4Like>, out: T) => T;
230
230
  /**
231
231
  * Calculate the dot product of two vectors.
232
232
  * @param a - The multiplier.
@@ -235,7 +235,7 @@ export declare const normalize: <T extends Vector4Like>(vector: Vector4Like, out
235
235
  * @see {@link https://en.wikipedia.org/wiki/Dot_product | Dot product}
236
236
  * @public
237
237
  */
238
- export declare const dot: (a: Vector4Like, b: Vector4Like) => number;
238
+ export declare const dot: (a: Readonly<Vector4Like>, b: Readonly<Vector4Like>) => number;
239
239
  /**
240
240
  * Calculate the cross product of three vectors in a four-dimensional space.
241
241
  * @param a - The first vector.
@@ -246,7 +246,7 @@ export declare const dot: (a: Vector4Like, b: Vector4Like) => number;
246
246
  * @see {@link https://en.wikipedia.org/wiki/Cross_product | Cross product}
247
247
  * @public
248
248
  */
249
- export declare const cross: <T extends Vector4Like>(a: Vector4Like, b: Vector4Like, c: Vector4Like, out: T) => T;
249
+ export declare const cross: <T extends Vector4Like>(a: Readonly<Vector4Like>, b: Readonly<Vector4Like>, c: Readonly<Vector4Like>, out: T) => T;
250
250
  /**
251
251
  * Perform a linear interpolation between two vectors.
252
252
  * @param a - The first vector.
@@ -257,7 +257,7 @@ export declare const cross: <T extends Vector4Like>(a: Vector4Like, b: Vector4Li
257
257
  * @see {@link https://en.wikipedia.org/wiki/Linear_interpolation | Linear interpolation}
258
258
  * @public
259
259
  */
260
- export declare const lerp: <T extends Vector4Like>(a: Vector4Like, b: Vector4Like, t: number, out: T) => T;
260
+ export declare const lerp: <T extends Vector4Like>(a: Readonly<Vector4Like>, b: Readonly<Vector4Like>, t: number, out: T) => T;
261
261
  /**
262
262
  * Set this vector to a random value with the given magnitude.
263
263
  * @param magnitude - The magnitude.
@@ -276,7 +276,7 @@ export declare const random: <T extends Vector4Like>(magnitude: number, out: T)
276
276
  * @see {@link https://en.wikipedia.org/wiki/Transformation_matrix | Transformation matrix}
277
277
  * @public
278
278
  */
279
- export declare const transformMatrix4: <T extends Vector4Like>(vector: Vector4Like, matrix: Matrix4Like, out: T) => T;
279
+ export declare const transformMatrix4: <T extends Vector4Like>(vector: Readonly<Vector4Like>, matrix: Readonly<Matrix4Like>, out: T) => T;
280
280
  /**
281
281
  * Set a vector to the zero vector.
282
282
  * @param out - The vector to store the result in.
@@ -294,27 +294,13 @@ export declare const zero: <T extends Vector4Like>(out: T) => T;
294
294
  * @see {@link https://raw.org/proof/vector-rotation-using-quaternions/ | Fast Vector Rotation using Quaternions}
295
295
  * @public
296
296
  */
297
- export declare const transformQuaternion: <T extends Vector4Like>(vector: Vector4Like, quaternion: QuaternionLike, out: T) => T;
297
+ export declare const transformQuaternion: <T extends Vector4Like>(vector: Readonly<Vector4Like>, quaternion: Readonly<QuaternionLike>, out: T) => T;
298
298
  /**
299
299
  * A quantity with magnitude and direction in four dimensions.
300
300
  * @see {@link https://en.wikipedia.org/wiki/Euclidean_vector | Euclidean vector}
301
301
  * @public
302
302
  */
303
303
  export default class Vector4 extends Float32Array implements Vector, Vector4Like {
304
- /**
305
- * Create a vector with the given values.
306
- * @param x - The first component.
307
- * @param y - The second component.
308
- * @param z - The third component.
309
- * @param w - The fourth component.
310
- * @returns A new vector.
311
- */
312
- static fromValues(x: number, y: number, z: number, w: number): Vector4;
313
- /**
314
- * Create a four-dimensional zero vector.
315
- * @see {@link https://en.wikipedia.org/wiki/Euclidean_vector | Euclidean vector}
316
- */
317
- constructor();
318
304
  /** The first component of this vector. */
319
305
  0: number;
320
306
  /** The second component of this vector. */
@@ -323,24 +309,42 @@ export default class Vector4 extends Float32Array implements Vector, Vector4Like
323
309
  2: number;
324
310
  /** The fourth component of this vector. */
325
311
  3: number;
312
+ /** The magnitude (length) of this vector. */
313
+ get magnitude(): number;
314
+ set magnitude(value: number);
315
+ /** The squared magnitude (length) of this vector. */
316
+ get squaredMagnitude(): number;
317
+ set squaredMagnitude(value: number);
326
318
  /**
327
- * Determine whether or not this vector is roughly equivalent to another.
328
- * @param vector - The other vector.
329
- * @returns Whether or no tthe vectors are equivalent.
319
+ * Create a four-dimensional zero vector.
320
+ * @see {@link https://en.wikipedia.org/wiki/Euclidean_vector | Euclidean vector}
330
321
  */
331
- equals(vector: Vector4Like): boolean;
322
+ constructor();
332
323
  /**
333
- * Determine whether or not this vector is exactly equivalent to another.
334
- * @param vector - The other vector.
335
- * @returns Whether the vectors are equivalent.
324
+ * Create a vector with the given values.
325
+ * @param x - The first component.
326
+ * @param y - The second component.
327
+ * @param z - The third component.
328
+ * @param w - The fourth component.
329
+ * @returns A new vector.
336
330
  */
337
- exactEquals(vector: Vector4Like): boolean;
331
+ static fromValues(x: number, y: number, z: number, w: number): Vector4;
332
+ /**
333
+ * Absolutize the components of this vector.
334
+ * @returns The absolutized vector.
335
+ */
336
+ abs(): Vector4;
338
337
  /**
339
338
  * Add two vectors of the same size.
340
339
  * @param vector - The other vector.
341
340
  * @returns The sum of the vectors.
342
341
  */
343
- add(vector: Vector4Like): Vector4;
342
+ add(vector: Readonly<Vector4Like>): Vector4;
343
+ /**
344
+ * Round up the components of this vector.
345
+ * @returns The rounded vector.
346
+ */
347
+ ceil(): Vector4;
344
348
  /**
345
349
  * Copy the values from this vector to another one.
346
350
  * @returns The copy.
@@ -351,63 +355,111 @@ export default class Vector4 extends Float32Array implements Vector, Vector4Like
351
355
  * @param vector - The vector to copy.
352
356
  * @returns This vector.
353
357
  */
354
- copy(vector: Vector4Like): this;
358
+ copy(vector: Readonly<Vector4Like>): this;
355
359
  /**
356
- * Multiply this vector by another.
360
+ * Calculate the cross product of this and two other vectors in a four-dimensional space.
361
+ * @param a - One other vector.
362
+ * @param b - The other other vector.
363
+ * @returns The cross product.
364
+ * @see {@link https://en.wikipedia.org/wiki/Cross_product | Cross product}
365
+ */
366
+ cross(a: Readonly<Vector4Like>, b: Readonly<Vector4Like>): Vector4;
367
+ /**
368
+ * Calculate the Euclidean distance between this vector and another.
357
369
  * @param vector - The other vector.
358
- * @returns The product of the vectors.
370
+ * @returns The distance.
371
+ * @see {@link https://en.wikipedia.org/wiki/Euclidean_distance | Euclidean distance}
359
372
  */
360
- multiply(vector: Vector4Like): Vector4;
373
+ distance(vector: Readonly<Vector4Like>): number;
361
374
  /**
362
375
  * Divide this vector by another.
363
376
  * @param vector - The other vector.
364
377
  * @returns The quotient of the vectors.
365
378
  */
366
- divide(vector: Vector4Like): Vector4;
379
+ divide(vector: Readonly<Vector4Like>): Vector4;
367
380
  /**
368
- * Subtract another vector from this one.
381
+ * Calculate the dot product of this and another vector.
369
382
  * @param vector - The other vector.
370
- * @returns The difference between the vectors.
383
+ * @returns The dot product.
384
+ * @see {@link https://en.wikipedia.org/wiki/Dot_product | Dot product}
371
385
  */
372
- subtract(vector: Vector4Like): Vector4;
386
+ dot(vector: Readonly<Vector4Like>): number;
373
387
  /**
374
- * Absolutize the components of this vector.
375
- * @returns The absolutized vector.
388
+ * Determine whether or not this vector is roughly equivalent to another.
389
+ * @param vector - The other vector.
390
+ * @returns Whether or no tthe vectors are equivalent.
376
391
  */
377
- abs(): Vector4;
392
+ equals(vector: Readonly<Vector4Like>): boolean;
378
393
  /**
379
- * Round up the components of this vector.
380
- * @returns The rounded vector.
394
+ * Determine whether or not this vector is exactly equivalent to another.
395
+ * @param vector - The other vector.
396
+ * @returns Whether the vectors are equivalent.
381
397
  */
382
- ceil(): Vector4;
398
+ exactEquals(vector: Readonly<Vector4Like>): boolean;
383
399
  /**
384
400
  * Round down the components of this vector.
385
401
  * @returns The rounded vector.
386
402
  */
387
403
  floor(): Vector4;
388
404
  /**
389
- * Round the components of this vector.
390
- * @returns The rounded vector.
405
+ * Calculate the multiplicative inverse of the components of this vector.
406
+ * @returns The inverted vector.
391
407
  */
392
- round(): Vector4;
408
+ invert(): Vector4;
393
409
  /**
394
- * Return the minimum of this and another vector.
410
+ * Perform a linear interpolation between this and another vector.
395
411
  * @param vector - The other vector.
396
- * @returns The minimum.
412
+ * @param t - The interpolation amount (in `[0,1]`).
413
+ * @returns The interpolated vector.
414
+ * @see {@link https://en.wikipedia.org/wiki/Linear_interpolation | Linear interpolation}
397
415
  */
398
- min(vector: Vector4Like): Vector4;
416
+ lerp(vector: Readonly<Vector4Like>, t: number): Vector4;
399
417
  /**
400
418
  * Return the maximum of this and another vector.
401
419
  * @param vector - The other vector.
402
420
  * @returns The maximum.
403
421
  */
404
- max(vector: Vector4Like): Vector4;
422
+ max(vector: Readonly<Vector4Like>): Vector4;
423
+ /**
424
+ * Return the minimum of this and another vector.
425
+ * @param vector - The other vector.
426
+ * @returns The minimum.
427
+ */
428
+ min(vector: Readonly<Vector4Like>): Vector4;
429
+ /**
430
+ * Multiply this vector by another.
431
+ * @param vector - The other vector.
432
+ * @returns The product of the vectors.
433
+ */
434
+ multiply(vector: Readonly<Vector4Like>): Vector4;
435
+ /**
436
+ * Negate this vector.
437
+ * @returns The negated vector.
438
+ */
439
+ negate(): Vector4;
440
+ /**
441
+ * Normalize this vector.
442
+ * @returns The normalized vector.
443
+ * @see {@link https://en.wikipedia.org/wiki/Unit_vector | Unit vector}
444
+ */
445
+ normalize(): Vector4;
405
446
  /**
406
447
  * Raise each component of this vector to the given power.
407
448
  * @param scalar - The exponent (power) to raise each component to.
408
449
  * @returns The power (result of the exponentiation).
409
450
  */
410
451
  pow(scalar: number): Vector4;
452
+ /**
453
+ * Set this vector to a random value with the given magnitude.
454
+ * @param magnitude - The magnitude.
455
+ * @returns This vector.
456
+ */
457
+ random(magnitude?: number): this;
458
+ /**
459
+ * Round the components of this vector.
460
+ * @returns The rounded vector.
461
+ */
462
+ round(): Vector4;
411
463
  /**
412
464
  * Scale this vector by a scalar.
413
465
  * @param scalar - The scalar.
@@ -420,90 +472,38 @@ export default class Vector4 extends Float32Array implements Vector, Vector4Like
420
472
  * @param scalar - The scalar.
421
473
  * @returns The sum.
422
474
  */
423
- scaleAndAdd(vector: Vector4Like, scalar: number): Vector4;
424
- /**
425
- * Calculate the Euclidean distance between this vector and another.
426
- * @param vector - The other vector.
427
- * @returns The distance.
428
- * @see {@link https://en.wikipedia.org/wiki/Euclidean_distance | Euclidean distance}
429
- */
430
- distance(vector: Vector4Like): number;
475
+ scaleAndAdd(vector: Readonly<Vector4Like>, scalar: number): Vector4;
431
476
  /**
432
477
  * Calculate the squared Euclidean distance between this vector and another.
433
478
  * @param vector - The other vector.
434
479
  * @returns The squared distance.
435
480
  * @see {@link https://en.wikipedia.org/wiki/Euclidean_distance | Euclidean distance}
436
481
  */
437
- squaredDistance(vector: Vector4Like): number;
438
- /** The magnitude (length) of this vector. */
439
- get magnitude(): number;
440
- set magnitude(value: number);
441
- /** The squared magnitude (length) of this vector. */
442
- get squaredMagnitude(): number;
443
- set squaredMagnitude(value: number);
444
- /**
445
- * Negate this vector.
446
- * @returns The negated vector.
447
- */
448
- negate(): Vector4;
449
- /**
450
- * Calculate the multiplicative inverse of the components of this vector.
451
- * @returns The inverted vector.
452
- */
453
- invert(): Vector4;
454
- /**
455
- * Normalize this vector.
456
- * @returns The normalized vector.
457
- * @see {@link https://en.wikipedia.org/wiki/Unit_vector | Unit vector}
458
- */
459
- normalize(): Vector4;
460
- /**
461
- * Calculate the dot product of this and another vector.
462
- * @param vector - The other vector.
463
- * @returns The dot product.
464
- * @see {@link https://en.wikipedia.org/wiki/Dot_product | Dot product}
465
- */
466
- dot(vector: Vector4Like): number;
467
- /**
468
- * Calculate the cross product of this and two other vectors in a four-dimensional space.
469
- * @param a - One other vector.
470
- * @param b - The other other vector.
471
- * @returns The cross product.
472
- * @see {@link https://en.wikipedia.org/wiki/Cross_product | Cross product}
473
- */
474
- cross(a: Vector4Like, b: Vector4Like): Vector4;
482
+ squaredDistance(vector: Readonly<Vector4Like>): number;
475
483
  /**
476
- * Perform a linear interpolation between this and another vector.
484
+ * Subtract another vector from this one.
477
485
  * @param vector - The other vector.
478
- * @param t - The interpolation amount (in `[0,1]`).
479
- * @returns The interpolated vector.
480
- * @see {@link https://en.wikipedia.org/wiki/Linear_interpolation | Linear interpolation}
486
+ * @returns The difference between the vectors.
481
487
  */
482
- lerp(vector: Vector4Like, t: number): Vector4;
483
- /**
484
- * Set this vector to a random value with the given magnitude.
485
- * @param magnitude - The magnitude.
486
- * @returns This vector.
487
- */
488
- random(magnitude?: number): this;
488
+ subtract(vector: Readonly<Vector4Like>): Vector4;
489
489
  /**
490
490
  * Transform this vector by a four-by-four matrix.
491
491
  * @param matrix - The matrix.
492
492
  * @returns The transformed vector.
493
493
  * @see {@link https://en.wikipedia.org/wiki/Transformation_matrix | Transformation matrix}
494
494
  */
495
- transformMatrix4(matrix: Matrix4Like): Vector4;
496
- /**
497
- * Set this to the zero vector.
498
- * @returns This vector.
499
- */
500
- zero(): this;
495
+ transformMatrix4(matrix: Readonly<Matrix4Like>): Vector4;
501
496
  /**
502
497
  * Transform this vector by a quaternion.
503
498
  * @param quaternion - The quaternion.
504
499
  * @returns The transformed vector.
505
500
  * @see {@link https://en.wikipedia.org/wiki/Quaternion | Quaternion}
506
501
  */
507
- transformQuaternion(quaternion: QuaternionLike): Vector4;
502
+ transformQuaternion(quaternion: Readonly<QuaternionLike>): Vector4;
503
+ /**
504
+ * Set this to the zero vector.
505
+ * @returns This vector.
506
+ */
507
+ zero(): this;
508
508
  }
509
509
  //# sourceMappingURL=Vector4.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Vector4.d.ts","sourceRoot":"","sources":["../../src/linalg/Vector4.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Vector4.d.ts","sourceRoot":"","sources":["../../src/linalg/Vector4.ts"],"names":[],"mappings":"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"}