@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
@@ -1,4 +1,3 @@
1
- import type FieldOfView from "../types/FieldOfView.js";
2
1
  import type { DualQuaternionLike } from "./DualQuaternion.js";
3
2
  import type { MatrixLike } from "./Matrix.js";
4
3
  import type SquareMatrix from "./SquareMatrix.js";
@@ -80,7 +79,7 @@ export declare const fromValues: <T extends Matrix4Like>(c0r0: number, c0r1: num
80
79
  * @see {@link https://en.wikipedia.org/wiki/Transformation_matrix | Transformation matrix}
81
80
  * @public
82
81
  */
83
- export declare const fromTranslation: <T extends Matrix4Like>(vector: Vector3Like, out: T) => T;
82
+ export declare const fromTranslation: <T extends Matrix4Like>(vector: Readonly<Vector3Like>, out: T) => T;
84
83
  /**
85
84
  * Create a transformation matrix that represents a scaling by the given vector. This is equivalent to (but faster than) `scale(identity(out), vector, out)`.
86
85
  * @param vector - The scaling vector.
@@ -89,7 +88,7 @@ export declare const fromTranslation: <T extends Matrix4Like>(vector: Vector3Lik
89
88
  * @see {@link https://en.wikipedia.org/wiki/Transformation_matrix | Transformation matrix}
90
89
  * @public
91
90
  */
92
- export declare const fromScaling: <T extends Matrix4Like>(vector: Vector3Like, out: T) => T;
91
+ export declare const fromScaling: <T extends Matrix4Like>(vector: Readonly<Vector3Like>, out: T) => T;
93
92
  /**
94
93
  * Reset a matrix to identity.
95
94
  * @param out - The matrix to store the result in.
@@ -107,7 +106,7 @@ export declare const identity: <T extends Matrix4Like>(out: T) => T;
107
106
  * @see {@link https://en.wikipedia.org/wiki/Rotation_matrix | Rotation matrix}
108
107
  * @public
109
108
  */
110
- export declare const fromRotation: <T extends Matrix4Like>(radians: number, axis: Vector3Like, out: T) => T;
109
+ export declare const fromRotation: <T extends Matrix4Like>(radians: number, axis: Readonly<Vector3Like>, out: T) => T;
111
110
  /**
112
111
  * Create a transformation matrix that represents a rotation by the given angle around the X-axis. This is equivalent to (but faster than) `rotateX(identity(out), radians, out)`.
113
112
  * @param radians - The angle in radians.
@@ -146,7 +145,7 @@ export declare const fromZRotation: <T extends Matrix4Like>(radians: number, out
146
145
  * @see {@link https://en.wikipedia.org/wiki/Transformation_matrix | Transformation matrix}
147
146
  * @public
148
147
  */
149
- export declare const fromRotationTranslation: <T extends Matrix4Like>(rotation: QuaternionLike, translation: Vector3Like, out: T) => T;
148
+ export declare const fromRotationTranslation: <T extends Matrix4Like>(rotation: Readonly<QuaternionLike>, translation: Readonly<Vector3Like>, out: T) => T;
150
149
  /**
151
150
  * Create a transformation matrix from the given rotation, translation, and scale. This is equivalent to (but faster than) `scale(multiply(translate(identity(out), translation, out), fromQuaternion(rotation, createMatrix4Like()), out), scaling, out)`.
152
151
  * @param rotation - The rotation quaternion.
@@ -159,7 +158,7 @@ export declare const fromRotationTranslation: <T extends Matrix4Like>(rotation:
159
158
  * @see {@link https://en.wikipedia.org/wiki/Transformation_matrix | Transformation matrix}
160
159
  * @public
161
160
  */
162
- export declare const fromRotationTranslationScale: <T extends Matrix4Like>(rotation: QuaternionLike, translation: Vector3Like, scaling: Vector3Like, out: T) => T;
161
+ export declare const fromRotationTranslationScale: <T extends Matrix4Like>(rotation: Readonly<QuaternionLike>, translation: Readonly<Vector3Like>, scaling: Readonly<Vector3Like>, out: T) => T;
163
162
  /**
164
163
  * Create a transformation matrix from the given rotation, translation, and scale around the given origin. This is equivalent to (but faster than) `translate(scale(multiply(translate(translate(identity(out), translation, out), origin, out), fromQuaternion(rotation, createMatrix4Like()), out), scaling, out), negate(origin), out)`.
165
164
  * @param rotation - The rotation quaternion.
@@ -173,7 +172,7 @@ export declare const fromRotationTranslationScale: <T extends Matrix4Like>(rotat
173
172
  * @see {@link https://en.wikipedia.org/wiki/Transformation_matrix | Transformation matrix}
174
173
  * @public
175
174
  */
176
- export declare const fromRotationTranslationScaleOrigin: <T extends Matrix4Like>(rotation: QuaternionLike, translation: Vector3Like, scaling: Vector3Like, origin: Vector3Like, out: T) => T;
175
+ export declare const fromRotationTranslationScaleOrigin: <T extends Matrix4Like>(rotation: Readonly<QuaternionLike>, translation: Readonly<Vector3Like>, scaling: Readonly<Vector3Like>, origin: Readonly<Vector3Like>, out: T) => T;
177
176
  /**
178
177
  * Create a transformation matrix from a quaternion.
179
178
  * @param quaternion - The quaternion.
@@ -183,7 +182,7 @@ export declare const fromRotationTranslationScaleOrigin: <T extends Matrix4Like>
183
182
  * @see {@link https://en.wikipedia.org/wiki/Transformation_matrix | Transformation matrix}
184
183
  * @public
185
184
  */
186
- export declare const fromQuaternion: <T extends Matrix4Like>(quaternion: QuaternionLike, out: T) => T;
185
+ export declare const fromQuaternion: <T extends Matrix4Like>(quaternion: Readonly<QuaternionLike>, out: T) => T;
187
186
  /**
188
187
  * Create a transformation matrix from a dual quaternion.
189
188
  * @param quaternion - The dual quaternion.
@@ -194,7 +193,7 @@ export declare const fromQuaternion: <T extends Matrix4Like>(quaternion: Quatern
194
193
  * @see {@link https://en.wikipedia.org/wiki/Transformation_matrix | Transformation matrix}
195
194
  * @public
196
195
  */
197
- export declare const fromDualQuaternion: <T extends Matrix4Like>(quaternion: DualQuaternionLike, out: T) => T;
196
+ export declare const fromDualQuaternion: <T extends Matrix4Like>(quaternion: Readonly<DualQuaternionLike>, out: T) => T;
198
197
  /**
199
198
  * Generate a frustum matrix with the given bounds.
200
199
  * @param left - The left bound of the frustum.
@@ -238,7 +237,10 @@ export declare const perspective: <T extends Matrix4Like>(fov: number, aspect: n
238
237
  export declare const perspectiveGpu: <T extends Matrix4Like>(fov: number, aspect: number, near: number, far: number, out: T) => T;
239
238
  /**
240
239
  * Create a perspective projection matrix from a field of view. Useful for generating projection matrices to be used with the WebXR API.
241
- * @param fov - The field of view.
240
+ * @param left - The angle to the left of the field of view in degrees.
241
+ * @param right - The angle to the right of the field of view in degrees.
242
+ * @param bottom - The angle to the bottom of the field of view in degrees.
243
+ * @param top - The angle to the top of the field of view in degrees.
242
244
  * @param near - The near bound of the frustum.
243
245
  * @param far - The far bound of the frustum.
244
246
  * @param out - The matrix to store the result in.
@@ -248,7 +250,7 @@ export declare const perspectiveGpu: <T extends Matrix4Like>(fov: number, aspect
248
250
  * @see {@link https://en.wikipedia.org/wiki/3D_projection | 3D projection}
249
251
  * @public
250
252
  */
251
- export declare const perspectiveFromFieldOfView: <T extends Matrix4Like>(fov: FieldOfView, near: number, far: number, out: T) => T;
253
+ export declare const perspectiveFromFieldOfView: <T extends Matrix4Like>(left: number, right: number, bottom: number, top: number, near: number, far: number, out: T) => T;
252
254
  /**
253
255
  * Generate an orthogonal projection matrix with the given bounds such that the near and far clip planes correspond to a normalized device coordinate Z range of `[-1, 1]` (OpenGL/WebGL).
254
256
  * @param left - The left bound of the frustum.
@@ -289,7 +291,7 @@ export declare const orthoGpu: <T extends Matrix4Like>(left: number, right: numb
289
291
  * @see {@link https://en.wikipedia.org/wiki/Transformation_matrix | Transformation matrix}
290
292
  * @public
291
293
  */
292
- export declare const lookAt: <T extends Matrix4Like>(eye: Vector3Like, center: Vector3Like, up: Vector3Like, out: T) => T;
294
+ export declare const lookAt: <T extends Matrix4Like>(eye: Readonly<Vector3Like>, center: Readonly<Vector3Like>, up: Readonly<Vector3Like>, out: T) => T;
293
295
  /**
294
296
  * Create a matrix that makes something look at something else.
295
297
  * @param eye - The position of the viewer.
@@ -300,7 +302,7 @@ export declare const lookAt: <T extends Matrix4Like>(eye: Vector3Like, center: V
300
302
  * @see {@link https://en.wikipedia.org/wiki/Transformation_matrix | Transformation matrix}
301
303
  * @public
302
304
  */
303
- export declare const targetTo: <T extends Matrix4Like>(eye: Vector3Like, target: Vector3Like, up: Vector3Like, out: T) => T;
305
+ export declare const targetTo: <T extends Matrix4Like>(eye: Readonly<Vector3Like>, target: Readonly<Vector3Like>, up: Readonly<Vector3Like>, out: T) => T;
304
306
  /**
305
307
  * Add two matrices.
306
308
  * @param a - The augend.
@@ -310,7 +312,7 @@ export declare const targetTo: <T extends Matrix4Like>(eye: Vector3Like, target:
310
312
  * @see {@link https://en.wikipedia.org/wiki/Matrix_addition | Matrix addition}
311
313
  * @public
312
314
  */
313
- export declare const add: <T extends Matrix4Like>(a: Matrix4Like, b: Matrix4Like, out: T) => T;
315
+ export declare const add: <T extends Matrix4Like>(a: Readonly<Matrix4Like>, b: Readonly<Matrix4Like>, out: T) => T;
314
316
  /**
315
317
  * Determine whether or not two matrices are roughly equivalent.
316
318
  * @param a - The first matrix.
@@ -318,7 +320,7 @@ export declare const add: <T extends Matrix4Like>(a: Matrix4Like, b: Matrix4Like
318
320
  * @returns Whether or not the matrices are equivalent.
319
321
  * @public
320
322
  */
321
- export declare const equals: (a: Matrix4Like, b: Matrix4Like) => boolean;
323
+ export declare const equals: (a: Readonly<Matrix4Like>, b: Readonly<Matrix4Like>) => boolean;
322
324
  /**
323
325
  * Determine whether or not two matrices are exactly equivalent.
324
326
  * @param a - The first matrix.
@@ -326,7 +328,7 @@ export declare const equals: (a: Matrix4Like, b: Matrix4Like) => boolean;
326
328
  * @returns Whether the matrices are equivalent.
327
329
  * @public
328
330
  */
329
- export declare const exactEquals: (a: Matrix4Like, b: Matrix4Like) => boolean;
331
+ export declare const exactEquals: (a: Readonly<Matrix4Like>, b: Readonly<Matrix4Like>) => boolean;
330
332
  /**
331
333
  * Calculate the adjugate of a matrix.
332
334
  * @param matrix - The matrix.
@@ -335,7 +337,7 @@ export declare const exactEquals: (a: Matrix4Like, b: Matrix4Like) => boolean;
335
337
  * @see {@link https://en.wikipedia.org/wiki/Adjugate_matrix | Adjugate matrix}
336
338
  * @public
337
339
  */
338
- export declare const adjoint: <T extends Matrix4Like>(matrix: Matrix4Like, out: T) => T;
340
+ export declare const adjoint: <T extends Matrix4Like>(matrix: Readonly<Matrix4Like>, out: T) => T;
339
341
  /**
340
342
  * Copy the values of one matrix into another.
341
343
  * @param matrix - The matrix to copy.
@@ -343,7 +345,7 @@ export declare const adjoint: <T extends Matrix4Like>(matrix: Matrix4Like, out:
343
345
  * @returns This matrix.
344
346
  * @public
345
347
  */
346
- export declare const copy: <T extends Matrix4Like>(matrix: Matrix4Like, out: T) => T;
348
+ export declare const copy: <T extends Matrix4Like>(matrix: Readonly<Matrix4Like>, out: T) => T;
347
349
  /**
348
350
  * Calculate the Frobenius norm of a matrix.
349
351
  * @param matrix - The matrix.
@@ -351,7 +353,7 @@ export declare const copy: <T extends Matrix4Like>(matrix: Matrix4Like, out: T)
351
353
  * @see {@link https://en.wikipedia.org/wiki/Matrix_norm | Matrix norm}
352
354
  * @public
353
355
  */
354
- export declare const frob: (matrix: Matrix4Like) => number;
356
+ export declare const frob: (matrix: Readonly<Matrix4Like>) => number;
355
357
  /**
356
358
  * Multiply two matrices.
357
359
  * @param a - The multiplier.
@@ -361,7 +363,7 @@ export declare const frob: (matrix: Matrix4Like) => number;
361
363
  * @see {@link https://en.wikipedia.org/wiki/Matrix_multiplication | Matrix multiplication}
362
364
  * @public
363
365
  */
364
- export declare const multiply: <T extends Matrix4Like>(a: Matrix4Like, b: Matrix4Like, out: T) => T;
366
+ export declare const multiply: <T extends Matrix4Like>(a: Readonly<Matrix4Like>, b: Readonly<Matrix4Like>, out: T) => T;
365
367
  /**
366
368
  * Multiply a matrix by a scalar value.
367
369
  * @param matrix - The multiplicand.
@@ -371,7 +373,7 @@ export declare const multiply: <T extends Matrix4Like>(a: Matrix4Like, b: Matrix
371
373
  * @see {@link https://en.wikipedia.org/wiki/Matrix_multiplication | Matrix multiplication}
372
374
  * @public
373
375
  */
374
- export declare const multiplyScalar: <T extends Matrix4Like>(matrix: Matrix4Like, scalar: number, out: T) => T;
376
+ export declare const multiplyScalar: <T extends Matrix4Like>(matrix: Readonly<Matrix4Like>, scalar: number, out: T) => T;
375
377
  /**
376
378
  * Add a matrix to another after multiplying the other by a scalar.
377
379
  * @param a - The augend.
@@ -383,7 +385,7 @@ export declare const multiplyScalar: <T extends Matrix4Like>(matrix: Matrix4Like
383
385
  * @see {@link https://en.wikipedia.org/wiki/Matrix_multiplication | Matrix multiplication}
384
386
  * @public
385
387
  */
386
- export declare const multiplyScalarAndAdd: <T extends Matrix4Like>(a: Matrix4Like, b: Matrix4Like, scalar: number, out: T) => T;
388
+ export declare const multiplyScalarAndAdd: <T extends Matrix4Like>(a: Readonly<Matrix4Like>, b: Readonly<Matrix4Like>, scalar: number, out: T) => T;
387
389
  /**
388
390
  * Subtract two matrices.
389
391
  * @param a - The minuend.
@@ -393,7 +395,7 @@ export declare const multiplyScalarAndAdd: <T extends Matrix4Like>(a: Matrix4Lik
393
395
  * @see {@link https://en.wikipedia.org/wiki/Matrix_addition | Matrix addition}
394
396
  * @public
395
397
  */
396
- export declare const subtract: <T extends Matrix4Like>(a: Matrix4Like, b: Matrix4Like, out: T) => T;
398
+ export declare const subtract: <T extends Matrix4Like>(a: Readonly<Matrix4Like>, b: Readonly<Matrix4Like>, out: T) => T;
397
399
  /**
398
400
  * Transpose a matrix.
399
401
  * @param matrix - The matrix.
@@ -402,7 +404,7 @@ export declare const subtract: <T extends Matrix4Like>(a: Matrix4Like, b: Matrix
402
404
  * @see {@link https://en.wikipedia.org/wiki/Transpose | Transpose}
403
405
  * @public
404
406
  */
405
- export declare const transpose: <T extends Matrix4Like>(matrix: Matrix4Like, out: T) => T;
407
+ export declare const transpose: <T extends Matrix4Like>(matrix: Readonly<Matrix4Like>, out: T) => T;
406
408
  /**
407
409
  * Calculate the determinant of a matrix.
408
410
  * @param matrix - The matrix.
@@ -410,7 +412,7 @@ export declare const transpose: <T extends Matrix4Like>(matrix: Matrix4Like, out
410
412
  * @see {@link https://en.wikipedia.org/wiki/Determinant | Determinant}
411
413
  * @public
412
414
  */
413
- export declare const determinant: (matrix: Matrix4Like) => number;
415
+ export declare const determinant: (matrix: Readonly<Matrix4Like>) => number;
414
416
  /**
415
417
  * Invert a matrix.
416
418
  * @param matrix - The matrix.
@@ -419,7 +421,7 @@ export declare const determinant: (matrix: Matrix4Like) => number;
419
421
  * @see {@link https://en.wikipedia.org/wiki/Invertible_matrix | Invertible matrix}
420
422
  * @public
421
423
  */
422
- export declare const invert: <T extends Matrix4Like>(matrix: Matrix4Like, out: T) => T;
424
+ export declare const invert: <T extends Matrix4Like>(matrix: Readonly<Matrix4Like>, out: T) => T;
423
425
  /**
424
426
  * Scale a matrix by the given vector.
425
427
  * @param matrix - The matrix.
@@ -429,7 +431,7 @@ export declare const invert: <T extends Matrix4Like>(matrix: Matrix4Like, out: T
429
431
  * @see {@link https://en.wikipedia.org/wiki/Transformation_matrix | Transformation matrix}
430
432
  * @public
431
433
  */
432
- export declare const scale: <T extends Matrix4Like>(matrix: Matrix4Like, vector: Vector3Like, out: T) => T;
434
+ export declare const scale: <T extends Matrix4Like>(matrix: Readonly<Matrix4Like>, vector: Readonly<Vector3Like>, out: T) => T;
433
435
  /**
434
436
  * Translate a matrix by the given vector.
435
437
  * @param matrix - The matrix.
@@ -439,7 +441,7 @@ export declare const scale: <T extends Matrix4Like>(matrix: Matrix4Like, vector:
439
441
  * @see {@link https://en.wikipedia.org/wiki/Transformation_matrix | Transformation matrix}
440
442
  * @public
441
443
  */
442
- export declare const translate: <T extends Matrix4Like>(matrix: Matrix4Like, vector: Vector3Like, out: T) => T;
444
+ export declare const translate: <T extends Matrix4Like>(matrix: Readonly<Matrix4Like>, vector: Readonly<Vector3Like>, out: T) => T;
443
445
  /**
444
446
  * Rotate a matrix by the given angle around the given axis.
445
447
  * @param matrix - The matrix.
@@ -450,7 +452,7 @@ export declare const translate: <T extends Matrix4Like>(matrix: Matrix4Like, vec
450
452
  * @see {@link https://en.wikipedia.org/wiki/Rotation_matrix | Rotation matrix}
451
453
  * @public
452
454
  */
453
- export declare const rotate: <T extends Matrix4Like>(matrix: Matrix4Like, radians: number, axis: Vector3Like, out: T) => T;
455
+ export declare const rotate: <T extends Matrix4Like>(matrix: Readonly<Matrix4Like>, radians: number, axis: Readonly<Vector3Like>, out: T) => T;
454
456
  /**
455
457
  * Rotate a matrix by the given angle around the X-axis.
456
458
  * @param matrix - The matrix.
@@ -460,7 +462,7 @@ export declare const rotate: <T extends Matrix4Like>(matrix: Matrix4Like, radian
460
462
  * @see {@link https://en.wikipedia.org/wiki/Rotation_matrix | Rotation matrix}
461
463
  * @public
462
464
  */
463
- export declare const rotateX: <T extends Matrix4Like>(matrix: Matrix4Like, r: number, out: T) => T;
465
+ export declare const rotateX: <T extends Matrix4Like>(matrix: Readonly<Matrix4Like>, r: number, out: T) => T;
464
466
  /**
465
467
  * Rotate a matrix by the given angle around the Y-axis.
466
468
  * @param matrix - The matrix.
@@ -470,7 +472,7 @@ export declare const rotateX: <T extends Matrix4Like>(matrix: Matrix4Like, r: nu
470
472
  * @see {@link https://en.wikipedia.org/wiki/Rotation_matrix | Rotation matrix}
471
473
  * @public
472
474
  */
473
- export declare const rotateY: <T extends Matrix4Like>(matrix: Matrix4Like, r: number, out: T) => T;
475
+ export declare const rotateY: <T extends Matrix4Like>(matrix: Readonly<Matrix4Like>, r: number, out: T) => T;
474
476
  /**
475
477
  * Rotate a matrix by the given angle around the Z-axis.
476
478
  * @param matrix - The matrix.
@@ -480,7 +482,7 @@ export declare const rotateY: <T extends Matrix4Like>(matrix: Matrix4Like, r: nu
480
482
  * @see {@link https://en.wikipedia.org/wiki/Rotation_matrix | Rotation matrix}
481
483
  * @public
482
484
  */
483
- export declare const rotateZ: <T extends Matrix4Like>(matrix: Matrix4Like, r: number, out: T) => T;
485
+ export declare const rotateZ: <T extends Matrix4Like>(matrix: Readonly<Matrix4Like>, r: number, out: T) => T;
484
486
  /**
485
487
  * Get the translation vector component of a transformation matrix.
486
488
  * @param matrix - The matrix.
@@ -489,7 +491,7 @@ export declare const rotateZ: <T extends Matrix4Like>(matrix: Matrix4Like, r: nu
489
491
  * @see {@link https://en.wikipedia.org/wiki/Transformation_matrix | Transformation matrix}
490
492
  * @public
491
493
  */
492
- export declare const getTranslation: <T extends Vector3Like>(matrix: Matrix4Like, out: T) => T;
494
+ export declare const getTranslation: <T extends Vector3Like>(matrix: Readonly<Matrix4Like>, out: T) => T;
493
495
  /**
494
496
  * Set the translation vector component of a transformation matrix.
495
497
  * @param matrix - The matrix.
@@ -499,7 +501,7 @@ export declare const getTranslation: <T extends Vector3Like>(matrix: Matrix4Like
499
501
  * @see {@link https://en.wikipedia.org/wiki/Transformation_matrix | Transformation matrix}
500
502
  * @public
501
503
  */
502
- export declare const setTranslation: <T extends Matrix4Like>(matrix: Matrix4Like, translation: Vector3Like, out: T) => T;
504
+ export declare const setTranslation: <T extends Matrix4Like>(matrix: Readonly<Matrix4Like>, translation: Readonly<Vector3Like>, out: T) => T;
503
505
  /**
504
506
  * Get the scaling factor of a transformation matrix.
505
507
  * @param matrix - The matrix.
@@ -508,7 +510,7 @@ export declare const setTranslation: <T extends Matrix4Like>(matrix: Matrix4Like
508
510
  * @see {@link https://en.wikipedia.org/wiki/Transformation_matrix | Transformation matrix}
509
511
  * @public
510
512
  */
511
- export declare const getScaling: <T extends Vector3Like>(matrix: Matrix4Like, out: T) => T;
513
+ export declare const getScaling: <T extends Vector3Like>(matrix: Readonly<Matrix4Like>, out: T) => T;
512
514
  /**
513
515
  * Get the rotational component of a transformation matrix.
514
516
  * @param matrix - The matrix.
@@ -517,7 +519,7 @@ export declare const getScaling: <T extends Vector3Like>(matrix: Matrix4Like, ou
517
519
  * @see {@link https://en.wikipedia.org/wiki/Rotation_matrix | Rotation matrix}
518
520
  * @public
519
521
  */
520
- export declare const getRotation: <T extends QuaternionLike>(matrix: Matrix4Like, out: T) => T;
522
+ export declare const getRotation: <T extends QuaternionLike>(matrix: Readonly<Matrix4Like>, out: T) => T;
521
523
  /**
522
524
  * A four-by-four matrix.
523
525
  * @see {@link https://en.wikipedia.org/wiki/Matrix_(mathematics) | Matrix}
@@ -600,7 +602,7 @@ export default class Matrix4 extends Float32Array implements Matrix4Like, Square
600
602
  * @see {@link https://en.wikipedia.org/wiki/Rotation_matrix | Rotation matrix}
601
603
  * @see {@link https://en.wikipedia.org/wiki/Transformation_matrix | Transformation matrix}
602
604
  */
603
- static fromDualQuaternion(quaternion: DualQuaternionLike): Matrix4;
605
+ static fromDualQuaternion(quaternion: Readonly<DualQuaternionLike>): Matrix4;
604
606
  /**
605
607
  * Create a transformation matrix from a quaternion.
606
608
  * @param quaternion - The quaternion.
@@ -608,7 +610,7 @@ export default class Matrix4 extends Float32Array implements Matrix4Like, Square
608
610
  * @see {@link https://en.wikipedia.org/wiki/Rotation_matrix | Rotation matrix}
609
611
  * @see {@link https://en.wikipedia.org/wiki/Transformation_matrix | Transformation matrix}
610
612
  */
611
- static fromQuaternion(quaternion: QuaternionLike): Matrix4;
613
+ static fromQuaternion(quaternion: Readonly<QuaternionLike>): Matrix4;
612
614
  /**
613
615
  * Create a transformation matrix that represents a rotation by the given angle around the Z-axis.
614
616
  * @param r - The angle in radians.
@@ -616,7 +618,7 @@ export default class Matrix4 extends Float32Array implements Matrix4Like, Square
616
618
  * @returns The transformation matrix.
617
619
  * @see {@link https://en.wikipedia.org/wiki/Rotation_matrix | Rotation matrix}
618
620
  */
619
- static fromRotation(r: number, axis: Vector3Like): Matrix4;
621
+ static fromRotation(r: number, axis: Readonly<Vector3Like>): Matrix4;
620
622
  /**
621
623
  * Create a transformation matrix from the given rotation and translation.
622
624
  * @param rotation - The rotation quaternion.
@@ -625,7 +627,7 @@ export default class Matrix4 extends Float32Array implements Matrix4Like, Square
625
627
  * @see {@link https://en.wikipedia.org/wiki/Rotation_matrix | Rotation matrix}
626
628
  * @see {@link https://en.wikipedia.org/wiki/Transformation_matrix | Transformation matrix}
627
629
  */
628
- static fromRotationTranslation(rotation: QuaternionLike, translation: Vector3Like): Matrix4;
630
+ static fromRotationTranslation(rotation: Readonly<QuaternionLike>, translation: Readonly<Vector3Like>): Matrix4;
629
631
  /**
630
632
  * Create a transformation matrix from the given rotation, translation, and scale.
631
633
  * @param rotation - The rotation quaternion.
@@ -635,7 +637,7 @@ export default class Matrix4 extends Float32Array implements Matrix4Like, Square
635
637
  * @see {@link https://en.wikipedia.org/wiki/Rotation_matrix | Rotation matrix}
636
638
  * @see {@link https://en.wikipedia.org/wiki/Transformation_matrix | Transformation matrix}
637
639
  */
638
- static fromRotationTranslationScale(rotation: QuaternionLike, translation: Vector3Like, scaling: Vector3Like): Matrix4;
640
+ static fromRotationTranslationScale(rotation: Readonly<QuaternionLike>, translation: Readonly<Vector3Like>, scaling: Readonly<Vector3Like>): Matrix4;
639
641
  /**
640
642
  * Create a transformation matrix from the given rotation, translation, and scale around the given origin.
641
643
  * @param rotation - The rotation quaternion.
@@ -646,21 +648,21 @@ export default class Matrix4 extends Float32Array implements Matrix4Like, Square
646
648
  * @see {@link https://en.wikipedia.org/wiki/Rotation_matrix | Rotation matrix}
647
649
  * @see {@link https://en.wikipedia.org/wiki/Transformation_matrix | Transformation matrix}
648
650
  */
649
- static fromRotationTranslationScaleOrigin(rotation: QuaternionLike, translation: Vector3Like, scaling: Vector3Like, origin: Vector3Like): Matrix4;
651
+ static fromRotationTranslationScaleOrigin(rotation: Readonly<QuaternionLike>, translation: Readonly<Vector3Like>, scaling: Readonly<Vector3Like>, origin: Readonly<Vector3Like>): Matrix4;
650
652
  /**
651
653
  * Create a transformation matrix that represents a scaling by the given vector.
652
654
  * @param vector - The scaling vector.
653
655
  * @returns The transformation matrix.
654
656
  * @see {@link https://en.wikipedia.org/wiki/Transformation_matrix | Transformation matrix}
655
657
  */
656
- static fromScaling(vector: Vector3Like): Matrix4;
658
+ static fromScaling(vector: Readonly<Vector3Like>): Matrix4;
657
659
  /**
658
660
  * Create a transformation matrix that represents a translation by the given vector.
659
661
  * @param vector - The translation vector.
660
662
  * @returns The transformation matrix.
661
663
  * @see {@link https://en.wikipedia.org/wiki/Transformation_matrix | Transformation matrix}
662
664
  */
663
- static fromTranslation(vector: Vector3Like): Matrix4;
665
+ static fromTranslation(vector: Readonly<Vector3Like>): Matrix4;
664
666
  /**
665
667
  * Create a two-by-two matrix with the given values.
666
668
  * @param c0r0 - The value in the first column and first row.
@@ -724,7 +726,7 @@ export default class Matrix4 extends Float32Array implements Matrix4Like, Square
724
726
  * @returns The look-at matrix.
725
727
  * @see {@link https://en.wikipedia.org/wiki/Transformation_matrix | Transformation matrix}
726
728
  */
727
- static lookAt(eye: Vector3Like, center: Vector3Like, up?: Vector3Like): Matrix4;
729
+ static lookAt(eye: Readonly<Vector3Like>, center: Readonly<Vector3Like>, up?: Readonly<Vector3Like>): Matrix4;
728
730
  /**
729
731
  * Generate an orthogonal projection matrix with the given bounds such that the near and far clip planes correspond to a normalized device coordinate Z range of `[-1, 1]` (OpenGL/WebGL).
730
732
  * @param left - The left bound of the frustum.
@@ -764,7 +766,10 @@ export default class Matrix4 extends Float32Array implements Matrix4Like, Square
764
766
  static perspective(fov: number, aspect: number, near: number, far: number): Matrix4;
765
767
  /**
766
768
  * Create a perspective projection matrix from a field of view. Useful for generating projection matrices to be used with the WebXR API.
767
- * @param fov - The field of view.
769
+ * @param left - The angle to the left of the field of view in degrees.
770
+ * @param right - The angle to the right of the field of view in degrees.
771
+ * @param bottom - The angle to the bottom of the field of view in degrees.
772
+ * @param top - The angle to the top of the field of view in degrees.
768
773
  * @param near - The near bound of the frustum.
769
774
  * @param far - The far bound of the frustum.
770
775
  * @returns The perspective projection matrix.
@@ -772,7 +777,7 @@ export default class Matrix4 extends Float32Array implements Matrix4Like, Square
772
777
  * @see {@link https://en.wikipedia.org/wiki/3D_projection | 3D projection}
773
778
  * @see {@link https://developer.mozilla.org/en-US/docs/Web/API/WebXR_Device_API | WebXR API}
774
779
  */
775
- static perspectiveFromFieldOfView(fov: FieldOfView, near: number, far: number): Matrix4;
780
+ static perspectiveFromFieldOfView(left: number, right: number, bottom: number, top: number, near: number, far: number): Matrix4;
776
781
  /**
777
782
  * Create a perspective projection matrix with the given bounds such that the near and far clip planes correspond to a normalized device coordinate Z range of `[0, 1]` (WebGPU/Vulkan/DirectX/Metal).
778
783
  * @param fov - The vertical field of view in radians.
@@ -792,14 +797,14 @@ export default class Matrix4 extends Float32Array implements Matrix4Like, Square
792
797
  * @returns The transformation matrix.
793
798
  * @see {@link https://en.wikipedia.org/wiki/Transformation_matrix | Transformation matrix}
794
799
  */
795
- static targetTo(eye: Vector3Like, target: Vector3Like, up?: Vector3Like): Matrix4;
800
+ static targetTo(eye: Readonly<Vector3Like>, target: Readonly<Vector3Like>, up?: Readonly<Vector3Like>): Matrix4;
796
801
  /**
797
802
  * Add two matrices of the same size.
798
803
  * @param matrix - The other matrix.
799
804
  * @returns The sum of the matrices.
800
805
  * @see {@link https://en.wikipedia.org/wiki/Matrix_addition | Matrix addition}
801
806
  */
802
- add(matrix: Matrix4Like): Matrix4;
807
+ add(matrix: Readonly<Matrix4Like>): Matrix4;
803
808
  /**
804
809
  * Calculate the adjugate of this matrix.
805
810
  * @returns The adjugate of this matrix.
@@ -816,19 +821,19 @@ export default class Matrix4 extends Float32Array implements Matrix4Like, Square
816
821
  * @param matrix - The matrix to copy.
817
822
  * @returns This matrix.
818
823
  */
819
- copy(matrix: Matrix4Like): this;
824
+ copy(matrix: Readonly<Matrix4Like>): this;
820
825
  /**
821
826
  * Determine whether or not this matrix is roughly equivalent to another.
822
827
  * @param matrix - The other matrix.
823
828
  * @returns Whether or not the matrices are equivalent.
824
829
  */
825
- equals(matrix: Matrix4Like): boolean;
830
+ equals(matrix: Readonly<Matrix4Like>): boolean;
826
831
  /**
827
832
  * Determine whether or not this matrix is exactly equivalent to another.
828
833
  * @param matrix - The other matrix.
829
834
  * @returns Whether or not the matrices are equivalent.
830
835
  */
831
- exactEquals(matrix: Matrix4Like): boolean;
836
+ exactEquals(matrix: Readonly<Matrix4Like>): boolean;
832
837
  /**
833
838
  * Reset this matrix to identity.
834
839
  * @returns This matrix.
@@ -847,7 +852,7 @@ export default class Matrix4 extends Float32Array implements Matrix4Like, Square
847
852
  * @returns The product of the matrices.
848
853
  * @see {@link https://en.wikipedia.org/wiki/Matrix_multiplication | Matrix multiplication}
849
854
  */
850
- multiply(matrix: Matrix4Like): Matrix4;
855
+ multiply(matrix: Readonly<Matrix4Like>): Matrix4;
851
856
  /**
852
857
  * Multiply this matrix by a scalar value.
853
858
  * @param scalar - The scalar value.
@@ -863,7 +868,7 @@ export default class Matrix4 extends Float32Array implements Matrix4Like, Square
863
868
  * @see {@link https://en.wikipedia.org/wiki/Matrix_addition | Matrix addition}
864
869
  * @see {@link https://en.wikipedia.org/wiki/Matrix_multiplication | Matrix multiplication}
865
870
  */
866
- multiplyScalarAndAdd(matrix: Matrix4Like, scalar: number): Matrix4;
871
+ multiplyScalarAndAdd(matrix: Readonly<Matrix4Like>, scalar: number): Matrix4;
867
872
  /**
868
873
  * Rotate this matrix by the given angle around the given axis.
869
874
  * @param r - The angle in radians.
@@ -871,7 +876,7 @@ export default class Matrix4 extends Float32Array implements Matrix4Like, Square
871
876
  * @returns The rotated matrix.
872
877
  * @see {@link https://en.wikipedia.org/wiki/Rotation_matrix | Rotation matrix}
873
878
  */
874
- rotate(r: number, axis: Vector3Like): Matrix4;
879
+ rotate(r: number, axis: Readonly<Vector3Like>): Matrix4;
875
880
  /**
876
881
  * Rotate this matrix by the given angle around the X-axis.
877
882
  * @param r - The angle in radians.
@@ -899,28 +904,28 @@ export default class Matrix4 extends Float32Array implements Matrix4Like, Square
899
904
  * @returns The scaled matrix.
900
905
  * @see {@link https://en.wikipedia.org/wiki/Transformation_matrix | Transformation matrix}
901
906
  */
902
- scale(vector: Vector3Like): Matrix4;
907
+ scale(vector: Readonly<Vector3Like>): Matrix4;
903
908
  /**
904
909
  * Set the translation vector component of this transformation matrix.
905
910
  * @param translation - The translation vector.
906
911
  * @returns The transformation matrix.
907
912
  * @see {@link https://en.wikipedia.org/wiki/Transformation_matrix | Transformation matrix}
908
913
  */
909
- setTranslation(translation: Vector3Like): Matrix4;
914
+ setTranslation(translation: Readonly<Vector3Like>): Matrix4;
910
915
  /**
911
916
  * Subtract another matrix from this one.
912
917
  * @param matrix - The other matrix.
913
918
  * @returns The difference between the matrices.
914
919
  * @see {@link https://en.wikipedia.org/wiki/Matrix_addition | Matrix addition}
915
920
  */
916
- subtract(matrix: Matrix4Like): Matrix4;
921
+ subtract(matrix: Readonly<Matrix4Like>): Matrix4;
917
922
  /**
918
923
  * Translate this matrix by the given vector.
919
924
  * @param vector - The translation vector.
920
925
  * @returns The translated matrix.
921
926
  * @see {@link https://en.wikipedia.org/wiki/Transformation_matrix | Transformation matrix}
922
927
  */
923
- translate(vector: Vector3Like): Matrix4;
928
+ translate(vector: Readonly<Vector3Like>): Matrix4;
924
929
  /**
925
930
  * Transpose this matrix.
926
931
  * @returns The transpose of this matrix.
@@ -1 +1 @@
1
- {"version":3,"file":"Matrix4.d.ts","sourceRoot":"","sources":["../../src/linalg/Matrix4.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,WAAW,MAAM,yBAAyB,CAAC;AACvD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAC9D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,KAAK,YAAY,MAAM,mBAAmB,CAAC;AAQlD,OAAO,UAAU,EAAE,EAElB,KAAK,cAAc,EACnB,MAAM,iBAAiB,CAAC;AACzB,OAAO,OAAO,EAAE,EAGf,KAAK,WAAW,EAChB,MAAM,cAAc,CAAC;AAEtB;;;;GAIG;AACH,MAAM,WAAW,WAAY,SAAQ,UAAU;IAC9C,mDAAmD;IAEnD,CAAC,EAAE,MAAM,CAAC;IAEV,oDAAoD;IAEpD,CAAC,EAAE,MAAM,CAAC;IAEV,mDAAmD;IAEnD,CAAC,EAAE,MAAM,CAAC;IAEV,oDAAoD;IAEpD,CAAC,EAAE,MAAM,CAAC;IAEV,oDAAoD;IAEpD,CAAC,EAAE,MAAM,CAAC;IAEV,qDAAqD;IAErD,CAAC,EAAE,MAAM,CAAC;IAEV,oDAAoD;IAEpD,CAAC,EAAE,MAAM,CAAC;IAEV,qDAAqD;IAErD,CAAC,EAAE,MAAM,CAAC;IAEV,mDAAmD;IAEnD,CAAC,EAAE,MAAM,CAAC;IAEV,oDAAoD;IAEpD,CAAC,EAAE,MAAM,CAAC;IAEV,mDAAmD;IAEnD,EAAE,EAAE,MAAM,CAAC;IAEX,oDAAoD;IAEpD,EAAE,EAAE,MAAM,CAAC;IAEX,oDAAoD;IAEpD,EAAE,EAAE,MAAM,CAAC;IAEX,qDAAqD;IAErD,EAAE,EAAE,MAAM,CAAC;IAEX,oDAAoD;IAEpD,EAAE,EAAE,MAAM,CAAC;IAEX,qDAAqD;IAErD,EAAE,EAAE,MAAM,CAAC;CACX;AAED;;;;GAIG;AACH,eAAO,MAAM,iBAAiB,QAAO,YAAY,GAAG,WAED,CAAC;AAEpD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,eAAO,MAAM,UAAU,GAAI,CAAC,SAAS,WAAW,EAC/C,MAAM,MAAM,EACZ,MAAM,MAAM,EACZ,MAAM,MAAM,EACZ,MAAM,MAAM,EACZ,MAAM,MAAM,EACZ,MAAM,MAAM,EACZ,MAAM,MAAM,EACZ,MAAM,MAAM,EACZ,MAAM,MAAM,EACZ,MAAM,MAAM,EACZ,MAAM,MAAM,EACZ,MAAM,MAAM,EACZ,MAAM,MAAM,EACZ,MAAM,MAAM,EACZ,MAAM,MAAM,EACZ,MAAM,MAAM,EACZ,KAAK,CAAC,KACJ,CAkBF,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,eAAe,GAAI,CAAC,SAAS,WAAW,EACpD,QAAQ,WAAW,EACnB,KAAK,CAAC,KACJ,CAmBD,CAAC;AAEH;;;;;;;GAOG;AACH,eAAO,MAAM,WAAW,GAAI,CAAC,SAAS,WAAW,EAChD,QAAQ,WAAW,EACnB,KAAK,CAAC,KACJ,CAmBD,CAAC;AAEH;;;;;;GAMG;AACH,eAAO,MAAM,QAAQ,GAAI,CAAC,SAAS,WAAW,EAAE,KAAK,CAAC,KAAG,CACO,CAAC;AAEjE;;;;;;;;GAQG;AACH,eAAO,MAAM,YAAY,GAAI,CAAC,SAAS,WAAW,EACjD,SAAS,MAAM,EACf,MAAM,WAAW,EACjB,KAAK,CAAC,KACJ,CAsCF,CAAC;AAEF;;;;;;;GAOG;AAEH,eAAO,MAAM,aAAa,GAAI,CAAC,SAAS,WAAW,EAClD,SAAS,MAAM,EACf,KAAK,CAAC,KACJ,CAKF,CAAC;AAEF;;;;;;;GAOG;AAEH,eAAO,MAAM,aAAa,GAAI,CAAC,SAAS,WAAW,EAClD,SAAS,MAAM,EACf,KAAK,CAAC,KACJ,CAKF,CAAC;AAEF;;;;;;;GAOG;AAEH,eAAO,MAAM,aAAa,GAAI,CAAC,SAAS,WAAW,EAClD,SAAS,MAAM,EACf,KAAK,CAAC,KACJ,CAKF,CAAC;AAEF;;;;;;;;;;GAUG;AACH,eAAO,MAAM,uBAAuB,GAAI,CAAC,SAAS,WAAW,EAC5D,UAAU,cAAc,EACxB,aAAa,WAAW,EACxB,KAAK,CAAC,KACJ,CAsCF,CAAC;AAEF;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,4BAA4B,GAAI,CAAC,SAAS,WAAW,EACjE,UAAU,cAAc,EACxB,aAAa,WAAW,EACxB,SAAS,WAAW,EACpB,KAAK,CAAC,KACJ,CA0CF,CAAC;AAEF;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,kCAAkC,GAAI,CAAC,SAAS,WAAW,EACvE,UAAU,cAAc,EACxB,aAAa,WAAW,EACxB,SAAS,WAAW,EACpB,QAAQ,WAAW,EACnB,KAAK,CAAC,KACJ,CAuDF,CAAC;AAEF;;;;;;;;GAQG;AACH,eAAO,MAAM,cAAc,GAAI,CAAC,SAAS,WAAW,EACnD,YAAY,cAAc,EAC1B,KAAK,CAAC,KACJ,CAuCF,CAAC;AAKF;;;;;;;;;GASG;AACH,eAAO,MAAM,kBAAkB,GAAI,CAAC,SAAS,WAAW,EACvD,YAAY,kBAAkB,EAC9B,KAAK,CAAC,KACJ,CA4BF,CAAC;AAEF;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,OAAO,GAAI,CAAC,SAAS,WAAW,EAC5C,MAAM,MAAM,EACZ,OAAO,MAAM,EACb,QAAQ,MAAM,EACd,KAAK,MAAM,EACX,MAAM,MAAM,EACZ,KAAK,MAAM,EACX,KAAK,CAAC,KACJ,CA6BF,CAAC;AAEF;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,WAAW,GAAI,CAAC,SAAS,WAAW,EAChD,KAAK,MAAM,EACX,QAAQ,MAAM,EACd,MAAM,MAAM,EACZ,KAAK,MAAM,EACX,KAAK,CAAC,KACJ,CA4BF,CAAC;AAEF;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,cAAc,GAAI,CAAC,SAAS,WAAW,EACnD,KAAK,MAAM,EACX,QAAQ,MAAM,EACd,MAAM,MAAM,EACZ,KAAK,MAAM,EACX,KAAK,CAAC,KACJ,CA4BF,CAAC;AAEF;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,0BAA0B,GAAI,CAAC,SAAS,WAAW,EAC/D,KAAK,WAAW,EAChB,MAAM,MAAM,EACZ,KAAK,MAAM,EACX,KAAK,CAAC,KACJ,CA4BF,CAAC;AAEF;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,KAAK,GAAI,CAAC,SAAS,WAAW,EAC1C,MAAM,MAAM,EACZ,OAAO,MAAM,EACb,QAAQ,MAAM,EACd,KAAK,MAAM,EACX,MAAM,MAAM,EACZ,KAAK,MAAM,EACX,KAAK,CAAC,KACJ,CAwBF,CAAC;AAEF;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,QAAQ,GAAI,CAAC,SAAS,WAAW,EAC7C,MAAM,MAAM,EACZ,OAAO,MAAM,EACb,QAAQ,MAAM,EACd,KAAK,MAAM,EACX,MAAM,MAAM,EACZ,KAAK,MAAM,EACX,KAAK,CAAC,KACJ,CAwBF,CAAC;AAEF;;;;;;;;;GASG;AACH,eAAO,MAAM,MAAM,GAAI,CAAC,SAAS,WAAW,EAC3C,KAAK,WAAW,EAChB,QAAQ,WAAW,EACnB,IAAI,WAAW,EACf,KAAK,CAAC,KACJ,CA0EF,CAAC;AAEF;;;;;;;;;GASG;AACH,eAAO,MAAM,QAAQ,GAAI,CAAC,SAAS,WAAW,EAC7C,KAAK,WAAW,EAChB,QAAQ,WAAW,EACnB,IAAI,WAAW,EACf,KAAK,CAAC,KACJ,CAkDF,CAAC;AAEF;;;;;;;;GAQG;AACH,eAAO,MAAM,GAAG,GAAI,CAAC,SAAS,WAAW,EACxC,GAAG,WAAW,EACd,GAAG,WAAW,EACd,KAAK,CAAC,KACJ,CAmBD,CAAC;AAEH;;;;;;GAMG;AACH,eAAO,MAAM,MAAM,GAAI,GAAG,WAAW,EAAE,GAAG,WAAW,KAAG,OAgB3B,CAAC;AAE9B;;;;;;GAMG;AACH,eAAO,MAAM,WAAW,GAAI,GAAG,WAAW,EAAE,GAAG,WAAW,KAAG,OAgB7C,CAAC;AAEjB;;;;;;;GAOG;AACH,eAAO,MAAM,OAAO,GAAI,CAAC,SAAS,WAAW,EAC5C,QAAQ,WAAW,EACnB,KAAK,CAAC,KACJ,CAkDF,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,IAAI,GAAI,CAAC,SAAS,WAAW,EAAE,QAAQ,WAAW,EAAE,KAAK,CAAC,KAAG,CAmBxE,CAAC;AAEH;;;;;;GAMG;AACH,eAAO,MAAM,IAAI,GAAI,QAAQ,WAAW,KAAG,MAkBzC,CAAC;AAEH;;;;;;;;GAQG;AACH,eAAO,MAAM,QAAQ,GAAI,CAAC,SAAS,WAAW,EAC7C,GAAG,WAAW,EACd,GAAG,WAAW,EACd,KAAK,CAAC,KACJ,CAsDF,CAAC;AAEF;;;;;;;;GAQG;AACH,eAAO,MAAM,cAAc,GAAI,CAAC,SAAS,WAAW,EACnD,QAAQ,WAAW,EACnB,QAAQ,MAAM,EACd,KAAK,CAAC,KACJ,CAmBD,CAAC;AAEH;;;;;;;;;;GAUG;AACH,eAAO,MAAM,oBAAoB,GAAI,CAAC,SAAS,WAAW,EACzD,GAAG,WAAW,EACd,GAAG,WAAW,EACd,QAAQ,MAAM,EACd,KAAK,CAAC,KACJ,CAmBD,CAAC;AAEH;;;;;;;;GAQG;AACH,eAAO,MAAM,QAAQ,GAAI,CAAC,SAAS,WAAW,EAC7C,GAAG,WAAW,EACd,GAAG,WAAW,EACd,KAAK,CAAC,KACJ,CAmBD,CAAC;AAEH;;;;;;;GAOG;AACH,eAAO,MAAM,SAAS,GAAI,CAAC,SAAS,WAAW,EAC9C,QAAQ,WAAW,EACnB,KAAK,CAAC,KACJ,CA0CF,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,WAAW,GAAI,QAAQ,WAAW,KAAG,MA2BjD,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,MAAM,GAAI,CAAC,SAAS,WAAW,EAC3C,QAAQ,WAAW,EACnB,KAAK,CAAC,KACJ,CAyDF,CAAC;AAEF;;;;;;;;GAQG;AACH,eAAO,MAAM,KAAK,GAAI,CAAC,SAAS,WAAW,EAC1C,QAAQ,WAAW,EACnB,QAAQ,WAAW,EACnB,KAAK,CAAC,KACJ,CAwBF,CAAC;AAEF;;;;;;;;GAQG;AACH,eAAO,MAAM,SAAS,GAAI,CAAC,SAAS,WAAW,EAC9C,QAAQ,WAAW,EACnB,QAAQ,WAAW,EACnB,KAAK,CAAC,KACJ,CA6CF,CAAC;AAEF;;;;;;;;;GASG;AACH,eAAO,MAAM,MAAM,GAAI,CAAC,SAAS,WAAW,EAC3C,QAAQ,WAAW,EACnB,SAAS,MAAM,EACf,MAAM,WAAW,EACjB,KAAK,CAAC,KACJ,CAuEF,CAAC;AAEF;;;;;;;;GAQG;AACH,eAAO,MAAM,OAAO,GAAI,CAAC,SAAS,WAAW,EAC5C,QAAQ,WAAW,EACnB,GAAG,MAAM,EACT,KAAK,CAAC,KACJ,CAiCF,CAAC;AAEF;;;;;;;;GAQG;AACH,eAAO,MAAM,OAAO,GAAI,CAAC,SAAS,WAAW,EAC5C,QAAQ,WAAW,EACnB,GAAG,MAAM,EACT,KAAK,CAAC,KACJ,CAiCF,CAAC;AAEF;;;;;;;;GAQG;AACH,eAAO,MAAM,OAAO,GAAI,CAAC,SAAS,WAAW,EAC5C,QAAQ,WAAW,EACnB,GAAG,MAAM,EACT,KAAK,CAAC,KACJ,CAiCF,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,cAAc,GAAI,CAAC,SAAS,WAAW,EACnD,QAAQ,WAAW,EACnB,KAAK,CAAC,KACJ,CAA+D,CAAC;AAEnE;;;;;;;;GAQG;AACH,eAAO,MAAM,cAAc,GAAI,CAAC,SAAS,WAAW,EACnD,QAAQ,WAAW,EACnB,aAAa,WAAW,EACxB,KAAK,CAAC,KACJ,CAqBF,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,UAAU,GAAI,CAAC,SAAS,WAAW,EAC/C,QAAQ,WAAW,EACnB,KAAK,CAAC,KACJ,CAMD,CAAC;AAEH;;;;;;;GAOG;AACH,eAAO,MAAM,WAAW,GAAI,CAAC,SAAS,cAAc,EACnD,QAAQ,WAAW,EACnB,KAAK,CAAC,KACJ,CA4DF,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,OAAO,OAAO,OACpB,SAAQ,YACR,YAAW,WAAW,EAAE,YAAY;IAEpC,mDAAmD;IAE5C,CAAC,EAAE,MAAM,CAAC;IAEjB,oDAAoD;IAE7C,CAAC,EAAE,MAAM,CAAC;IAEjB,mDAAmD;IAE5C,CAAC,EAAE,MAAM,CAAC;IAEjB,oDAAoD;IAE7C,CAAC,EAAE,MAAM,CAAC;IAEjB,oDAAoD;IAE7C,CAAC,EAAE,MAAM,CAAC;IAEjB,qDAAqD;IAE9C,CAAC,EAAE,MAAM,CAAC;IAEjB,oDAAoD;IAE7C,CAAC,EAAE,MAAM,CAAC;IAEjB,qDAAqD;IAE9C,CAAC,EAAE,MAAM,CAAC;IAEjB,mDAAmD;IAE5C,CAAC,EAAE,MAAM,CAAC;IAEjB,oDAAoD;IAE7C,CAAC,EAAE,MAAM,CAAC;IAEjB,mDAAmD;IAE5C,EAAE,EAAE,MAAM,CAAC;IAElB,oDAAoD;IAE7C,EAAE,EAAE,MAAM,CAAC;IAElB,oDAAoD;IAE7C,EAAE,EAAE,MAAM,CAAC;IAElB,qDAAqD;IAE9C,EAAE,EAAE,MAAM,CAAC;IAElB,oDAAoD;IAE7C,EAAE,EAAE,MAAM,CAAC;IAElB,qDAAqD;IAE9C,EAAE,EAAE,MAAM,CAAC;IAElB,yCAAyC;IACzC,SAAgB,MAAM,EAAE,CAAC,CAAC;IAE1B,4CAA4C;IAC5C,SAAgB,KAAK,EAAE,CAAC,CAAC;IAEzB;;;OAGG;IACH,IAAW,WAAW,IAAI,MAAM,CAE/B;IAED;;;OAGG;IACH,IAAW,IAAI,IAAI,MAAM,CAExB;IAED;;;;OAIG;IACH,IAAW,QAAQ,IAAI,UAAU,CAEhC;IAED;;;;OAIG;IACH,IAAW,OAAO,IAAI,OAAO,CAE5B;IAED;;;OAGG;IACH,IAAW,WAAW,IAAI,OAAO,CAEhC;IAED;;;OAGG;;IAaH;;;;;;;OAOG;WACW,kBAAkB,CAAC,UAAU,EAAE,kBAAkB,GAAG,OAAO;IAIzE;;;;;;OAMG;WACW,cAAc,CAAC,UAAU,EAAE,cAAc,GAAG,OAAO;IAIjE;;;;;;OAMG;WACW,YAAY,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,GAAG,OAAO;IAIjE;;;;;;;OAOG;WACW,uBAAuB,CACpC,QAAQ,EAAE,cAAc,EACxB,WAAW,EAAE,WAAW,GACtB,OAAO;IAIV;;;;;;;;OAQG;WACW,4BAA4B,CACzC,QAAQ,EAAE,cAAc,EACxB,WAAW,EAAE,WAAW,EACxB,OAAO,EAAE,WAAW,GAClB,OAAO;IASV;;;;;;;;;OASG;WACW,kCAAkC,CAC/C,QAAQ,EAAE,cAAc,EACxB,WAAW,EAAE,WAAW,EACxB,OAAO,EAAE,WAAW,EACpB,MAAM,EAAE,WAAW,GACjB,OAAO;IAUV;;;;;OAKG;WACW,WAAW,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO;IAIvD;;;;;OAKG;WACW,eAAe,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO;IAI3D;;;;;;;;;;;;;;;;;;;OAmBG;WACW,UAAU,CACvB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,GACV,OAAO;IAsBV;;;;;OAKG;WAEW,aAAa,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO;IAI/C;;;;;OAKG;WAEW,aAAa,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO;IAI/C;;;;;OAKG;WAEW,aAAa,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO;IAI/C;;;;;;;;;;;OAWG;WACW,OAAO,CACpB,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,MAAM,GACT,OAAO;IAIV;;;;;;;OAOG;WACW,MAAM,CACnB,GAAG,EAAE,WAAW,EAChB,MAAM,EAAE,WAAW,EACnB,EAAE,GAAE,WAAuB,GACzB,OAAO;IAIV;;;;;;;;;;;OAWG;WACW,KAAK,CAClB,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,MAAM,GACT,OAAO;IAIV;;;;;;;;;;;OAWG;WACW,QAAQ,CACrB,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,MAAM,GACT,OAAO;IAIV;;;;;;;;;OASG;WACW,WAAW,CACxB,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,MAAM,GACT,OAAO;IAIV;;;;;;;;;OASG;WACW,0BAA0B,CACvC,GAAG,EAAE,WAAW,EAChB,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,MAAM,GACT,OAAO;IAIV;;;;;;;;;OASG;WACW,cAAc,CAC3B,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,MAAM,GACT,OAAO;IAIV;;;;;;;OAOG;WACW,QAAQ,CACrB,GAAG,EAAE,WAAW,EAChB,MAAM,EAAE,WAAW,EACnB,EAAE,GAAE,WAAuB,GACzB,OAAO;IAIV;;;;;OAKG;IACI,GAAG,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO;IAIxC;;;;OAIG;IACI,OAAO,IAAI,OAAO;IAIzB;;;OAGG;IACI,KAAK,IAAI,OAAO;IAIvB;;;;OAIG;IACI,IAAI,CAAC,MAAM,EAAE,WAAW,GAAG,IAAI;IAItC;;;;OAIG;IACI,MAAM,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO;IAI3C;;;;OAIG;IACI,WAAW,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO;IAIhD;;;;OAIG;IACI,QAAQ,IAAI,IAAI;IAIvB;;;;OAIG;IACI,MAAM,IAAI,OAAO;IAIxB;;;;;OAKG;IACI,QAAQ,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO;IAI7C;;;;;OAKG;IACI,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;IAI9C;;;;;;;OAOG;IACI,oBAAoB,CAAC,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO;IAIzE;;;;;;OAMG;IACI,MAAM,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,GAAG,OAAO;IAIpD;;;;;OAKG;IACI,OAAO,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO;IAIlC;;;;;OAKG;IACI,OAAO,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO;IAIlC;;;;;OAKG;IACI,OAAO,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO;IAIlC;;;;;OAKG;IACI,KAAK,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO;IAI1C;;;;;OAKG;IACI,cAAc,CAAC,WAAW,EAAE,WAAW,GAAG,OAAO;IAIxD;;;;;OAKG;IACI,QAAQ,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO;IAI7C;;;;;OAKG;IACI,SAAS,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO;IAI9C;;;;OAIG;IACI,SAAS,IAAI,OAAO;CAG3B"}
1
+ {"version":3,"file":"Matrix4.d.ts","sourceRoot":"","sources":["../../src/linalg/Matrix4.ts"],"names":[],"mappings":"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"}
@@ -433,7 +433,10 @@ export const perspectiveGpu = (fov, aspect, near, far, out) => {
433
433
  };
434
434
  /**
435
435
  * Create a perspective projection matrix from a field of view. Useful for generating projection matrices to be used with the WebXR API.
436
- * @param fov - The field of view.
436
+ * @param left - The angle to the left of the field of view in degrees.
437
+ * @param right - The angle to the right of the field of view in degrees.
438
+ * @param bottom - The angle to the bottom of the field of view in degrees.
439
+ * @param top - The angle to the top of the field of view in degrees.
437
440
  * @param near - The near bound of the frustum.
438
441
  * @param far - The far bound of the frustum.
439
442
  * @param out - The matrix to store the result in.
@@ -443,15 +446,15 @@ export const perspectiveGpu = (fov, aspect, near, far, out) => {
443
446
  * @see {@link https://en.wikipedia.org/wiki/3D_projection | 3D projection}
444
447
  * @public
445
448
  */
446
- export const perspectiveFromFieldOfView = (fov, near, far, out) => {
447
- const upTan = Math.tan(degreesToRadians(fov.upDegrees));
448
- const downTan = Math.tan(degreesToRadians(fov.downDegrees));
449
- const leftTan = Math.tan(degreesToRadians(fov.leftDegrees));
450
- const rightTan = Math.tan(degreesToRadians(fov.rightDegrees));
449
+ export const perspectiveFromFieldOfView = (left, right, bottom, top, near, far, out) => {
450
+ const leftTan = Math.tan(degreesToRadians(left));
451
+ const rightTan = Math.tan(degreesToRadians(right));
452
+ const bottomTan = Math.tan(degreesToRadians(bottom));
453
+ const topTan = Math.tan(degreesToRadians(top));
451
454
  const xScale = 2 / (leftTan + rightTan);
452
- const yScale = 2 / (upTan + downTan);
455
+ const yScale = 2 / (topTan + bottomTan);
453
456
  const nf = near - far;
454
- return fromValues(xScale, 0, 0, 0, 0, yScale, 0, 0, -(((leftTan - rightTan) * xScale) / 2), ((upTan - downTan) * yScale) / 2, far / nf, -1, 0, 0, (far * near) / nf, 0, out);
457
+ return fromValues(xScale, 0, 0, 0, 0, yScale, 0, 0, -(((leftTan - rightTan) * xScale) / 2), ((topTan - bottomTan) * yScale) / 2, far / nf, -1, 0, 0, (far * near) / nf, 0, out);
455
458
  };
456
459
  /**
457
460
  * Generate an orthogonal projection matrix with the given bounds such that the near and far clip planes correspond to a normalized device coordinate Z range of `[-1, 1]` (OpenGL/WebGL).
@@ -1532,7 +1535,10 @@ export default class Matrix4 extends Float32Array {
1532
1535
  }
1533
1536
  /**
1534
1537
  * Create a perspective projection matrix from a field of view. Useful for generating projection matrices to be used with the WebXR API.
1535
- * @param fov - The field of view.
1538
+ * @param left - The angle to the left of the field of view in degrees.
1539
+ * @param right - The angle to the right of the field of view in degrees.
1540
+ * @param bottom - The angle to the bottom of the field of view in degrees.
1541
+ * @param top - The angle to the top of the field of view in degrees.
1536
1542
  * @param near - The near bound of the frustum.
1537
1543
  * @param far - The far bound of the frustum.
1538
1544
  * @returns The perspective projection matrix.
@@ -1540,8 +1546,8 @@ export default class Matrix4 extends Float32Array {
1540
1546
  * @see {@link https://en.wikipedia.org/wiki/3D_projection | 3D projection}
1541
1547
  * @see {@link https://developer.mozilla.org/en-US/docs/Web/API/WebXR_Device_API | WebXR API}
1542
1548
  */
1543
- static perspectiveFromFieldOfView(fov, near, far) {
1544
- return perspectiveFromFieldOfView(fov, near, far, new Matrix4());
1549
+ static perspectiveFromFieldOfView(left, right, bottom, top, near, far) {
1550
+ return perspectiveFromFieldOfView(left, right, bottom, top, near, far, new Matrix4());
1545
1551
  }
1546
1552
  /**
1547
1553
  * Create a perspective projection matrix with the given bounds such that the near and far clip planes correspond to a normalized device coordinate Z range of `[0, 1]` (WebGPU/Vulkan/DirectX/Metal).