@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 +1 @@
1
- {"version":3,"file":"BigNumber.d.ts","sourceRoot":"","sources":["../../src/utility/BigNumber.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,MAAM,MAAM,UAAU,GAAG,UAAU,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC;AAE1D;;;GAGG;AACH,MAAM,MAAM,aAAa,GAAG,UAAU,GAAG,SAAS,CAAC;AAEnD;;;GAGG;AACH,MAAM,CAAC,OAAO,OAAO,SAAS;IAC7B,qCAAqC;IAC9B,QAAQ,EAAE,MAAM,CAAC;IAExB,oCAAoC;IAC7B,OAAO,EAAE,MAAM,CAAC;IAEvB;;;;OAIG;gBACgB,QAAQ,GAAE,aAAiB,EAAE,OAAO,GAAE,aAAiB;IAuB1E;;;;OAIG;IACI,GAAG,CAAC,CAAC,EAAE,aAAa,GAAG,IAAI;IAYlC;;;;OAIG;IACI,MAAM,CAAC,CAAC,EAAE,aAAa,GAAG,IAAI;IAYrC;;;;OAIG;IACI,QAAQ,CAAC,CAAC,EAAE,aAAa,GAAG,IAAI;IAYvC;;;;OAIG;IACI,QAAQ,CAAC,CAAC,EAAE,aAAa,GAAG,IAAI;IAYvC;;;OAGG;IACI,QAAQ,IAAI,MAAM;IAOzB;;;OAGG;IACI,QAAQ,IAAI,MAAM;CAsBzB"}
1
+ {"version":3,"file":"BigNumber.d.ts","sourceRoot":"","sources":["../../src/utility/BigNumber.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,MAAM,MAAM,UAAU,GAAG,UAAU,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC;AAE1D;;;GAGG;AACH,MAAM,MAAM,aAAa,GAAG,UAAU,GAAG,SAAS,CAAC;AAEnD;;;GAGG;AACH,MAAM,CAAC,OAAO,OAAO,SAAS;IAC7B,qCAAqC;IAC9B,QAAQ,EAAE,MAAM,CAAC;IAExB,oCAAoC;IAC7B,OAAO,EAAE,MAAM,CAAC;IAEvB;;;;OAIG;gBAEF,QAAQ,GAAE,QAAQ,CAAC,aAAa,CAAK,EACrC,OAAO,GAAE,QAAQ,CAAC,aAAa,CAAK;IAgCrC;;;;OAIG;IACI,GAAG,CAAC,CAAC,EAAE,QAAQ,CAAC,aAAa,CAAC,GAAG,IAAI;IAY5C;;;;OAIG;IACI,MAAM,CAAC,CAAC,EAAE,QAAQ,CAAC,aAAa,CAAC,GAAG,IAAI;IAY/C;;;;OAIG;IACI,QAAQ,CAAC,CAAC,EAAE,QAAQ,CAAC,aAAa,CAAC,GAAG,IAAI;IAYjD;;;;OAIG;IACI,QAAQ,CAAC,CAAC,EAAE,QAAQ,CAAC,aAAa,CAAC,GAAG,IAAI;IAYjD;;;OAGG;IACI,QAAQ,IAAI,MAAM;IAOzB;;;OAGG;IACI,QAAQ,IAAI,MAAM;CAsBzB"}
@@ -17,14 +17,14 @@ export default class BigNumber {
17
17
  if (divisor === 0) {
18
18
  throw new Error("Cannot divide by zero.");
19
19
  }
20
- if (dividend instanceof BigNumber) {
20
+ if (BigNumber.is(dividend)) {
21
21
  this.dividend = dividend.dividend;
22
22
  this.divisor = dividend.divisor;
23
23
  this.divide(divisor);
24
24
  return;
25
25
  }
26
26
  this.dividend = BigInt(dividend);
27
- if (divisor instanceof BigNumber) {
27
+ if (BigNumber.is(divisor)) {
28
28
  this.divisor = 1n;
29
29
  this.divide(divisor);
30
30
  return;
@@ -32,13 +32,20 @@ export default class BigNumber {
32
32
  this.divisor = BigInt(divisor);
33
33
  this.simplify();
34
34
  }
35
+ /**
36
+ * Utility function for narrowing `Readonly<BigNumberLike>` to `Readonly<BigNumber>` or `BigIntLike`, since `Readonly` breaks the type narrowing for TypeScript.
37
+ * @internal
38
+ */
39
+ static is(value) {
40
+ return value instanceof BigNumber;
41
+ }
35
42
  /**
36
43
  * Add a number to this number.
37
44
  * @param n - The other number.
38
45
  * @returns This number.
39
46
  */
40
47
  add(n) {
41
- if (n instanceof BigNumber) {
48
+ if (BigNumber.is(n)) {
42
49
  this.dividend = this.dividend * n.divisor + n.dividend * this.divisor;
43
50
  this.divisor *= n.divisor;
44
51
  }
@@ -54,7 +61,7 @@ export default class BigNumber {
54
61
  * @returns This number.
55
62
  */
56
63
  divide(n) {
57
- if (n instanceof BigNumber) {
64
+ if (BigNumber.is(n)) {
58
65
  this.dividend *= n.divisor;
59
66
  this.divisor *= n.dividend;
60
67
  }
@@ -70,7 +77,7 @@ export default class BigNumber {
70
77
  * @returns This number.
71
78
  */
72
79
  multiply(n) {
73
- if (n instanceof BigNumber) {
80
+ if (BigNumber.is(n)) {
74
81
  this.dividend *= n.dividend;
75
82
  this.divisor *= n.divisor;
76
83
  }
@@ -86,7 +93,7 @@ export default class BigNumber {
86
93
  * @returns This number.
87
94
  */
88
95
  subtract(n) {
89
- if (n instanceof BigNumber) {
96
+ if (BigNumber.is(n)) {
90
97
  this.dividend = this.dividend * n.divisor - n.dividend * this.divisor;
91
98
  this.divisor *= n.divisor;
92
99
  }
@@ -1 +1 @@
1
- {"version":3,"file":"BigNumber.js","sourceRoot":"","sources":["../../src/utility/BigNumber.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"BigNumber.js","sourceRoot":"","sources":["../../src/utility/BigNumber.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,53 +1,26 @@
1
1
  {
2
- "name": "@lakuna/umath",
3
- "version": "3.0.0",
4
- "description": "A lightweight math library.",
5
- "keywords": [
6
- "math"
7
- ],
8
- "homepage": "https://umath.lakuna.pw",
9
- "bugs": {
10
- "url": "https://github.com/Lakuna/umath/issues",
11
- "email": "travis@lakuna.pw"
12
- },
13
- "license": "MIT",
14
2
  "author": {
15
- "name": "Travis Martin",
16
3
  "email": "travis@lakuna.pw",
4
+ "name": "Travis Martin",
17
5
  "url": "https://www.lakuna.pw/"
18
6
  },
19
- "funding": {
20
- "type": "individual",
21
- "url": "https://github.com/sponsors/Lakuna"
22
- },
23
- "files": [
24
- "dist",
25
- "src"
26
- ],
27
- "repository": {
28
- "type": "git",
29
- "url": "git+https://github.com/Lakuna/umath.git"
30
- },
31
- "scripts": {
32
- "build": "tsc",
33
- "lint": "eslint src",
34
- "doc": "typedoc",
35
- "test": "node --test",
36
- "beautify": "prettier . --write"
7
+ "bugs": {
8
+ "email": "travis@lakuna.pw",
9
+ "url": "https://github.com/Lakuna/umath/issues"
37
10
  },
11
+ "description": "A lightweight math library.",
38
12
  "devDependencies": {
39
13
  "@eslint/js": "^10.0.1",
40
14
  "@types/eslint": "^9.6.1",
41
15
  "@types/eslint-config-prettier": "^6.11.3",
42
16
  "@types/node": "^25.5.0",
43
- "eslint": "^10.0.3",
17
+ "eslint": "^10.1.0",
44
18
  "eslint-config-prettier": "^10.1.8",
45
19
  "eslint-plugin-perfectionist": "^5.7.0",
46
20
  "eslint-plugin-prettier": "^5.5.5",
47
21
  "eslint-plugin-tsdoc": "^0.5.2",
48
- "globals": "^17.4.0",
49
22
  "prettier": "^3.8.1",
50
- "typedoc": "^0.28.17",
23
+ "typedoc": "^0.28.18",
51
24
  "typescript": "^5.9.3",
52
25
  "typescript-eslint": "^8.57.1"
53
26
  },
@@ -62,7 +35,34 @@
62
35
  "./Vector3": "./dist/linalg/Vector3.js",
63
36
  "./Vector4": "./dist/linalg/Vector4.js"
64
37
  },
65
- "typings": "./dist/index.d.ts",
38
+ "files": [
39
+ "dist",
40
+ "src"
41
+ ],
42
+ "funding": {
43
+ "type": "individual",
44
+ "url": "https://github.com/sponsors/Lakuna"
45
+ },
46
+ "homepage": "https://umath.lakuna.pw/",
47
+ "keywords": [
48
+ "math"
49
+ ],
50
+ "license": "MIT",
51
+ "main": "./dist/index.js",
52
+ "name": "@lakuna/umath",
53
+ "repository": {
54
+ "type": "git",
55
+ "url": "git+https://github.com/Lakuna/umath.git"
56
+ },
57
+ "scripts": {
58
+ "build": "tsc",
59
+ "doc": "typedoc",
60
+ "fix": "eslint src --fix",
61
+ "lint": "eslint src",
62
+ "test": "node --test"
63
+ },
64
+ "sideEffects": false,
66
65
  "type": "module",
67
- "sideEffects": false
66
+ "typings": "./dist/index.d.ts",
67
+ "version": "4.0.0"
68
68
  }
@@ -11,7 +11,9 @@ import combinations from "./combinations.js";
11
11
  * @public
12
12
  */
13
13
  export default function hypergeometricPmf(
14
+ // eslint-disable-next-line @typescript-eslint/naming-convention
14
15
  N: number,
16
+ // eslint-disable-next-line @typescript-eslint/naming-convention
15
17
  K: number,
16
18
  n: number,
17
19
  k: number
@@ -5,7 +5,7 @@
5
5
  * @see {@link https://en.wikipedia.org/wiki/Integer_factorization | Integer factorization}
6
6
  * @public
7
7
  */
8
- export default function primeFactorization(n: number): number[] {
8
+ export default function primeFactorization(n: number): readonly number[] {
9
9
  let m = n;
10
10
  const out = [];
11
11
  let divisor = 2;
package/src/index.ts CHANGED
@@ -39,17 +39,12 @@ export { default as Vector3, type Vector3Like } from "./linalg/Vector3.js";
39
39
  export { default as Vector4, type Vector4Like } from "./linalg/Vector4.js";
40
40
  export type { default as Vector, VectorLike } from "./linalg/Vector.js";
41
41
 
42
- // Types
43
- export type { default as AxisAngle } from "./types/AxisAngle.js";
44
- export type { default as FieldOfView } from "./types/FieldOfView.js";
45
-
46
42
  // Utility
47
43
  export {
48
44
  type BigIntLike,
49
45
  default as BigNumber,
50
46
  type BigNumberLike
51
47
  } from "./utility/BigNumber.js";
52
- export { default as createAxisAngleLike } from "./utility/createAxisAngleLike.js";
53
48
  export { default as epsilon } from "./utility/epsilon.js";
54
49
  export { default as MagnitudeError } from "./utility/MagnitudeError.js";
55
50
  export { default as MatrixSizeError } from "./utility/MatrixSizeError.js";
@@ -114,7 +114,7 @@ export const fromValues = <T extends DualQuaternionLike>(
114
114
  * @public
115
115
  */
116
116
  export const copy = <T extends DualQuaternionLike>(
117
- dualQuaternion: DualQuaternionLike,
117
+ dualQuaternion: Readonly<DualQuaternionLike>,
118
118
  out: T
119
119
  ): T =>
120
120
  fromValues(
@@ -138,8 +138,8 @@ export const copy = <T extends DualQuaternionLike>(
138
138
  * @public
139
139
  */
140
140
  export const fromRotationTranslation = <T extends DualQuaternionLike>(
141
- quaternion: QuaternionLike,
142
- translation: Vector3Like,
141
+ quaternion: Readonly<QuaternionLike>,
142
+ translation: Readonly<Vector3Like>,
143
143
  out: T
144
144
  ): T => {
145
145
  const x = quaternion[0];
@@ -172,7 +172,7 @@ export const fromRotationTranslation = <T extends DualQuaternionLike>(
172
172
  * @public
173
173
  */
174
174
  export const fromTranslation = <T extends DualQuaternionLike>(
175
- translation: Vector3Like,
175
+ translation: Readonly<Vector3Like>,
176
176
  out: T
177
177
  ): T =>
178
178
  fromValues(
@@ -195,7 +195,7 @@ export const fromTranslation = <T extends DualQuaternionLike>(
195
195
  * @public
196
196
  */
197
197
  export const fromRotation = <T extends DualQuaternionLike>(
198
- quaternion: QuaternionLike,
198
+ quaternion: Readonly<QuaternionLike>,
199
199
  out: T
200
200
  ): T =>
201
201
  fromValues(
@@ -221,7 +221,7 @@ const iv3 = createVector3Like();
221
221
  * @public
222
222
  */
223
223
  export const fromMatrix4 = <T extends DualQuaternionLike>(
224
- matrix: Matrix4Like,
224
+ matrix: Readonly<Matrix4Like>,
225
225
  out: T
226
226
  ): T => {
227
227
  matrix4GetScaling(matrix, iv3);
@@ -310,7 +310,7 @@ export const identity = <T extends DualQuaternionLike>(out: T): T =>
310
310
  * @public
311
311
  */
312
312
  export const getReal: <T extends QuaternionLike>(
313
- dualQuaternion: DualQuaternionLike,
313
+ dualQuaternion: Readonly<DualQuaternionLike>,
314
314
  out: T
315
315
  ) => T = vector4Copy;
316
316
 
@@ -322,7 +322,7 @@ export const getReal: <T extends QuaternionLike>(
322
322
  * @public
323
323
  */
324
324
  export const getDual = <T extends QuaternionLike>(
325
- dualQuaternion: DualQuaternionLike,
325
+ dualQuaternion: Readonly<DualQuaternionLike>,
326
326
  out: T
327
327
  ): T =>
328
328
  vector4FromValues(
@@ -341,7 +341,7 @@ export const getDual = <T extends QuaternionLike>(
341
341
  * @public
342
342
  */
343
343
  export const setReal: <T extends DualQuaternionLike>(
344
- quaternion: QuaternionLike,
344
+ quaternion: Readonly<QuaternionLike>,
345
345
  out: T
346
346
  ) => T = vector4Copy;
347
347
 
@@ -353,7 +353,7 @@ export const setReal: <T extends DualQuaternionLike>(
353
353
  * @public
354
354
  */
355
355
  export const setDual = <T extends DualQuaternionLike>(
356
- quaternion: QuaternionLike,
356
+ quaternion: Readonly<QuaternionLike>,
357
357
  out: T
358
358
  ): T => {
359
359
  out[4] = quaternion[0];
@@ -371,7 +371,7 @@ export const setDual = <T extends DualQuaternionLike>(
371
371
  * @public
372
372
  */
373
373
  export const getTranslation = <T extends Vector3Like>(
374
- dualQuaternion: DualQuaternionLike,
374
+ dualQuaternion: Readonly<DualQuaternionLike>,
375
375
  out: T
376
376
  ): T => {
377
377
  const ax = dualQuaternion[4];
@@ -400,8 +400,8 @@ export const getTranslation = <T extends Vector3Like>(
400
400
  * @public
401
401
  */
402
402
  export const translate = <T extends DualQuaternionLike>(
403
- dualQuaternion: DualQuaternionLike,
404
- vector: Vector3Like,
403
+ dualQuaternion: Readonly<DualQuaternionLike>,
404
+ vector: Readonly<Vector3Like>,
405
405
  out: T
406
406
  ): T => {
407
407
  const ax1 = dualQuaternion[0];
@@ -440,7 +440,7 @@ export const translate = <T extends DualQuaternionLike>(
440
440
  * @public
441
441
  */
442
442
  export const rotateX = <T extends DualQuaternionLike>(
443
- dualQuaternion: DualQuaternionLike,
443
+ dualQuaternion: Readonly<DualQuaternionLike>,
444
444
  radians: number,
445
445
  out: T
446
446
  ): T => {
@@ -482,7 +482,7 @@ export const rotateX = <T extends DualQuaternionLike>(
482
482
  * @public
483
483
  */
484
484
  export const rotateY = <T extends DualQuaternionLike>(
485
- dualQuaternion: DualQuaternionLike,
485
+ dualQuaternion: Readonly<DualQuaternionLike>,
486
486
  radians: number,
487
487
  out: T
488
488
  ): T => {
@@ -524,7 +524,7 @@ export const rotateY = <T extends DualQuaternionLike>(
524
524
  * @public
525
525
  */
526
526
  export const rotateZ = <T extends DualQuaternionLike>(
527
- dualQuaternion: DualQuaternionLike,
527
+ dualQuaternion: Readonly<DualQuaternionLike>,
528
528
  radians: number,
529
529
  out: T
530
530
  ): T => {
@@ -566,8 +566,8 @@ export const rotateZ = <T extends DualQuaternionLike>(
566
566
  * @public
567
567
  */
568
568
  export const rotateByQuaternionAppend = <T extends DualQuaternionLike>(
569
- dualQuaternion: DualQuaternionLike,
570
- quaternion: QuaternionLike,
569
+ dualQuaternion: Readonly<DualQuaternionLike>,
570
+ quaternion: Readonly<QuaternionLike>,
571
571
  out: T
572
572
  ): T => {
573
573
  const qx = quaternion[0];
@@ -606,8 +606,8 @@ export const rotateByQuaternionAppend = <T extends DualQuaternionLike>(
606
606
  * @public
607
607
  */
608
608
  export const rotateByQuaternionPrepend = <T extends DualQuaternionLike>(
609
- quaternion: QuaternionLike,
610
- dualQuaternion: DualQuaternionLike,
609
+ quaternion: Readonly<QuaternionLike>,
610
+ dualQuaternion: Readonly<DualQuaternionLike>,
611
611
  out: T
612
612
  ): T => {
613
613
  const qx = quaternion[0];
@@ -647,8 +647,8 @@ export const rotateByQuaternionPrepend = <T extends DualQuaternionLike>(
647
647
  * @public
648
648
  */
649
649
  export const rotateAroundAxis = <T extends DualQuaternionLike>(
650
- dualQuaternion: DualQuaternionLike,
651
- axis: Vector3Like,
650
+ dualQuaternion: Readonly<DualQuaternionLike>,
651
+ axis: Readonly<Vector3Like>,
652
652
  radians: number,
653
653
  out: T
654
654
  ): T => {
@@ -701,8 +701,8 @@ export const rotateAroundAxis = <T extends DualQuaternionLike>(
701
701
  * @public
702
702
  */
703
703
  export const add = <T extends DualQuaternionLike>(
704
- a: DualQuaternionLike,
705
- b: DualQuaternionLike,
704
+ a: Readonly<DualQuaternionLike>,
705
+ b: Readonly<DualQuaternionLike>,
706
706
  out: T
707
707
  ): T =>
708
708
  fromValues(
@@ -726,8 +726,8 @@ export const add = <T extends DualQuaternionLike>(
726
726
  * @public
727
727
  */
728
728
  export const multiply = <T extends DualQuaternionLike>(
729
- a: DualQuaternionLike,
730
- b: DualQuaternionLike,
729
+ a: Readonly<DualQuaternionLike>,
730
+ b: Readonly<DualQuaternionLike>,
731
731
  out: T
732
732
  ): T => {
733
733
  const ax0 = a[0];
@@ -800,7 +800,7 @@ export const multiply = <T extends DualQuaternionLike>(
800
800
  * @public
801
801
  */
802
802
  export const scale = <T extends DualQuaternionLike>(
803
- dualQuaternion: DualQuaternionLike,
803
+ dualQuaternion: Readonly<DualQuaternionLike>,
804
804
  scalar: number,
805
805
  out: T
806
806
  ): T =>
@@ -824,8 +824,10 @@ export const scale = <T extends DualQuaternionLike>(
824
824
  * @see {@link https://en.wikipedia.org/wiki/Dot_product | Dot product}
825
825
  * @public
826
826
  */
827
- export const dot: (a: DualQuaternionLike, b: DualQuaternionLike) => number =
828
- vector4Dot;
827
+ export const dot: (
828
+ a: Readonly<DualQuaternionLike>,
829
+ b: Readonly<DualQuaternionLike>
830
+ ) => number = vector4Dot;
829
831
 
830
832
  /**
831
833
  * Perform a linear interpolation between two dual quaternions.
@@ -837,8 +839,8 @@ export const dot: (a: DualQuaternionLike, b: DualQuaternionLike) => number =
837
839
  * @public
838
840
  */
839
841
  export const lerp = <T extends DualQuaternionLike>(
840
- a: DualQuaternionLike,
841
- b: DualQuaternionLike,
842
+ a: Readonly<DualQuaternionLike>,
843
+ b: Readonly<DualQuaternionLike>,
842
844
  t: number,
843
845
  out: T
844
846
  ): T => {
@@ -864,8 +866,9 @@ export const lerp = <T extends DualQuaternionLike>(
864
866
  * @returns The magnitude.
865
867
  * @public
866
868
  */
867
- export const getMagnitude: (dualQuaternion: DualQuaternionLike) => number =
868
- vector4GetMagnitude;
869
+ export const getMagnitude: (
870
+ dualQuaternion: Readonly<DualQuaternionLike>
871
+ ) => number = vector4GetMagnitude;
869
872
 
870
873
  /**
871
874
  * Calculate the squared magnitude (length) of a dual quaternion.
@@ -874,7 +877,7 @@ export const getMagnitude: (dualQuaternion: DualQuaternionLike) => number =
874
877
  * @public
875
878
  */
876
879
  export const getSquaredMagnitude: (
877
- dualQuaternion: DualQuaternionLike
880
+ dualQuaternion: Readonly<DualQuaternionLike>
878
881
  ) => number = vector4GetSquaredMagnitude;
879
882
 
880
883
  /**
@@ -885,7 +888,7 @@ export const getSquaredMagnitude: (
885
888
  * @public
886
889
  */
887
890
  export const invert = <T extends DualQuaternionLike>(
888
- dualQuaternion: DualQuaternionLike,
891
+ dualQuaternion: Readonly<DualQuaternionLike>,
889
892
  out: T
890
893
  ): T => {
891
894
  const sqm = getSquaredMagnitude(dualQuaternion);
@@ -911,7 +914,7 @@ export const invert = <T extends DualQuaternionLike>(
911
914
  * @public
912
915
  */
913
916
  export const conjugate = <T extends DualQuaternionLike>(
914
- dualQuaternion: DualQuaternionLike,
917
+ dualQuaternion: Readonly<DualQuaternionLike>,
915
918
  out: T
916
919
  ): T =>
917
920
  fromValues(
@@ -934,7 +937,7 @@ export const conjugate = <T extends DualQuaternionLike>(
934
937
  * @public
935
938
  */
936
939
  export const normalize = <T extends DualQuaternionLike>(
937
- dualQuaternion: DualQuaternionLike,
940
+ dualQuaternion: Readonly<DualQuaternionLike>,
938
941
  out: T
939
942
  ): T => {
940
943
  let magnitude = getSquaredMagnitude(dualQuaternion);
@@ -976,8 +979,8 @@ export const normalize = <T extends DualQuaternionLike>(
976
979
  * @public
977
980
  */
978
981
  export const exactEquals = (
979
- a: DualQuaternionLike,
980
- b: DualQuaternionLike
982
+ a: Readonly<DualQuaternionLike>,
983
+ b: Readonly<DualQuaternionLike>
981
984
  ): boolean =>
982
985
  a[0] === b[0] &&
983
986
  a[1] === b[1] &&
@@ -995,7 +998,10 @@ export const exactEquals = (
995
998
  * @returns Whether or not the dual quaternions are equivalent.
996
999
  * @public
997
1000
  */
998
- export const equals = (a: DualQuaternionLike, b: DualQuaternionLike): boolean =>
1001
+ export const equals = (
1002
+ a: Readonly<DualQuaternionLike>,
1003
+ b: Readonly<DualQuaternionLike>
1004
+ ): boolean =>
999
1005
  approxRelative(a[0], b[0]) &&
1000
1006
  approxRelative(a[1], b[1]) &&
1001
1007
  approxRelative(a[2], b[2]) &&
@@ -1070,7 +1076,7 @@ export default class DualQuaternion
1070
1076
  * @param matrix - The matrix.
1071
1077
  * @returns The dual quaternion.
1072
1078
  */
1073
- public static fromMatrix4(matrix: Matrix4Like): DualQuaternion {
1079
+ public static fromMatrix4(matrix: Readonly<Matrix4Like>): DualQuaternion {
1074
1080
  return fromMatrix4(matrix, new DualQuaternion());
1075
1081
  }
1076
1082
 
@@ -1079,7 +1085,7 @@ export default class DualQuaternion
1079
1085
  * @param q - The rotation quaternion.
1080
1086
  * @returns The dual quaternion.
1081
1087
  */
1082
- public static fromRotation(q: QuaternionLike): DualQuaternion {
1088
+ public static fromRotation(q: Readonly<QuaternionLike>): DualQuaternion {
1083
1089
  return fromRotation(q, new DualQuaternion());
1084
1090
  }
1085
1091
 
@@ -1090,8 +1096,8 @@ export default class DualQuaternion
1090
1096
  * @returns The dual quaternion.
1091
1097
  */
1092
1098
  public static fromRotationTranslation(
1093
- q: QuaternionLike,
1094
- t: Vector3Like
1099
+ q: Readonly<QuaternionLike>,
1100
+ t: Readonly<Vector3Like>
1095
1101
  ): DualQuaternion {
1096
1102
  return fromRotationTranslation(q, t, new DualQuaternion());
1097
1103
  }
@@ -1101,7 +1107,7 @@ export default class DualQuaternion
1101
1107
  * @param t - The translation vector.
1102
1108
  * @returns The dual quaternion.
1103
1109
  */
1104
- public static fromTranslation(t: Vector3Like): DualQuaternion {
1110
+ public static fromTranslation(t: Readonly<Vector3Like>): DualQuaternion {
1105
1111
  return fromTranslation(t, new DualQuaternion());
1106
1112
  }
1107
1113
 
@@ -1135,7 +1141,7 @@ export default class DualQuaternion
1135
1141
  * @param dq - The other dual quaternion.
1136
1142
  * @returns The sum.
1137
1143
  */
1138
- public add(dq: DualQuaternionLike): DualQuaternion {
1144
+ public add(dq: Readonly<DualQuaternionLike>): DualQuaternion {
1139
1145
  return add(this, dq, new DualQuaternion());
1140
1146
  }
1141
1147
 
@@ -1160,7 +1166,7 @@ export default class DualQuaternion
1160
1166
  * @param dualQuaternion - The dual quaternion to copy.
1161
1167
  * @returns This dual quaternion.
1162
1168
  */
1163
- public copy(dualQuaternion: DualQuaternionLike): this {
1169
+ public copy(dualQuaternion: Readonly<DualQuaternionLike>): this {
1164
1170
  return copy(dualQuaternion, this);
1165
1171
  }
1166
1172
 
@@ -1170,7 +1176,7 @@ export default class DualQuaternion
1170
1176
  * @returns The dot product.
1171
1177
  * @see {@link https://en.wikipedia.org/wiki/Dot_product | Dot product}
1172
1178
  */
1173
- public dot(dq: DualQuaternionLike): number {
1179
+ public dot(dq: Readonly<DualQuaternionLike>): number {
1174
1180
  return dot(this, dq);
1175
1181
  }
1176
1182
 
@@ -1179,7 +1185,7 @@ export default class DualQuaternion
1179
1185
  * @param dq - The other dual quaternion.
1180
1186
  * @returns Whether or not the dual quaternions are equivalent.
1181
1187
  */
1182
- public equals(dq: DualQuaternionLike): boolean {
1188
+ public equals(dq: Readonly<DualQuaternionLike>): boolean {
1183
1189
  return equals(this, dq);
1184
1190
  }
1185
1191
 
@@ -1188,7 +1194,7 @@ export default class DualQuaternion
1188
1194
  * @param dq - The other dual quaternion.
1189
1195
  * @returns Whether or not the dual quaternions are equivalent.
1190
1196
  */
1191
- public exactEquals(dq: DualQuaternionLike): boolean {
1197
+ public exactEquals(dq: Readonly<DualQuaternionLike>): boolean {
1192
1198
  return exactEquals(this, dq);
1193
1199
  }
1194
1200
 
@@ -1238,7 +1244,7 @@ export default class DualQuaternion
1238
1244
  * @param t - The interpolation amount in `[0,1]`.
1239
1245
  * @returns The interpolated value.
1240
1246
  */
1241
- public lerp(dq: DualQuaternionLike, t: number): DualQuaternion {
1247
+ public lerp(dq: Readonly<DualQuaternionLike>, t: number): DualQuaternion {
1242
1248
  return lerp(this, dq, t, new DualQuaternion());
1243
1249
  }
1244
1250
 
@@ -1247,7 +1253,7 @@ export default class DualQuaternion
1247
1253
  * @param dq - The other dual quaternion.
1248
1254
  * @returns The product.
1249
1255
  */
1250
- public multiply(dq: DualQuaternionLike): DualQuaternion {
1256
+ public multiply(dq: Readonly<DualQuaternionLike>): DualQuaternion {
1251
1257
  return multiply(this, dq, new DualQuaternion());
1252
1258
  }
1253
1259
 
@@ -1265,7 +1271,10 @@ export default class DualQuaternion
1265
1271
  * @param r - The angle of the rotation in radians.
1266
1272
  * @returns A normalized dual quaternion.
1267
1273
  */
1268
- public rotateAroundAxis(axis: Vector3Like, r: number): DualQuaternion {
1274
+ public rotateAroundAxis(
1275
+ axis: Readonly<Vector3Like>,
1276
+ r: number
1277
+ ): DualQuaternion {
1269
1278
  return rotateAroundAxis(this, axis, r, new DualQuaternion());
1270
1279
  }
1271
1280
 
@@ -1275,7 +1284,7 @@ export default class DualQuaternion
1275
1284
  * @returns The rotated dual quaternion.
1276
1285
  * @see {@link https://en.wikipedia.org/wiki/Quaternion | Quaternion}
1277
1286
  */
1278
- public rotateByQuaternionAppend(q: QuaternionLike): DualQuaternion {
1287
+ public rotateByQuaternionAppend(q: Readonly<QuaternionLike>): DualQuaternion {
1279
1288
  return rotateByQuaternionAppend(this, q, new DualQuaternion());
1280
1289
  }
1281
1290
 
@@ -1285,7 +1294,9 @@ export default class DualQuaternion
1285
1294
  * @returns The rotated dual quaternion.
1286
1295
  * @see {@link https://en.wikipedia.org/wiki/Quaternion | Quaternion}
1287
1296
  */
1288
- public rotateByQuaternionPrepend(q: QuaternionLike): DualQuaternion {
1297
+ public rotateByQuaternionPrepend(
1298
+ q: Readonly<QuaternionLike>
1299
+ ): DualQuaternion {
1289
1300
  return rotateByQuaternionPrepend(q, this, new DualQuaternion());
1290
1301
  }
1291
1302
 
@@ -1329,7 +1340,7 @@ export default class DualQuaternion
1329
1340
  * Set the real part of this dual quaternion.
1330
1341
  * @param q - The quaternion.
1331
1342
  */
1332
- public setDual(q: QuaternionLike): void {
1343
+ public setDual(q: Readonly<QuaternionLike>): void {
1333
1344
  setDual(q, this);
1334
1345
  }
1335
1346
 
@@ -1337,7 +1348,7 @@ export default class DualQuaternion
1337
1348
  * Set the real part of this dual quaternion.
1338
1349
  * @param q - The quaternion.
1339
1350
  */
1340
- public setReal(q: QuaternionLike): void {
1351
+ public setReal(q: Readonly<QuaternionLike>): void {
1341
1352
  setReal(q, this);
1342
1353
  }
1343
1354
 
@@ -1346,7 +1357,7 @@ export default class DualQuaternion
1346
1357
  * @param v - The vector.
1347
1358
  * @returns The translated dual quaternion.
1348
1359
  */
1349
- public translate(v: Vector3Like): DualQuaternion {
1360
+ public translate(v: Readonly<Vector3Like>): DualQuaternion {
1350
1361
  return translate(this, v, new DualQuaternion());
1351
1362
  }
1352
1363
  }