@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.
Files changed (85) hide show
  1. package/dist/algorithms/hypergeometricPmf.d.ts.map +1 -1
  2. package/dist/algorithms/hypergeometricPmf.js +5 -1
  3. package/dist/algorithms/hypergeometricPmf.js.map +1 -1
  4. package/dist/algorithms/primeFactorization.d.ts +1 -1
  5. package/dist/algorithms/primeFactorization.d.ts.map +1 -1
  6. package/dist/index.d.ts +0 -3
  7. package/dist/index.d.ts.map +1 -1
  8. package/dist/index.js +0 -1
  9. package/dist/index.js.map +1 -1
  10. package/dist/linalg/DualQuaternion.d.ts +46 -46
  11. package/dist/linalg/DualQuaternion.d.ts.map +1 -1
  12. package/dist/linalg/DualQuaternion.js.map +1 -1
  13. package/dist/linalg/Matrix.d.ts +7 -7
  14. package/dist/linalg/Matrix.d.ts.map +1 -1
  15. package/dist/linalg/Matrix2.d.ts +25 -25
  16. package/dist/linalg/Matrix2.d.ts.map +1 -1
  17. package/dist/linalg/Matrix2.js.map +1 -1
  18. package/dist/linalg/Matrix3.d.ts +35 -35
  19. package/dist/linalg/Matrix3.d.ts.map +1 -1
  20. package/dist/linalg/Matrix3.js.map +1 -1
  21. package/dist/linalg/Matrix4.d.ts +64 -59
  22. package/dist/linalg/Matrix4.d.ts.map +1 -1
  23. package/dist/linalg/Matrix4.js +17 -11
  24. package/dist/linalg/Matrix4.js.map +1 -1
  25. package/dist/linalg/Quaternion.d.ts +50 -48
  26. package/dist/linalg/Quaternion.d.ts.map +1 -1
  27. package/dist/linalg/Quaternion.js +11 -12
  28. package/dist/linalg/Quaternion.js.map +1 -1
  29. package/dist/linalg/SlowMatrix.d.ts +8 -8
  30. package/dist/linalg/SlowMatrix.d.ts.map +1 -1
  31. package/dist/linalg/SlowMatrix.js.map +1 -1
  32. package/dist/linalg/SlowSquareMatrix.d.ts +1 -1
  33. package/dist/linalg/SlowSquareMatrix.d.ts.map +1 -1
  34. package/dist/linalg/SlowSquareMatrix.js.map +1 -1
  35. package/dist/linalg/SlowVector.d.ts +15 -15
  36. package/dist/linalg/SlowVector.d.ts.map +1 -1
  37. package/dist/linalg/SlowVector.js.map +1 -1
  38. package/dist/linalg/Vector.d.ts +14 -14
  39. package/dist/linalg/Vector.d.ts.map +1 -1
  40. package/dist/linalg/Vector2.d.ts +51 -51
  41. package/dist/linalg/Vector2.d.ts.map +1 -1
  42. package/dist/linalg/Vector2.js.map +1 -1
  43. package/dist/linalg/Vector3.d.ts +60 -60
  44. package/dist/linalg/Vector3.d.ts.map +1 -1
  45. package/dist/linalg/Vector3.js.map +1 -1
  46. package/dist/linalg/Vector4.d.ts +45 -45
  47. package/dist/linalg/Vector4.d.ts.map +1 -1
  48. package/dist/linalg/Vector4.js.map +1 -1
  49. package/dist/utility/BigNumber.d.ts +5 -5
  50. package/dist/utility/BigNumber.d.ts.map +1 -1
  51. package/dist/utility/BigNumber.js +13 -6
  52. package/dist/utility/BigNumber.js.map +1 -1
  53. package/package.json +36 -36
  54. package/src/algorithms/hypergeometricPmf.ts +2 -0
  55. package/src/algorithms/primeFactorization.ts +1 -1
  56. package/src/index.ts +0 -5
  57. package/src/linalg/DualQuaternion.ts +69 -58
  58. package/src/linalg/Matrix.ts +10 -7
  59. package/src/linalg/Matrix2.ts +43 -32
  60. package/src/linalg/Matrix3.ts +53 -41
  61. package/src/linalg/Matrix4.ts +127 -94
  62. package/src/linalg/Quaternion.ts +90 -75
  63. package/src/linalg/SlowMatrix.ts +12 -9
  64. package/src/linalg/SlowSquareMatrix.ts +1 -1
  65. package/src/linalg/SlowVector.ts +16 -16
  66. package/src/linalg/Vector.ts +14 -14
  67. package/src/linalg/Vector2.ts +104 -76
  68. package/src/linalg/Vector3.ts +125 -92
  69. package/src/linalg/Vector4.ts +93 -62
  70. package/src/utility/BigNumber.ts +22 -11
  71. package/dist/types/AxisAngle.d.ts +0 -12
  72. package/dist/types/AxisAngle.d.ts.map +0 -1
  73. package/dist/types/AxisAngle.js +0 -2
  74. package/dist/types/AxisAngle.js.map +0 -1
  75. package/dist/types/FieldOfView.d.ts +0 -15
  76. package/dist/types/FieldOfView.d.ts.map +0 -1
  77. package/dist/types/FieldOfView.js +0 -2
  78. package/dist/types/FieldOfView.js.map +0 -1
  79. package/dist/utility/createAxisAngleLike.d.ts +0 -10
  80. package/dist/utility/createAxisAngleLike.d.ts.map +0 -1
  81. package/dist/utility/createAxisAngleLike.js +0 -10
  82. package/dist/utility/createAxisAngleLike.js.map +0 -1
  83. package/src/types/AxisAngle.ts +0 -13
  84. package/src/types/FieldOfView.ts +0 -17
  85. package/src/utility/createAxisAngleLike.ts +0 -14
@@ -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 = (a: Vector2Like, b: Vector2Like): boolean =>
61
- approxRelative(a[0], b[0]) && approxRelative(a[1], b[1]);
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 = (a: Vector2Like, b: Vector2Like): boolean =>
71
- a[0] === b[0] && a[1] === b[1];
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>(vector: Vector2Like, out: T): T =>
95
- fromValues(vector[0], vector[1], out);
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>(vector: Vector2Like, out: T): T =>
147
- fromValues(Math.abs(vector[0]), Math.abs(vector[1]), out);
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>(vector: Vector2Like, out: T): T =>
157
- fromValues(Math.ceil(vector[0]), Math.ceil(vector[1]), out);
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>(vector: Vector2Like, out: T): T =>
167
- fromValues(Math.floor(vector[0]), Math.floor(vector[1]), out);
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>(vector: Vector2Like, out: T): T =>
177
- fromValues(Math.round(vector[0]), Math.round(vector[1]), out);
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 = (a: Vector2Like, b: Vector2Like): number =>
260
- Math.hypot(b[0] - a[0], b[1] - a[1]);
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 = (a: Vector2Like, b: Vector2Like): number => {
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>(vector: Vector2Like, out: T): T =>
305
- fromValues(-vector[0], -vector[1], out);
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>(vector: Vector2Like, out: T): T =>
315
- fromValues(1 / vector[0], 1 / vector[1], out);
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 = (a: Vector2Like, b: Vector2Like): number =>
349
- a[0] * b[0] + a[1] * b[1];
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 = (a: Vector2Like, b: Vector2Like): number => {
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, t: number): Vector2 {
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, radians: number): Vector2 {
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, scalar: number): Vector2 {
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