@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.
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -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 +56 -56
- package/dist/linalg/Matrix4.d.ts.map +1 -1
- package/dist/linalg/Matrix4.js.map +1 -1
- package/dist/linalg/Quaternion.d.ts +44 -43
- package/dist/linalg/Quaternion.d.ts.map +1 -1
- 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/types/AxisAngle.d.ts +10 -0
- package/dist/types/AxisAngle.d.ts.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 +4 -5
- package/src/index.ts +4 -1
- 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 +98 -84
- package/src/linalg/Quaternion.ts +75 -60
- 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/types/AxisAngle.ts +12 -0
- package/src/utility/BigNumber.ts +22 -11
package/src/linalg/Vector3.ts
CHANGED
|
@@ -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 = (
|
|
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 = (
|
|
76
|
-
a
|
|
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>(
|
|
100
|
-
|
|
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>(
|
|
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>(
|
|
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>(
|
|
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>(
|
|
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 = (
|
|
310
|
-
|
|
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 = (
|
|
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>(
|
|
357
|
-
|
|
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>(
|
|
367
|
-
|
|
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 = (
|
|
402
|
-
a
|
|
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 = (
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|