@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/Vector2.ts
CHANGED
|
@@ -57,8 +57,10 @@ export const fromValues = <T extends Vector2Like>(
|
|
|
57
57
|
* @returns Whether or not the vectors are equivalent.
|
|
58
58
|
* @public
|
|
59
59
|
*/
|
|
60
|
-
export const equals = (
|
|
61
|
-
|
|
60
|
+
export const equals = (
|
|
61
|
+
a: Readonly<Vector2Like>,
|
|
62
|
+
b: Readonly<Vector2Like>
|
|
63
|
+
): boolean => approxRelative(a[0], b[0]) && approxRelative(a[1], b[1]);
|
|
62
64
|
|
|
63
65
|
/**
|
|
64
66
|
* Determine whether or not two vectors are exactly equivalent.
|
|
@@ -67,8 +69,10 @@ export const equals = (a: Vector2Like, b: Vector2Like): boolean =>
|
|
|
67
69
|
* @returns Whether or not the vectors are equivalent.
|
|
68
70
|
* @public
|
|
69
71
|
*/
|
|
70
|
-
export const exactEquals = (
|
|
71
|
-
a
|
|
72
|
+
export const exactEquals = (
|
|
73
|
+
a: Readonly<Vector2Like>,
|
|
74
|
+
b: Readonly<Vector2Like>
|
|
75
|
+
): boolean => a[0] === b[0] && a[1] === b[1];
|
|
72
76
|
|
|
73
77
|
/**
|
|
74
78
|
* Add two vectors.
|
|
@@ -78,9 +82,9 @@ export const exactEquals = (a: Vector2Like, b: Vector2Like): boolean =>
|
|
|
78
82
|
* @returns The sum.
|
|
79
83
|
* @public
|
|
80
84
|
*/
|
|
81
|
-
export const add = <T extends Vector2Like
|
|
82
|
-
a: Vector2Like
|
|
83
|
-
b: Vector2Like
|
|
85
|
+
export const add = <T extends Readonly<Vector2Like>>(
|
|
86
|
+
a: Readonly<Vector2Like>,
|
|
87
|
+
b: Readonly<Vector2Like>,
|
|
84
88
|
out: T
|
|
85
89
|
): T => fromValues(a[0] + b[0], a[1] + b[1], out);
|
|
86
90
|
|
|
@@ -91,8 +95,10 @@ export const add = <T extends Vector2Like>(
|
|
|
91
95
|
* @returns The copy.
|
|
92
96
|
* @public
|
|
93
97
|
*/
|
|
94
|
-
export const copy = <T extends Vector2Like>(
|
|
95
|
-
|
|
98
|
+
export const copy = <T extends Vector2Like>(
|
|
99
|
+
vector: Readonly<Vector2Like>,
|
|
100
|
+
out: T
|
|
101
|
+
): T => fromValues(vector[0], vector[1], out);
|
|
96
102
|
|
|
97
103
|
/**
|
|
98
104
|
* Multiply the components in one vector by the corresponding components in another.
|
|
@@ -103,8 +109,8 @@ export const copy = <T extends Vector2Like>(vector: Vector2Like, out: T): T =>
|
|
|
103
109
|
* @public
|
|
104
110
|
*/
|
|
105
111
|
export const multiply = <T extends Vector2Like>(
|
|
106
|
-
a: Vector2Like
|
|
107
|
-
b: Vector2Like
|
|
112
|
+
a: Readonly<Vector2Like>,
|
|
113
|
+
b: Readonly<Vector2Like>,
|
|
108
114
|
out: T
|
|
109
115
|
): T => fromValues(a[0] * b[0], a[1] * b[1], out);
|
|
110
116
|
|
|
@@ -117,8 +123,8 @@ export const multiply = <T extends Vector2Like>(
|
|
|
117
123
|
* @public
|
|
118
124
|
*/
|
|
119
125
|
export const divide = <T extends Vector2Like>(
|
|
120
|
-
a: Vector2Like
|
|
121
|
-
b: Vector2Like
|
|
126
|
+
a: Readonly<Vector2Like>,
|
|
127
|
+
b: Readonly<Vector2Like>,
|
|
122
128
|
out: T
|
|
123
129
|
): T => fromValues(a[0] / b[0], a[1] / b[1], out);
|
|
124
130
|
|
|
@@ -131,8 +137,8 @@ export const divide = <T extends Vector2Like>(
|
|
|
131
137
|
* @public
|
|
132
138
|
*/
|
|
133
139
|
export const subtract = <T extends Vector2Like>(
|
|
134
|
-
a: Vector2Like
|
|
135
|
-
b: Vector2Like
|
|
140
|
+
a: Readonly<Vector2Like>,
|
|
141
|
+
b: Readonly<Vector2Like>,
|
|
136
142
|
out: T
|
|
137
143
|
): T => fromValues(a[0] - b[0], a[1] - b[1], out);
|
|
138
144
|
|
|
@@ -143,8 +149,10 @@ export const subtract = <T extends Vector2Like>(
|
|
|
143
149
|
* @returns The absolutized vector.
|
|
144
150
|
* @public
|
|
145
151
|
*/
|
|
146
|
-
export const abs = <T extends Vector2Like>(
|
|
147
|
-
|
|
152
|
+
export const abs = <T extends Vector2Like>(
|
|
153
|
+
vector: Readonly<Vector2Like>,
|
|
154
|
+
out: T
|
|
155
|
+
): T => fromValues(Math.abs(vector[0]), Math.abs(vector[1]), out);
|
|
148
156
|
|
|
149
157
|
/**
|
|
150
158
|
* Round up the components of a vector.
|
|
@@ -153,8 +161,10 @@ export const abs = <T extends Vector2Like>(vector: Vector2Like, out: T): T =>
|
|
|
153
161
|
* @returns The rounded vector.
|
|
154
162
|
* @public
|
|
155
163
|
*/
|
|
156
|
-
export const ceil = <T extends Vector2Like>(
|
|
157
|
-
|
|
164
|
+
export const ceil = <T extends Vector2Like>(
|
|
165
|
+
vector: Readonly<Vector2Like>,
|
|
166
|
+
out: T
|
|
167
|
+
): T => fromValues(Math.ceil(vector[0]), Math.ceil(vector[1]), out);
|
|
158
168
|
|
|
159
169
|
/**
|
|
160
170
|
* Round down the components of a vector.
|
|
@@ -163,8 +173,10 @@ export const ceil = <T extends Vector2Like>(vector: Vector2Like, out: T): T =>
|
|
|
163
173
|
* @returns The rounded vector.
|
|
164
174
|
* @public
|
|
165
175
|
*/
|
|
166
|
-
export const floor = <T extends Vector2Like>(
|
|
167
|
-
|
|
176
|
+
export const floor = <T extends Vector2Like>(
|
|
177
|
+
vector: Readonly<Vector2Like>,
|
|
178
|
+
out: T
|
|
179
|
+
): T => fromValues(Math.floor(vector[0]), Math.floor(vector[1]), out);
|
|
168
180
|
|
|
169
181
|
/**
|
|
170
182
|
* Round the components of a vector.
|
|
@@ -173,8 +185,10 @@ export const floor = <T extends Vector2Like>(vector: Vector2Like, out: T): T =>
|
|
|
173
185
|
* @returns The rounded vector.
|
|
174
186
|
* @public
|
|
175
187
|
*/
|
|
176
|
-
export const round = <T extends Vector2Like>(
|
|
177
|
-
|
|
188
|
+
export const round = <T extends Vector2Like>(
|
|
189
|
+
vector: Readonly<Vector2Like>,
|
|
190
|
+
out: T
|
|
191
|
+
): T => fromValues(Math.round(vector[0]), Math.round(vector[1]), out);
|
|
178
192
|
|
|
179
193
|
/**
|
|
180
194
|
* Return the minimum of two vectors.
|
|
@@ -185,8 +199,8 @@ export const round = <T extends Vector2Like>(vector: Vector2Like, out: T): T =>
|
|
|
185
199
|
* @public
|
|
186
200
|
*/
|
|
187
201
|
export const min = <T extends Vector2Like>(
|
|
188
|
-
a: Vector2Like
|
|
189
|
-
b: Vector2Like
|
|
202
|
+
a: Readonly<Vector2Like>,
|
|
203
|
+
b: Readonly<Vector2Like>,
|
|
190
204
|
out: T
|
|
191
205
|
): T => fromValues(Math.min(a[0], b[0]), Math.min(a[1], b[1]), out);
|
|
192
206
|
|
|
@@ -199,8 +213,8 @@ export const min = <T extends Vector2Like>(
|
|
|
199
213
|
* @public
|
|
200
214
|
*/
|
|
201
215
|
export const max = <T extends Vector2Like>(
|
|
202
|
-
a: Vector2Like
|
|
203
|
-
b: Vector2Like
|
|
216
|
+
a: Readonly<Vector2Like>,
|
|
217
|
+
b: Readonly<Vector2Like>,
|
|
204
218
|
out: T
|
|
205
219
|
): T => fromValues(Math.max(a[0], b[0]), Math.max(a[1], b[1]), out);
|
|
206
220
|
|
|
@@ -213,7 +227,7 @@ export const max = <T extends Vector2Like>(
|
|
|
213
227
|
* @public
|
|
214
228
|
*/
|
|
215
229
|
export const pow = <T extends Vector2Like>(
|
|
216
|
-
vector: Vector2Like
|
|
230
|
+
vector: Readonly<Vector2Like>,
|
|
217
231
|
scalar: number,
|
|
218
232
|
out: T
|
|
219
233
|
): T => fromValues(vector[0] ** scalar, vector[1] ** scalar, out);
|
|
@@ -227,7 +241,7 @@ export const pow = <T extends Vector2Like>(
|
|
|
227
241
|
* @public
|
|
228
242
|
*/
|
|
229
243
|
export const scale = <T extends Vector2Like>(
|
|
230
|
-
vector: Vector2Like
|
|
244
|
+
vector: Readonly<Vector2Like>,
|
|
231
245
|
scalar: number,
|
|
232
246
|
out: T
|
|
233
247
|
): T => fromValues(vector[0] * scalar, vector[1] * scalar, out);
|
|
@@ -242,8 +256,8 @@ export const scale = <T extends Vector2Like>(
|
|
|
242
256
|
* @public
|
|
243
257
|
*/
|
|
244
258
|
export const scaleAndAdd = <T extends Vector2Like>(
|
|
245
|
-
a: Vector2Like
|
|
246
|
-
b: Vector2Like
|
|
259
|
+
a: Readonly<Vector2Like>,
|
|
260
|
+
b: Readonly<Vector2Like>,
|
|
247
261
|
scalar: number,
|
|
248
262
|
out: T
|
|
249
263
|
): T => fromValues(a[0] + b[0] * scalar, a[1] + b[1] * scalar, out);
|
|
@@ -256,8 +270,10 @@ export const scaleAndAdd = <T extends Vector2Like>(
|
|
|
256
270
|
* @see {@link https://en.wikipedia.org/wiki/Euclidean_distance | Euclidean distance}
|
|
257
271
|
* @public
|
|
258
272
|
*/
|
|
259
|
-
export const distance = (
|
|
260
|
-
|
|
273
|
+
export const distance = (
|
|
274
|
+
a: Readonly<Vector2Like>,
|
|
275
|
+
b: Readonly<Vector2Like>
|
|
276
|
+
): number => Math.hypot(b[0] - a[0], b[1] - a[1]);
|
|
261
277
|
|
|
262
278
|
/**
|
|
263
279
|
* Calculate the squared Euclidean distance from one vector to another.
|
|
@@ -267,7 +283,10 @@ export const distance = (a: Vector2Like, b: Vector2Like): number =>
|
|
|
267
283
|
* @see {@link https://en.wikipedia.org/wiki/Euclidean_distance | Euclidean distance}
|
|
268
284
|
* @public
|
|
269
285
|
*/
|
|
270
|
-
export const squaredDistance = (
|
|
286
|
+
export const squaredDistance = (
|
|
287
|
+
a: Readonly<Vector2Like>,
|
|
288
|
+
b: Readonly<Vector2Like>
|
|
289
|
+
): number => {
|
|
271
290
|
const x = b[0] - a[0];
|
|
272
291
|
const y = b[1] - a[1];
|
|
273
292
|
return x * x + y * y;
|
|
@@ -279,7 +298,7 @@ export const squaredDistance = (a: Vector2Like, b: Vector2Like): number => {
|
|
|
279
298
|
* @returns The magnitude.
|
|
280
299
|
* @public
|
|
281
300
|
*/
|
|
282
|
-
export const getMagnitude = (vector: Vector2Like): number =>
|
|
301
|
+
export const getMagnitude = (vector: Readonly<Vector2Like>): number =>
|
|
283
302
|
Math.hypot(vector[0], vector[1]);
|
|
284
303
|
|
|
285
304
|
/**
|
|
@@ -288,7 +307,7 @@ export const getMagnitude = (vector: Vector2Like): number =>
|
|
|
288
307
|
* @returns The squared magnitude.
|
|
289
308
|
* @public
|
|
290
309
|
*/
|
|
291
|
-
export const getSquaredMagnitude = (vector: Vector2Like): number => {
|
|
310
|
+
export const getSquaredMagnitude = (vector: Readonly<Vector2Like>): number => {
|
|
292
311
|
const x = vector[0];
|
|
293
312
|
const y = vector[1];
|
|
294
313
|
return x * x + y * y;
|
|
@@ -301,8 +320,10 @@ export const getSquaredMagnitude = (vector: Vector2Like): number => {
|
|
|
301
320
|
* @returns The negated vector.
|
|
302
321
|
* @public
|
|
303
322
|
*/
|
|
304
|
-
export const negate = <T extends Vector2Like>(
|
|
305
|
-
|
|
323
|
+
export const negate = <T extends Vector2Like>(
|
|
324
|
+
vector: Readonly<Vector2Like>,
|
|
325
|
+
out: T
|
|
326
|
+
): T => fromValues(-vector[0], -vector[1], out);
|
|
306
327
|
|
|
307
328
|
/**
|
|
308
329
|
* Calculate the multiplicative inverse of the components of a vector.
|
|
@@ -311,8 +332,10 @@ export const negate = <T extends Vector2Like>(vector: Vector2Like, out: T): T =>
|
|
|
311
332
|
* @returns The inverted vector.
|
|
312
333
|
* @public
|
|
313
334
|
*/
|
|
314
|
-
export const invert = <T extends Vector2Like>(
|
|
315
|
-
|
|
335
|
+
export const invert = <T extends Vector2Like>(
|
|
336
|
+
vector: Readonly<Vector2Like>,
|
|
337
|
+
out: T
|
|
338
|
+
): T => fromValues(1 / vector[0], 1 / vector[1], out);
|
|
316
339
|
|
|
317
340
|
/**
|
|
318
341
|
* Normalize a vector.
|
|
@@ -323,7 +346,7 @@ export const invert = <T extends Vector2Like>(vector: Vector2Like, out: T): T =>
|
|
|
323
346
|
* @public
|
|
324
347
|
*/
|
|
325
348
|
export const normalize = <T extends Vector2Like>(
|
|
326
|
-
vector: Vector2Like
|
|
349
|
+
vector: Readonly<Vector2Like>,
|
|
327
350
|
out: T
|
|
328
351
|
): T => {
|
|
329
352
|
const x = vector[0];
|
|
@@ -345,8 +368,10 @@ export const normalize = <T extends Vector2Like>(
|
|
|
345
368
|
* @see {@link https://en.wikipedia.org/wiki/Dot_product | Dot product}
|
|
346
369
|
* @public
|
|
347
370
|
*/
|
|
348
|
-
export const dot = (
|
|
349
|
-
a
|
|
371
|
+
export const dot = (
|
|
372
|
+
a: Readonly<Vector2Like>,
|
|
373
|
+
b: Readonly<Vector2Like>
|
|
374
|
+
): number => a[0] * b[0] + a[1] * b[1];
|
|
350
375
|
|
|
351
376
|
/**
|
|
352
377
|
* Calculate the cross product of two vectors.
|
|
@@ -358,8 +383,8 @@ export const dot = (a: Vector2Like, b: Vector2Like): number =>
|
|
|
358
383
|
* @public
|
|
359
384
|
*/
|
|
360
385
|
export const cross = <T extends Vector3Like>(
|
|
361
|
-
a: Vector2Like
|
|
362
|
-
b: Vector2Like
|
|
386
|
+
a: Readonly<Vector2Like>,
|
|
387
|
+
b: Readonly<Vector2Like>,
|
|
363
388
|
out: T
|
|
364
389
|
): T => vector3FromValues(0, 0, a[0] * b[1] - a[1] * b[0], out);
|
|
365
390
|
|
|
@@ -374,8 +399,8 @@ export const cross = <T extends Vector3Like>(
|
|
|
374
399
|
* @public
|
|
375
400
|
*/
|
|
376
401
|
export const lerp = <T extends Vector2Like>(
|
|
377
|
-
a: Vector2Like
|
|
378
|
-
b: Vector2Like
|
|
402
|
+
a: Readonly<Vector2Like>,
|
|
403
|
+
b: Readonly<Vector2Like>,
|
|
379
404
|
t: number,
|
|
380
405
|
out: T
|
|
381
406
|
): T => {
|
|
@@ -408,8 +433,8 @@ export const random = <T extends Vector2Like>(magnitude: number, out: T): T => {
|
|
|
408
433
|
* @public
|
|
409
434
|
*/
|
|
410
435
|
export const transformMatrix2 = <T extends Vector2Like>(
|
|
411
|
-
vector: Vector2Like
|
|
412
|
-
matrix: Matrix2Like
|
|
436
|
+
vector: Readonly<Vector2Like>,
|
|
437
|
+
matrix: Readonly<Matrix2Like>,
|
|
413
438
|
out: T
|
|
414
439
|
): T => {
|
|
415
440
|
const x = vector[0];
|
|
@@ -432,8 +457,8 @@ export const transformMatrix2 = <T extends Vector2Like>(
|
|
|
432
457
|
* @public
|
|
433
458
|
*/
|
|
434
459
|
export const transformMatrix3 = <T extends Vector2Like>(
|
|
435
|
-
vector: Vector2Like
|
|
436
|
-
matrix: Matrix3Like
|
|
460
|
+
vector: Readonly<Vector2Like>,
|
|
461
|
+
matrix: Readonly<Matrix3Like>,
|
|
437
462
|
out: T
|
|
438
463
|
): T => {
|
|
439
464
|
const x = vector[0];
|
|
@@ -456,8 +481,8 @@ export const transformMatrix3 = <T extends Vector2Like>(
|
|
|
456
481
|
* @public
|
|
457
482
|
*/
|
|
458
483
|
export const transformMatrix4 = <T extends Vector2Like>(
|
|
459
|
-
vector: Vector2Like
|
|
460
|
-
matrix: Matrix4Like
|
|
484
|
+
vector: Readonly<Vector2Like>,
|
|
485
|
+
matrix: Readonly<Matrix4Like>,
|
|
461
486
|
out: T
|
|
462
487
|
): T => {
|
|
463
488
|
const x = vector[0];
|
|
@@ -480,8 +505,8 @@ export const transformMatrix4 = <T extends Vector2Like>(
|
|
|
480
505
|
* @public
|
|
481
506
|
*/
|
|
482
507
|
export const rotate = <T extends Vector2Like>(
|
|
483
|
-
vector: Vector2Like
|
|
484
|
-
origin: Vector2Like
|
|
508
|
+
vector: Readonly<Vector2Like>,
|
|
509
|
+
origin: Readonly<Vector2Like>,
|
|
485
510
|
r: number,
|
|
486
511
|
out: T
|
|
487
512
|
): T => {
|
|
@@ -504,7 +529,10 @@ export const rotate = <T extends Vector2Like>(
|
|
|
504
529
|
* @returns The angular distance.
|
|
505
530
|
* @public
|
|
506
531
|
*/
|
|
507
|
-
export const angle = (
|
|
532
|
+
export const angle = (
|
|
533
|
+
a: Readonly<Vector2Like>,
|
|
534
|
+
b: Readonly<Vector2Like>
|
|
535
|
+
): number => {
|
|
508
536
|
const x1 = a[0];
|
|
509
537
|
const y1 = a[1];
|
|
510
538
|
|
|
@@ -589,7 +617,7 @@ export default class Vector2
|
|
|
589
617
|
* @param vector - The other vector.
|
|
590
618
|
* @returns The sum of the vectors.
|
|
591
619
|
*/
|
|
592
|
-
public add(vector: Vector2Like): Vector2 {
|
|
620
|
+
public add(vector: Readonly<Vector2Like>): Vector2 {
|
|
593
621
|
return add(this, vector, new Vector2());
|
|
594
622
|
}
|
|
595
623
|
|
|
@@ -598,7 +626,7 @@ export default class Vector2
|
|
|
598
626
|
* @param vector - The other vector.
|
|
599
627
|
* @returns The angular distance.
|
|
600
628
|
*/
|
|
601
|
-
public angle(vector: Vector2Like): number {
|
|
629
|
+
public angle(vector: Readonly<Vector2Like>): number {
|
|
602
630
|
return angle(this, vector);
|
|
603
631
|
}
|
|
604
632
|
|
|
@@ -623,7 +651,7 @@ export default class Vector2
|
|
|
623
651
|
* @param vector - The vector to copy.
|
|
624
652
|
* @returns This vector.
|
|
625
653
|
*/
|
|
626
|
-
public copy(vector: Vector2Like): this {
|
|
654
|
+
public copy(vector: Readonly<Vector2Like>): this {
|
|
627
655
|
return copy(vector, this);
|
|
628
656
|
}
|
|
629
657
|
|
|
@@ -633,7 +661,7 @@ export default class Vector2
|
|
|
633
661
|
* @returns The cross product.
|
|
634
662
|
* @see {@link https://en.wikipedia.org/wiki/Cross_product | Cross product}
|
|
635
663
|
*/
|
|
636
|
-
public cross(vector: Vector2Like): Vector3 {
|
|
664
|
+
public cross(vector: Readonly<Vector2Like>): Vector3 {
|
|
637
665
|
return cross(this, vector, new Vector3());
|
|
638
666
|
}
|
|
639
667
|
|
|
@@ -643,7 +671,7 @@ export default class Vector2
|
|
|
643
671
|
* @returns The distance.
|
|
644
672
|
* @see {@link https://en.wikipedia.org/wiki/Euclidean_distance | Euclidean distance}
|
|
645
673
|
*/
|
|
646
|
-
public distance(vector: Vector2Like): number {
|
|
674
|
+
public distance(vector: Readonly<Vector2Like>): number {
|
|
647
675
|
return distance(this, vector);
|
|
648
676
|
}
|
|
649
677
|
|
|
@@ -652,7 +680,7 @@ export default class Vector2
|
|
|
652
680
|
* @param vector - The other vector.
|
|
653
681
|
* @returns The quotient of the vectors.
|
|
654
682
|
*/
|
|
655
|
-
public divide(vector: Vector2Like): Vector2 {
|
|
683
|
+
public divide(vector: Readonly<Vector2Like>): Vector2 {
|
|
656
684
|
return divide(this, vector, new Vector2());
|
|
657
685
|
}
|
|
658
686
|
|
|
@@ -662,7 +690,7 @@ export default class Vector2
|
|
|
662
690
|
* @returns The dot product.
|
|
663
691
|
* @see {@link https://en.wikipedia.org/wiki/Dot_product | Dot product}
|
|
664
692
|
*/
|
|
665
|
-
public dot(vector: Vector2Like): number {
|
|
693
|
+
public dot(vector: Readonly<Vector2Like>): number {
|
|
666
694
|
return dot(this, vector);
|
|
667
695
|
}
|
|
668
696
|
|
|
@@ -671,7 +699,7 @@ export default class Vector2
|
|
|
671
699
|
* @param vector - The other vector.
|
|
672
700
|
* @returns Whether the vectors are equivalent.
|
|
673
701
|
*/
|
|
674
|
-
public equals(vector: Vector2Like): boolean {
|
|
702
|
+
public equals(vector: Readonly<Vector2Like>): boolean {
|
|
675
703
|
return equals(this, vector);
|
|
676
704
|
}
|
|
677
705
|
|
|
@@ -680,7 +708,7 @@ export default class Vector2
|
|
|
680
708
|
* @param vector - The other vector.
|
|
681
709
|
* @returns Whether or not the vectors are equivalent.
|
|
682
710
|
*/
|
|
683
|
-
public exactEquals(vector: Vector2Like): boolean {
|
|
711
|
+
public exactEquals(vector: Readonly<Vector2Like>): boolean {
|
|
684
712
|
return exactEquals(this, vector);
|
|
685
713
|
}
|
|
686
714
|
|
|
@@ -707,7 +735,7 @@ export default class Vector2
|
|
|
707
735
|
* @returns The interpolated vector.
|
|
708
736
|
* @see {@link https://en.wikipedia.org/wiki/Linear_interpolation | Linear interpolation}
|
|
709
737
|
*/
|
|
710
|
-
public lerp(vector: Vector2Like
|
|
738
|
+
public lerp(vector: Readonly<Vector2Like>, t: number): Vector2 {
|
|
711
739
|
return lerp(this, vector, t, new Vector2());
|
|
712
740
|
}
|
|
713
741
|
|
|
@@ -716,7 +744,7 @@ export default class Vector2
|
|
|
716
744
|
* @param vector - The other vector.
|
|
717
745
|
* @returns The maximum.
|
|
718
746
|
*/
|
|
719
|
-
public max(vector: Vector2Like): Vector2 {
|
|
747
|
+
public max(vector: Readonly<Vector2Like>): Vector2 {
|
|
720
748
|
return max(this, vector, new Vector2());
|
|
721
749
|
}
|
|
722
750
|
|
|
@@ -725,7 +753,7 @@ export default class Vector2
|
|
|
725
753
|
* @param vector - The other vector.
|
|
726
754
|
* @returns The minimum.
|
|
727
755
|
*/
|
|
728
|
-
public min(vector: Vector2Like): Vector2 {
|
|
756
|
+
public min(vector: Readonly<Vector2Like>): Vector2 {
|
|
729
757
|
return min(this, vector, new Vector2());
|
|
730
758
|
}
|
|
731
759
|
|
|
@@ -734,7 +762,7 @@ export default class Vector2
|
|
|
734
762
|
* @param vector - The other vector.
|
|
735
763
|
* @returns The product of the vectors.
|
|
736
764
|
*/
|
|
737
|
-
public multiply(vector: Vector2Like): Vector2 {
|
|
765
|
+
public multiply(vector: Readonly<Vector2Like>): Vector2 {
|
|
738
766
|
return multiply(this, vector, new Vector2());
|
|
739
767
|
}
|
|
740
768
|
|
|
@@ -779,7 +807,7 @@ export default class Vector2
|
|
|
779
807
|
* @param radians - The angle of rotation in radians.
|
|
780
808
|
* @returns The rotated vector.
|
|
781
809
|
*/
|
|
782
|
-
public rotate(origin: Vector2Like
|
|
810
|
+
public rotate(origin: Readonly<Vector2Like>, radians: number): Vector2 {
|
|
783
811
|
return rotate(this, origin, radians, new Vector2());
|
|
784
812
|
}
|
|
785
813
|
|
|
@@ -806,7 +834,7 @@ export default class Vector2
|
|
|
806
834
|
* @param scalar - The scalar.
|
|
807
835
|
* @returns The sum.
|
|
808
836
|
*/
|
|
809
|
-
public scaleAndAdd(vector: Vector2Like
|
|
837
|
+
public scaleAndAdd(vector: Readonly<Vector2Like>, scalar: number): Vector2 {
|
|
810
838
|
return scaleAndAdd(this, vector, scalar, new Vector2());
|
|
811
839
|
}
|
|
812
840
|
|
|
@@ -816,7 +844,7 @@ export default class Vector2
|
|
|
816
844
|
* @returns The squared distance.
|
|
817
845
|
* @see {@link https://en.wikipedia.org/wiki/Euclidean_distance | Euclidean distance}
|
|
818
846
|
*/
|
|
819
|
-
public squaredDistance(vector: Vector2Like): number {
|
|
847
|
+
public squaredDistance(vector: Readonly<Vector2Like>): number {
|
|
820
848
|
return squaredDistance(this, vector);
|
|
821
849
|
}
|
|
822
850
|
|
|
@@ -825,7 +853,7 @@ export default class Vector2
|
|
|
825
853
|
* @param vector - The other vector.
|
|
826
854
|
* @returns The difference between the vectors.
|
|
827
855
|
*/
|
|
828
|
-
public subtract(vector: Vector2Like): Vector2 {
|
|
856
|
+
public subtract(vector: Readonly<Vector2Like>): Vector2 {
|
|
829
857
|
return subtract(this, vector, new Vector2());
|
|
830
858
|
}
|
|
831
859
|
|
|
@@ -835,7 +863,7 @@ export default class Vector2
|
|
|
835
863
|
* @returns The transformed vector.
|
|
836
864
|
* @see {@link https://en.wikipedia.org/wiki/Transformation_matrix | Transformation matrix}
|
|
837
865
|
*/
|
|
838
|
-
public transformMatrix2(matrix: Matrix2Like): Vector2 {
|
|
866
|
+
public transformMatrix2(matrix: Readonly<Matrix2Like>): Vector2 {
|
|
839
867
|
return transformMatrix2(this, matrix, new Vector2());
|
|
840
868
|
}
|
|
841
869
|
|
|
@@ -845,7 +873,7 @@ export default class Vector2
|
|
|
845
873
|
* @returns The transformed vector.
|
|
846
874
|
* @see {@link https://en.wikipedia.org/wiki/Transformation_matrix | Transformation matrix}
|
|
847
875
|
*/
|
|
848
|
-
public transformMatrix3(matrix: Matrix3Like): Vector2 {
|
|
876
|
+
public transformMatrix3(matrix: Readonly<Matrix3Like>): Vector2 {
|
|
849
877
|
return transformMatrix3(this, matrix, new Vector2());
|
|
850
878
|
}
|
|
851
879
|
|
|
@@ -855,7 +883,7 @@ export default class Vector2
|
|
|
855
883
|
* @returns The transformed vector.
|
|
856
884
|
* @see {@link https://en.wikipedia.org/wiki/Transformation_matrix | Transformation matrix}
|
|
857
885
|
*/
|
|
858
|
-
public transformMatrix4(matrix: Matrix4Like): Vector2 {
|
|
886
|
+
public transformMatrix4(matrix: Readonly<Matrix4Like>): Vector2 {
|
|
859
887
|
return transformMatrix4(this, matrix, new Vector2());
|
|
860
888
|
}
|
|
861
889
|
|