@lakuna/umath 3.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 (63) hide show
  1. package/dist/index.d.ts +1 -1
  2. package/dist/index.d.ts.map +1 -1
  3. package/dist/index.js.map +1 -1
  4. package/dist/linalg/DualQuaternion.d.ts +46 -46
  5. package/dist/linalg/DualQuaternion.d.ts.map +1 -1
  6. package/dist/linalg/DualQuaternion.js.map +1 -1
  7. package/dist/linalg/Matrix.d.ts +7 -7
  8. package/dist/linalg/Matrix.d.ts.map +1 -1
  9. package/dist/linalg/Matrix2.d.ts +25 -25
  10. package/dist/linalg/Matrix2.d.ts.map +1 -1
  11. package/dist/linalg/Matrix2.js.map +1 -1
  12. package/dist/linalg/Matrix3.d.ts +35 -35
  13. package/dist/linalg/Matrix3.d.ts.map +1 -1
  14. package/dist/linalg/Matrix3.js.map +1 -1
  15. package/dist/linalg/Matrix4.d.ts +56 -56
  16. package/dist/linalg/Matrix4.d.ts.map +1 -1
  17. package/dist/linalg/Matrix4.js.map +1 -1
  18. package/dist/linalg/Quaternion.d.ts +44 -43
  19. package/dist/linalg/Quaternion.d.ts.map +1 -1
  20. package/dist/linalg/Quaternion.js.map +1 -1
  21. package/dist/linalg/SlowMatrix.d.ts +8 -8
  22. package/dist/linalg/SlowMatrix.d.ts.map +1 -1
  23. package/dist/linalg/SlowMatrix.js.map +1 -1
  24. package/dist/linalg/SlowSquareMatrix.d.ts +1 -1
  25. package/dist/linalg/SlowSquareMatrix.d.ts.map +1 -1
  26. package/dist/linalg/SlowSquareMatrix.js.map +1 -1
  27. package/dist/linalg/SlowVector.d.ts +15 -15
  28. package/dist/linalg/SlowVector.d.ts.map +1 -1
  29. package/dist/linalg/SlowVector.js.map +1 -1
  30. package/dist/linalg/Vector.d.ts +14 -14
  31. package/dist/linalg/Vector.d.ts.map +1 -1
  32. package/dist/linalg/Vector2.d.ts +51 -51
  33. package/dist/linalg/Vector2.d.ts.map +1 -1
  34. package/dist/linalg/Vector2.js.map +1 -1
  35. package/dist/linalg/Vector3.d.ts +60 -60
  36. package/dist/linalg/Vector3.d.ts.map +1 -1
  37. package/dist/linalg/Vector3.js.map +1 -1
  38. package/dist/linalg/Vector4.d.ts +45 -45
  39. package/dist/linalg/Vector4.d.ts.map +1 -1
  40. package/dist/linalg/Vector4.js.map +1 -1
  41. package/dist/types/AxisAngle.d.ts +10 -0
  42. package/dist/types/AxisAngle.d.ts.map +1 -1
  43. package/dist/utility/BigNumber.d.ts +5 -5
  44. package/dist/utility/BigNumber.d.ts.map +1 -1
  45. package/dist/utility/BigNumber.js +13 -6
  46. package/dist/utility/BigNumber.js.map +1 -1
  47. package/package.json +4 -5
  48. package/src/index.ts +4 -1
  49. package/src/linalg/DualQuaternion.ts +69 -58
  50. package/src/linalg/Matrix.ts +10 -7
  51. package/src/linalg/Matrix2.ts +43 -32
  52. package/src/linalg/Matrix3.ts +53 -41
  53. package/src/linalg/Matrix4.ts +98 -84
  54. package/src/linalg/Quaternion.ts +75 -60
  55. package/src/linalg/SlowMatrix.ts +12 -9
  56. package/src/linalg/SlowSquareMatrix.ts +1 -1
  57. package/src/linalg/SlowVector.ts +16 -16
  58. package/src/linalg/Vector.ts +14 -14
  59. package/src/linalg/Vector2.ts +104 -76
  60. package/src/linalg/Vector3.ts +125 -92
  61. package/src/linalg/Vector4.ts +93 -62
  62. package/src/types/AxisAngle.ts +12 -0
  63. package/src/utility/BigNumber.ts +22 -11
@@ -60,7 +60,10 @@ export const fromValues = <T extends Vector3Like>(
60
60
  * @returns Whether or not the vectors are equivalent.
61
61
  * @public
62
62
  */
63
- export const equals = (a: Vector3Like, b: Vector3Like): boolean =>
63
+ export const equals = (
64
+ a: Readonly<Vector3Like>,
65
+ b: Readonly<Vector3Like>
66
+ ): boolean =>
64
67
  approxRelative(a[0], b[0]) &&
65
68
  approxRelative(a[1], b[1]) &&
66
69
  approxRelative(a[2], b[2]);
@@ -72,8 +75,10 @@ export const equals = (a: Vector3Like, b: Vector3Like): boolean =>
72
75
  * @returns Whether the vectors are equivalent.
73
76
  * @public
74
77
  */
75
- export const exactEquals = (a: Vector3Like, b: Vector3Like): boolean =>
76
- a[0] === b[0] && a[1] === b[1] && a[2] === b[2];
78
+ export const exactEquals = (
79
+ a: Readonly<Vector3Like>,
80
+ b: Readonly<Vector3Like>
81
+ ): boolean => a[0] === b[0] && a[1] === b[1] && a[2] === b[2];
77
82
 
78
83
  /**
79
84
  * Add two vectors.
@@ -84,8 +89,8 @@ export const exactEquals = (a: Vector3Like, b: Vector3Like): boolean =>
84
89
  * @public
85
90
  */
86
91
  export const add = <T extends Vector3Like>(
87
- a: Vector3Like,
88
- b: Vector3Like,
92
+ a: Readonly<Vector3Like>,
93
+ b: Readonly<Vector3Like>,
89
94
  out: T
90
95
  ): T => fromValues(a[0] + b[0], a[1] + b[1], a[2] + b[2], out);
91
96
 
@@ -96,8 +101,10 @@ export const add = <T extends Vector3Like>(
96
101
  * @returns The copy.
97
102
  * @public
98
103
  */
99
- export const copy = <T extends Vector3Like>(vector: Vector3Like, out: T): T =>
100
- fromValues(vector[0], vector[1], vector[2], out);
104
+ export const copy = <T extends Vector3Like>(
105
+ vector: Readonly<Vector3Like>,
106
+ out: T
107
+ ): T => fromValues(vector[0], vector[1], vector[2], out);
101
108
 
102
109
  /**
103
110
  * Multiply two vectors.
@@ -108,8 +115,8 @@ export const copy = <T extends Vector3Like>(vector: Vector3Like, out: T): T =>
108
115
  * @public
109
116
  */
110
117
  export const multiply = <T extends Vector3Like>(
111
- a: Vector3Like,
112
- b: Vector3Like,
118
+ a: Readonly<Vector3Like>,
119
+ b: Readonly<Vector3Like>,
113
120
  out: T
114
121
  ): T => fromValues(a[0] * b[0], a[1] * b[1], a[2] * b[2], out);
115
122
 
@@ -122,8 +129,8 @@ export const multiply = <T extends Vector3Like>(
122
129
  * @public
123
130
  */
124
131
  export const divide = <T extends Vector3Like>(
125
- a: Vector3Like,
126
- b: Vector3Like,
132
+ a: Readonly<Vector3Like>,
133
+ b: Readonly<Vector3Like>,
127
134
  out: T
128
135
  ): T => fromValues(a[0] / b[0], a[1] / b[1], a[2] / b[2], out);
129
136
 
@@ -136,8 +143,8 @@ export const divide = <T extends Vector3Like>(
136
143
  * @public
137
144
  */
138
145
  export const subtract = <T extends Vector3Like>(
139
- a: Vector3Like,
140
- b: Vector3Like,
146
+ a: Readonly<Vector3Like>,
147
+ b: Readonly<Vector3Like>,
141
148
  out: T
142
149
  ): T => fromValues(a[0] - b[0], a[1] - b[1], a[2] - b[2], out);
143
150
 
@@ -148,7 +155,10 @@ export const subtract = <T extends Vector3Like>(
148
155
  * @returns The absolutized vector.
149
156
  * @public
150
157
  */
151
- export const abs = <T extends Vector3Like>(vector: Vector3Like, out: T): T =>
158
+ export const abs = <T extends Vector3Like>(
159
+ vector: Readonly<Vector3Like>,
160
+ out: T
161
+ ): T =>
152
162
  fromValues(
153
163
  Math.abs(vector[0]),
154
164
  Math.abs(vector[1]),
@@ -163,7 +173,10 @@ export const abs = <T extends Vector3Like>(vector: Vector3Like, out: T): T =>
163
173
  * @returns The rounded vector.
164
174
  * @public
165
175
  */
166
- export const ceil = <T extends Vector3Like>(vector: Vector3Like, out: T): T =>
176
+ export const ceil = <T extends Vector3Like>(
177
+ vector: Readonly<Vector3Like>,
178
+ out: T
179
+ ): T =>
167
180
  fromValues(
168
181
  Math.ceil(vector[0]),
169
182
  Math.ceil(vector[1]),
@@ -178,7 +191,10 @@ export const ceil = <T extends Vector3Like>(vector: Vector3Like, out: T): T =>
178
191
  * @returns The rounded vector.
179
192
  * @public
180
193
  */
181
- export const floor = <T extends Vector3Like>(vector: Vector3Like, out: T): T =>
194
+ export const floor = <T extends Vector3Like>(
195
+ vector: Readonly<Vector3Like>,
196
+ out: T
197
+ ): T =>
182
198
  fromValues(
183
199
  Math.floor(vector[0]),
184
200
  Math.floor(vector[1]),
@@ -193,7 +209,10 @@ export const floor = <T extends Vector3Like>(vector: Vector3Like, out: T): T =>
193
209
  * @returns The rounded vector.
194
210
  * @public
195
211
  */
196
- export const round = <T extends Vector3Like>(vector: Vector3Like, out: T): T =>
212
+ export const round = <T extends Vector3Like>(
213
+ vector: Readonly<Vector3Like>,
214
+ out: T
215
+ ): T =>
197
216
  fromValues(
198
217
  Math.round(vector[0]),
199
218
  Math.round(vector[1]),
@@ -210,8 +229,8 @@ export const round = <T extends Vector3Like>(vector: Vector3Like, out: T): T =>
210
229
  * @public
211
230
  */
212
231
  export const min = <T extends Vector3Like>(
213
- a: Vector3Like,
214
- b: Vector3Like,
232
+ a: Readonly<Vector3Like>,
233
+ b: Readonly<Vector3Like>,
215
234
  out: T
216
235
  ): T =>
217
236
  fromValues(
@@ -230,8 +249,8 @@ export const min = <T extends Vector3Like>(
230
249
  * @public
231
250
  */
232
251
  export const max = <T extends Vector3Like>(
233
- a: Vector3Like,
234
- b: Vector3Like,
252
+ a: Readonly<Vector3Like>,
253
+ b: Readonly<Vector3Like>,
235
254
  out: T
236
255
  ): T =>
237
256
  fromValues(
@@ -250,7 +269,7 @@ export const max = <T extends Vector3Like>(
250
269
  * @public
251
270
  */
252
271
  export const pow = <T extends Vector3Like>(
253
- vector: Vector3Like,
272
+ vector: Readonly<Vector3Like>,
254
273
  scalar: number,
255
274
  out: T
256
275
  ): T =>
@@ -270,7 +289,7 @@ export const pow = <T extends Vector3Like>(
270
289
  * @public
271
290
  */
272
291
  export const scale = <T extends Vector3Like>(
273
- vector: Vector3Like,
292
+ vector: Readonly<Vector3Like>,
274
293
  scalar: number,
275
294
  out: T
276
295
  ): T =>
@@ -286,8 +305,8 @@ export const scale = <T extends Vector3Like>(
286
305
  * @public
287
306
  */
288
307
  export const scaleAndAdd = <T extends Vector3Like>(
289
- a: Vector3Like,
290
- b: Vector3Like,
308
+ a: Readonly<Vector3Like>,
309
+ b: Readonly<Vector3Like>,
291
310
  scalar: number,
292
311
  out: T
293
312
  ): T =>
@@ -306,8 +325,10 @@ export const scaleAndAdd = <T extends Vector3Like>(
306
325
  * @see {@link https://en.wikipedia.org/wiki/Euclidean_distance | Euclidean distance}
307
326
  * @public
308
327
  */
309
- export const distance = (a: Vector3Like, b: Vector3Like): number =>
310
- Math.hypot(b[0] - a[0], b[1] - a[1], b[2] - a[2]);
328
+ export const distance = (
329
+ a: Readonly<Vector3Like>,
330
+ b: Readonly<Vector3Like>
331
+ ): number => Math.hypot(b[0] - a[0], b[1] - a[1], b[2] - a[2]);
311
332
 
312
333
  /**
313
334
  * Calculate the squared Euclidean distance between this vector and another.
@@ -317,7 +338,10 @@ export const distance = (a: Vector3Like, b: Vector3Like): number =>
317
338
  * @see {@link https://en.wikipedia.org/wiki/Euclidean_distance | Euclidean distance}
318
339
  * @public
319
340
  */
320
- export const squaredDistance = (a: Vector3Like, b: Vector3Like): number => {
341
+ export const squaredDistance = (
342
+ a: Readonly<Vector3Like>,
343
+ b: Readonly<Vector3Like>
344
+ ): number => {
321
345
  const x = b[0] - a[0];
322
346
  const y = b[1] - a[1];
323
347
  const z = b[2] - a[2];
@@ -330,7 +354,7 @@ export const squaredDistance = (a: Vector3Like, b: Vector3Like): number => {
330
354
  * @returns The magnitude.
331
355
  * @public
332
356
  */
333
- export const getMagnitude = (vector: Vector3Like): number =>
357
+ export const getMagnitude = (vector: Readonly<Vector3Like>): number =>
334
358
  Math.hypot(vector[0], vector[1], vector[2]);
335
359
 
336
360
  /**
@@ -339,7 +363,7 @@ export const getMagnitude = (vector: Vector3Like): number =>
339
363
  * @returns The squared magnitude.
340
364
  * @public
341
365
  */
342
- export const getSquaredMagnitude = (vector: Vector3Like): number => {
366
+ export const getSquaredMagnitude = (vector: Readonly<Vector3Like>): number => {
343
367
  const x = vector[0];
344
368
  const y = vector[1];
345
369
  const z = vector[2];
@@ -353,8 +377,10 @@ export const getSquaredMagnitude = (vector: Vector3Like): number => {
353
377
  * @returns The negated vector.
354
378
  * @public
355
379
  */
356
- export const negate = <T extends Vector3Like>(vector: Vector3Like, out: T): T =>
357
- fromValues(-vector[0], -vector[1], -vector[2], out);
380
+ export const negate = <T extends Vector3Like>(
381
+ vector: Readonly<Vector3Like>,
382
+ out: T
383
+ ): T => fromValues(-vector[0], -vector[1], -vector[2], out);
358
384
 
359
385
  /**
360
386
  * Calculate the multiplicative inverse of the components of a vector.
@@ -363,8 +389,10 @@ export const negate = <T extends Vector3Like>(vector: Vector3Like, out: T): T =>
363
389
  * @returns The inverted vector.
364
390
  * @public
365
391
  */
366
- export const invert = <T extends Vector3Like>(vector: Vector3Like, out: T): T =>
367
- fromValues(1 / vector[0], 1 / vector[1], 1 / vector[2], out);
392
+ export const invert = <T extends Vector3Like>(
393
+ vector: Readonly<Vector3Like>,
394
+ out: T
395
+ ): T => fromValues(1 / vector[0], 1 / vector[1], 1 / vector[2], out);
368
396
 
369
397
  /**
370
398
  * Normalize a vector.
@@ -375,7 +403,7 @@ export const invert = <T extends Vector3Like>(vector: Vector3Like, out: T): T =>
375
403
  * @public
376
404
  */
377
405
  export const normalize = <T extends Vector3Like>(
378
- vector: Vector3Like,
406
+ vector: Readonly<Vector3Like>,
379
407
  out: T
380
408
  ): T => {
381
409
  const x = vector[0];
@@ -398,8 +426,10 @@ export const normalize = <T extends Vector3Like>(
398
426
  * @see {@link https://en.wikipedia.org/wiki/Dot_product | Dot product}
399
427
  * @public
400
428
  */
401
- export const dot = (a: Vector3Like, b: Vector3Like): number =>
402
- a[0] * b[0] + a[1] * b[1] + a[2] * b[2];
429
+ export const dot = (
430
+ a: Readonly<Vector3Like>,
431
+ b: Readonly<Vector3Like>
432
+ ): number => a[0] * b[0] + a[1] * b[1] + a[2] * b[2];
403
433
 
404
434
  /**
405
435
  * Calculate the cross product of two vectors.
@@ -411,8 +441,8 @@ export const dot = (a: Vector3Like, b: Vector3Like): number =>
411
441
  * @public
412
442
  */
413
443
  export const cross = <T extends Vector3Like>(
414
- a: Vector3Like,
415
- b: Vector3Like,
444
+ a: Readonly<Vector3Like>,
445
+ b: Readonly<Vector3Like>,
416
446
  out: T
417
447
  ): T => {
418
448
  const ax = a[0];
@@ -442,8 +472,8 @@ export const cross = <T extends Vector3Like>(
442
472
  * @public
443
473
  */
444
474
  export const lerp = <T extends Vector3Like>(
445
- a: Vector3Like,
446
- b: Vector3Like,
475
+ a: Readonly<Vector3Like>,
476
+ b: Readonly<Vector3Like>,
447
477
  t: number,
448
478
  out: T
449
479
  ): T => {
@@ -470,8 +500,8 @@ export const lerp = <T extends Vector3Like>(
470
500
  * @public
471
501
  */
472
502
  export const slerp = <T extends Vector3Like>(
473
- a: Vector3Like,
474
- b: Vector3Like,
503
+ a: Readonly<Vector3Like>,
504
+ b: Readonly<Vector3Like>,
475
505
  t: number,
476
506
  out: T
477
507
  ): T => {
@@ -519,8 +549,8 @@ export const random = <T extends Vector3Like>(magnitude: number, out: T): T => {
519
549
  * @public
520
550
  */
521
551
  export const transformMatrix3 = <T extends Vector3Like>(
522
- vector: Vector3Like,
523
- matrix: Matrix3Like,
552
+ vector: Readonly<Vector3Like>,
553
+ matrix: Readonly<Matrix3Like>,
524
554
  out: T
525
555
  ): T => {
526
556
  const x = vector[0];
@@ -545,8 +575,8 @@ export const transformMatrix3 = <T extends Vector3Like>(
545
575
  * @public
546
576
  */
547
577
  export const transformMatrix4 = <T extends Vector3Like>(
548
- vector: Vector3Like,
549
- matrix: Matrix4Like,
578
+ vector: Readonly<Vector3Like>,
579
+ matrix: Readonly<Matrix4Like>,
550
580
  out: T
551
581
  ): T => {
552
582
  const x = vector[0];
@@ -572,8 +602,8 @@ export const transformMatrix4 = <T extends Vector3Like>(
572
602
  * @public
573
603
  */
574
604
  export const rotateX = <T extends Vector3Like>(
575
- vector: Vector3Like,
576
- origin: Vector3Like,
605
+ vector: Readonly<Vector3Like>,
606
+ origin: Readonly<Vector3Like>,
577
607
  r: number,
578
608
  out: T
579
609
  ): T => {
@@ -599,8 +629,8 @@ export const rotateX = <T extends Vector3Like>(
599
629
  * @public
600
630
  */
601
631
  export const rotateY = <T extends Vector3Like>(
602
- vector: Vector3Like,
603
- origin: Vector3Like,
632
+ vector: Readonly<Vector3Like>,
633
+ origin: Readonly<Vector3Like>,
604
634
  r: number,
605
635
  out: T
606
636
  ): T => {
@@ -626,8 +656,8 @@ export const rotateY = <T extends Vector3Like>(
626
656
  * @public
627
657
  */
628
658
  export const rotateZ = <T extends Vector3Like>(
629
- vector: Vector3Like,
630
- origin: Vector3Like,
659
+ vector: Readonly<Vector3Like>,
660
+ origin: Readonly<Vector3Like>,
631
661
  r: number,
632
662
  out: T
633
663
  ): T => {
@@ -650,7 +680,10 @@ export const rotateZ = <T extends Vector3Like>(
650
680
  * @returns The angular distance from the first vector to the second.
651
681
  * @public
652
682
  */
653
- export const angle = (a: Vector3Like, b: Vector3Like): number => {
683
+ export const angle = (
684
+ a: Readonly<Vector3Like>,
685
+ b: Readonly<Vector3Like>
686
+ ): number => {
654
687
  const mag = Math.hypot(a[0], a[1], a[2]) * Math.hypot(b[0], b[1], b[2]);
655
688
  return Math.acos(Math.min(Math.max(mag && dot(a, b) / mag, -1), 1));
656
689
  };
@@ -677,10 +710,10 @@ export const zero = <T extends Vector3Like>(out: T): T =>
677
710
  * @public
678
711
  */
679
712
  export const hermite = <T extends Vector3Like>(
680
- a: Vector3Like,
681
- b: Vector3Like,
682
- c: Vector3Like,
683
- d: Vector3Like,
713
+ a: Readonly<Vector3Like>,
714
+ b: Readonly<Vector3Like>,
715
+ c: Readonly<Vector3Like>,
716
+ d: Readonly<Vector3Like>,
684
717
  t: number,
685
718
  out: T
686
719
  ): T => {
@@ -712,10 +745,10 @@ export const hermite = <T extends Vector3Like>(
712
745
  * @public
713
746
  */
714
747
  export const bezier = <T extends Vector3Like>(
715
- a: Vector3Like,
716
- b: Vector3Like,
717
- c: Vector3Like,
718
- d: Vector3Like,
748
+ a: Readonly<Vector3Like>,
749
+ b: Readonly<Vector3Like>,
750
+ c: Readonly<Vector3Like>,
751
+ d: Readonly<Vector3Like>,
719
752
  t: number,
720
753
  out: T
721
754
  ): T => {
@@ -747,8 +780,8 @@ export const bezier = <T extends Vector3Like>(
747
780
  * @public
748
781
  */
749
782
  export const transformQuaternion = <T extends Vector3Like>(
750
- vector: Vector3Like,
751
- quaternion: QuaternionLike,
783
+ vector: Readonly<Vector3Like>,
784
+ quaternion: Readonly<QuaternionLike>,
752
785
  out: T
753
786
  ): T => {
754
787
  const x = vector[0];
@@ -843,7 +876,7 @@ export default class Vector3
843
876
  * @param vector - The other vector.
844
877
  * @returns The sum of the vectors.
845
878
  */
846
- public add(vector: Vector3Like): Vector3 {
879
+ public add(vector: Readonly<Vector3Like>): Vector3 {
847
880
  return add(this, vector, new Vector3());
848
881
  }
849
882
 
@@ -852,7 +885,7 @@ export default class Vector3
852
885
  * @param vector - The other vector.
853
886
  * @returns The angular distance from this vector to the other.
854
887
  */
855
- public angle(vector: Vector3Like): number {
888
+ public angle(vector: Readonly<Vector3Like>): number {
856
889
  return angle(this, vector);
857
890
  }
858
891
 
@@ -866,9 +899,9 @@ export default class Vector3
866
899
  * @see {@link https://en.wikipedia.org/wiki/B%C3%A9zier_curve | Bézier curve}
867
900
  */
868
901
  public bezier(
869
- a: Vector3Like,
870
- b: Vector3Like,
871
- end: Vector3Like,
902
+ a: Readonly<Vector3Like>,
903
+ b: Readonly<Vector3Like>,
904
+ end: Readonly<Vector3Like>,
872
905
  t: number
873
906
  ): Vector3 {
874
907
  return bezier(this, a, b, end, t, new Vector3());
@@ -895,7 +928,7 @@ export default class Vector3
895
928
  * @param vector - The vector to copy.
896
929
  * @returns This vector.
897
930
  */
898
- public copy(vector: Vector3Like): this {
931
+ public copy(vector: Readonly<Vector3Like>): this {
899
932
  return copy(vector, this);
900
933
  }
901
934
 
@@ -905,7 +938,7 @@ export default class Vector3
905
938
  * @returns The cross product.
906
939
  * @see {@link https://en.wikipedia.org/wiki/Cross_product | Cross product}
907
940
  */
908
- public cross(vector: Vector3Like): Vector3 {
941
+ public cross(vector: Readonly<Vector3Like>): Vector3 {
909
942
  return cross(this, vector, new Vector3());
910
943
  }
911
944
 
@@ -915,7 +948,7 @@ export default class Vector3
915
948
  * @returns The distance.
916
949
  * @see {@link https://en.wikipedia.org/wiki/Euclidean_distance | Euclidean distance}
917
950
  */
918
- public distance(vector: Vector3Like): number {
951
+ public distance(vector: Readonly<Vector3Like>): number {
919
952
  return distance(this, vector);
920
953
  }
921
954
 
@@ -924,7 +957,7 @@ export default class Vector3
924
957
  * @param vector - The other vector.
925
958
  * @returns The quotient of the vectors.
926
959
  */
927
- public divide(vector: Vector3Like): Vector3 {
960
+ public divide(vector: Readonly<Vector3Like>): Vector3 {
928
961
  return divide(this, vector, new Vector3());
929
962
  }
930
963
 
@@ -934,7 +967,7 @@ export default class Vector3
934
967
  * @returns The dot product.
935
968
  * @see {@link https://en.wikipedia.org/wiki/Dot_product | Dot product}
936
969
  */
937
- public dot(vector: Vector3Like): number {
970
+ public dot(vector: Readonly<Vector3Like>): number {
938
971
  return dot(this, vector);
939
972
  }
940
973
 
@@ -943,7 +976,7 @@ export default class Vector3
943
976
  * @param vector - The other vector.
944
977
  * @returns Whether or not the vectors are equivalent.
945
978
  */
946
- public equals(vector: Vector3Like): boolean {
979
+ public equals(vector: Readonly<Vector3Like>): boolean {
947
980
  return equals(this, vector);
948
981
  }
949
982
 
@@ -952,7 +985,7 @@ export default class Vector3
952
985
  * @param vector - The other vector.
953
986
  * @returns Whether or not the vectors are equivalent.
954
987
  */
955
- public exactEquals(vector: Vector3Like): boolean {
988
+ public exactEquals(vector: Readonly<Vector3Like>): boolean {
956
989
  return exactEquals(this, vector);
957
990
  }
958
991
 
@@ -974,9 +1007,9 @@ export default class Vector3
974
1007
  * @see {@link https://en.wikipedia.org/wiki/Hermite_interpolation | Hermite interpolation}
975
1008
  */
976
1009
  public hermite(
977
- a: Vector3Like,
978
- b: Vector3Like,
979
- end: Vector3Like,
1010
+ a: Readonly<Vector3Like>,
1011
+ b: Readonly<Vector3Like>,
1012
+ end: Readonly<Vector3Like>,
980
1013
  t: number
981
1014
  ): Vector3 {
982
1015
  return hermite(this, a, b, end, t, new Vector3());
@@ -997,7 +1030,7 @@ export default class Vector3
997
1030
  * @returns The interpolated vector.
998
1031
  * @see {@link https://en.wikipedia.org/wiki/Linear_interpolation | Linear interpolation}
999
1032
  */
1000
- public lerp(vector: Vector3Like, t: number): Vector3 {
1033
+ public lerp(vector: Readonly<Vector3Like>, t: number): Vector3 {
1001
1034
  return lerp(this, vector, t, new Vector3());
1002
1035
  }
1003
1036
 
@@ -1006,7 +1039,7 @@ export default class Vector3
1006
1039
  * @param vector - The other vector.
1007
1040
  * @returns The maximum.
1008
1041
  */
1009
- public max(vector: Vector3Like): Vector3 {
1042
+ public max(vector: Readonly<Vector3Like>): Vector3 {
1010
1043
  return max(this, vector, new Vector3());
1011
1044
  }
1012
1045
 
@@ -1015,7 +1048,7 @@ export default class Vector3
1015
1048
  * @param vector - The other vector.
1016
1049
  * @returns The minimum.
1017
1050
  */
1018
- public min(vector: Vector3Like): Vector3 {
1051
+ public min(vector: Readonly<Vector3Like>): Vector3 {
1019
1052
  return min(this, vector, new Vector3());
1020
1053
  }
1021
1054
 
@@ -1024,7 +1057,7 @@ export default class Vector3
1024
1057
  * @param vector - The other vector.
1025
1058
  * @returns The product of the vectors.
1026
1059
  */
1027
- public multiply(vector: Vector3Like): Vector3 {
1060
+ public multiply(vector: Readonly<Vector3Like>): Vector3 {
1028
1061
  return multiply(this, vector, new Vector3());
1029
1062
  }
1030
1063
 
@@ -1069,7 +1102,7 @@ export default class Vector3
1069
1102
  * @param r - The angle of rotation in radians.
1070
1103
  * @returns The rotated vector.
1071
1104
  */
1072
- public rotateX(origin: Vector3Like, r: number): Vector3 {
1105
+ public rotateX(origin: Readonly<Vector3Like>, r: number): Vector3 {
1073
1106
  return rotateX(this, origin, r, new Vector3());
1074
1107
  }
1075
1108
 
@@ -1079,7 +1112,7 @@ export default class Vector3
1079
1112
  * @param r - The angle of rotation in radians.
1080
1113
  * @returns The rotated vector.
1081
1114
  */
1082
- public rotateY(origin: Vector3Like, r: number): Vector3 {
1115
+ public rotateY(origin: Readonly<Vector3Like>, r: number): Vector3 {
1083
1116
  return rotateY(this, origin, r, new Vector3());
1084
1117
  }
1085
1118
 
@@ -1089,7 +1122,7 @@ export default class Vector3
1089
1122
  * @param r - The angle of rotation in radians.
1090
1123
  * @returns The rotated vector.
1091
1124
  */
1092
- public rotateZ(origin: Vector3Like, r: number): Vector3 {
1125
+ public rotateZ(origin: Readonly<Vector3Like>, r: number): Vector3 {
1093
1126
  return rotateZ(this, origin, r, new Vector3());
1094
1127
  }
1095
1128
 
@@ -1116,7 +1149,7 @@ export default class Vector3
1116
1149
  * @param scalar - The scalar.
1117
1150
  * @returns The sum.
1118
1151
  */
1119
- public scaleAndAdd(vector: Vector3Like, scalar: number): Vector3 {
1152
+ public scaleAndAdd(vector: Readonly<Vector3Like>, scalar: number): Vector3 {
1120
1153
  return scaleAndAdd(this, vector, scalar, new Vector3());
1121
1154
  }
1122
1155
 
@@ -1126,7 +1159,7 @@ export default class Vector3
1126
1159
  * @returns The squared distance.
1127
1160
  * @see {@link https://en.wikipedia.org/wiki/Euclidean_distance | Euclidean distance}
1128
1161
  */
1129
- public squaredDistance(vector: Vector3Like): number {
1162
+ public squaredDistance(vector: Readonly<Vector3Like>): number {
1130
1163
  return squaredDistance(this, vector);
1131
1164
  }
1132
1165
 
@@ -1135,7 +1168,7 @@ export default class Vector3
1135
1168
  * @param vector - The other vector.
1136
1169
  * @returns The difference between the vectors.
1137
1170
  */
1138
- public subtract(vector: Vector3Like): Vector3 {
1171
+ public subtract(vector: Readonly<Vector3Like>): Vector3 {
1139
1172
  return subtract(this, vector, new Vector3());
1140
1173
  }
1141
1174
 
@@ -1144,7 +1177,7 @@ export default class Vector3
1144
1177
  * @param matrix - The matrix.
1145
1178
  * @returns The transformed vector.
1146
1179
  */
1147
- public transformMatrix3(matrix: Matrix3Like): Vector3 {
1180
+ public transformMatrix3(matrix: Readonly<Matrix3Like>): Vector3 {
1148
1181
  return transformMatrix3(this, matrix, new Vector3());
1149
1182
  }
1150
1183
 
@@ -1153,7 +1186,7 @@ export default class Vector3
1153
1186
  * @param matrix - The matrix.
1154
1187
  * @returns The transformed vector.
1155
1188
  */
1156
- public transformMatrix4(matrix: Matrix4Like): Vector3 {
1189
+ public transformMatrix4(matrix: Readonly<Matrix4Like>): Vector3 {
1157
1190
  return transformMatrix4(this, matrix, new Vector3());
1158
1191
  }
1159
1192
 
@@ -1163,7 +1196,7 @@ export default class Vector3
1163
1196
  * @returns The transformed vector.
1164
1197
  * @see {@link https://en.wikipedia.org/wiki/Quaternion | Quaternion}
1165
1198
  */
1166
- public transformQuaternion(quaternion: QuaternionLike): Vector3 {
1199
+ public transformQuaternion(quaternion: Readonly<QuaternionLike>): Vector3 {
1167
1200
  return transformQuaternion(this, quaternion, new Vector3());
1168
1201
  }
1169
1202