@lakuna/umath 1.3.4 → 1.3.6

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 (162) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +7 -9
  3. package/dist/algorithms/combinations.d.ts +7 -0
  4. package/dist/algorithms/combinations.d.ts.map +1 -1
  5. package/dist/algorithms/combinations.js +8 -1
  6. package/dist/algorithms/combinations.js.map +1 -1
  7. package/dist/algorithms/degreesToRadians.d.ts +7 -0
  8. package/dist/algorithms/degreesToRadians.d.ts.map +1 -1
  9. package/dist/algorithms/degreesToRadians.js +7 -0
  10. package/dist/algorithms/degreesToRadians.js.map +1 -1
  11. package/dist/algorithms/factorial.d.ts +6 -0
  12. package/dist/algorithms/factorial.d.ts.map +1 -1
  13. package/dist/algorithms/factorial.js +15 -5
  14. package/dist/algorithms/factorial.js.map +1 -1
  15. package/dist/algorithms/fibonacci.d.ts +6 -1
  16. package/dist/algorithms/fibonacci.d.ts.map +1 -1
  17. package/dist/algorithms/fibonacci.js +6 -1
  18. package/dist/algorithms/fibonacci.js.map +1 -1
  19. package/dist/algorithms/greatestCommonDivisor.d.ts +14 -0
  20. package/dist/algorithms/greatestCommonDivisor.d.ts.map +1 -1
  21. package/dist/algorithms/greatestCommonDivisor.js +7 -9
  22. package/dist/algorithms/greatestCommonDivisor.js.map +1 -1
  23. package/dist/algorithms/hypergeometricPmf.d.ts +9 -0
  24. package/dist/algorithms/hypergeometricPmf.d.ts.map +1 -1
  25. package/dist/algorithms/hypergeometricPmf.js +10 -1
  26. package/dist/algorithms/hypergeometricPmf.js.map +1 -1
  27. package/dist/algorithms/isPrime.d.ts +6 -0
  28. package/dist/algorithms/isPrime.d.ts.map +1 -1
  29. package/dist/algorithms/isPrime.js +8 -1
  30. package/dist/algorithms/isPrime.js.map +1 -1
  31. package/dist/algorithms/permutations.d.ts +7 -0
  32. package/dist/algorithms/permutations.d.ts.map +1 -1
  33. package/dist/algorithms/permutations.js +8 -1
  34. package/dist/algorithms/permutations.js.map +1 -1
  35. package/dist/algorithms/primeFactorization.d.ts +7 -1
  36. package/dist/algorithms/primeFactorization.d.ts.map +1 -1
  37. package/dist/algorithms/primeFactorization.js +10 -3
  38. package/dist/algorithms/primeFactorization.js.map +1 -1
  39. package/dist/algorithms/radiansToDegrees.d.ts +7 -0
  40. package/dist/algorithms/radiansToDegrees.d.ts.map +1 -1
  41. package/dist/algorithms/radiansToDegrees.js +7 -0
  42. package/dist/algorithms/radiansToDegrees.js.map +1 -1
  43. package/dist/algorithms/summation.d.ts +8 -0
  44. package/dist/algorithms/summation.d.ts.map +1 -1
  45. package/dist/algorithms/summation.js +9 -0
  46. package/dist/algorithms/summation.js.map +1 -1
  47. package/dist/index.d.ts +32 -33
  48. package/dist/index.d.ts.map +1 -1
  49. package/dist/index.js +27 -27
  50. package/dist/index.js.map +1 -1
  51. package/dist/linalg/DualQuaternion.d.ts +460 -83
  52. package/dist/linalg/DualQuaternion.d.ts.map +1 -1
  53. package/dist/linalg/DualQuaternion.js +514 -133
  54. package/dist/linalg/DualQuaternion.js.map +1 -1
  55. package/dist/linalg/Matrix.d.ts +80 -12
  56. package/dist/linalg/Matrix.d.ts.map +1 -1
  57. package/dist/linalg/Matrix2.d.ts +337 -52
  58. package/dist/linalg/Matrix2.d.ts.map +1 -1
  59. package/dist/linalg/Matrix2.js +345 -61
  60. package/dist/linalg/Matrix2.js.map +1 -1
  61. package/dist/linalg/Matrix3.d.ts +470 -72
  62. package/dist/linalg/Matrix3.d.ts.map +1 -1
  63. package/dist/linalg/Matrix3.js +488 -94
  64. package/dist/linalg/Matrix3.js.map +1 -1
  65. package/dist/linalg/Matrix4.d.ts +842 -137
  66. package/dist/linalg/Matrix4.d.ts.map +1 -1
  67. package/dist/linalg/Matrix4.js +896 -175
  68. package/dist/linalg/Matrix4.js.map +1 -1
  69. package/dist/linalg/Quaternion.d.ts +395 -70
  70. package/dist/linalg/Quaternion.d.ts.map +1 -1
  71. package/dist/linalg/Quaternion.js +416 -70
  72. package/dist/linalg/Quaternion.js.map +1 -1
  73. package/dist/linalg/SlowMatrix.d.ts +79 -9
  74. package/dist/linalg/SlowMatrix.d.ts.map +1 -1
  75. package/dist/linalg/SlowMatrix.js +147 -27
  76. package/dist/linalg/SlowMatrix.js.map +1 -1
  77. package/dist/linalg/SlowSquareMatrix.d.ts +58 -3
  78. package/dist/linalg/SlowSquareMatrix.d.ts.map +1 -1
  79. package/dist/linalg/SlowSquareMatrix.js +111 -21
  80. package/dist/linalg/SlowSquareMatrix.js.map +1 -1
  81. package/dist/linalg/SquareMatrix.d.ts +26 -3
  82. package/dist/linalg/SquareMatrix.d.ts.map +1 -1
  83. package/dist/linalg/Vector.d.ts +148 -24
  84. package/dist/linalg/Vector.d.ts.map +1 -1
  85. package/dist/linalg/Vector2.d.ts +484 -84
  86. package/dist/linalg/Vector2.d.ts.map +1 -1
  87. package/dist/linalg/Vector2.js +487 -71
  88. package/dist/linalg/Vector2.js.map +1 -1
  89. package/dist/linalg/Vector3.d.ts +582 -98
  90. package/dist/linalg/Vector3.d.ts.map +1 -1
  91. package/dist/linalg/Vector3.js +625 -134
  92. package/dist/linalg/Vector3.js.map +1 -1
  93. package/dist/linalg/Vector4.d.ts +450 -75
  94. package/dist/linalg/Vector4.d.ts.map +1 -1
  95. package/dist/linalg/Vector4.js +447 -62
  96. package/dist/linalg/Vector4.js.map +1 -1
  97. package/dist/types/AxisAngle.d.ts +4 -1
  98. package/dist/types/AxisAngle.d.ts.map +1 -1
  99. package/dist/types/FieldOfView.d.ts +5 -0
  100. package/dist/types/FieldOfView.d.ts.map +1 -1
  101. package/dist/utility/BigNumber.d.ts +41 -8
  102. package/dist/utility/BigNumber.d.ts.map +1 -1
  103. package/dist/utility/BigNumber.js +47 -5
  104. package/dist/utility/BigNumber.js.map +1 -1
  105. package/dist/utility/MagnitudeError.d.ts +5 -0
  106. package/dist/utility/MagnitudeError.d.ts.map +1 -1
  107. package/dist/utility/MagnitudeError.js +6 -1
  108. package/dist/utility/MagnitudeError.js.map +1 -1
  109. package/dist/utility/MatrixSizeError.d.ts +5 -0
  110. package/dist/utility/MatrixSizeError.d.ts.map +1 -1
  111. package/dist/utility/MatrixSizeError.js +5 -0
  112. package/dist/utility/MatrixSizeError.js.map +1 -1
  113. package/dist/utility/PartialMatrixError.d.ts +5 -0
  114. package/dist/utility/PartialMatrixError.d.ts.map +1 -1
  115. package/dist/utility/PartialMatrixError.js +5 -0
  116. package/dist/utility/PartialMatrixError.js.map +1 -1
  117. package/dist/utility/SingularMatrixError.d.ts +8 -0
  118. package/dist/utility/SingularMatrixError.d.ts.map +1 -1
  119. package/dist/utility/SingularMatrixError.js +8 -0
  120. package/dist/utility/SingularMatrixError.js.map +1 -1
  121. package/dist/utility/epsilon.d.ts +1 -0
  122. package/dist/utility/epsilon.d.ts.map +1 -1
  123. package/dist/utility/epsilon.js +1 -0
  124. package/dist/utility/epsilon.js.map +1 -1
  125. package/package.json +20 -51
  126. package/src/algorithms/combinations.ts +4 -4
  127. package/src/algorithms/degreesToRadians.ts +3 -3
  128. package/src/algorithms/factorial.ts +13 -8
  129. package/src/algorithms/fibonacci.ts +3 -3
  130. package/src/algorithms/greatestCommonDivisor.ts +15 -19
  131. package/src/algorithms/hypergeometricPmf.ts +5 -6
  132. package/src/algorithms/isPrime.ts +4 -4
  133. package/src/algorithms/permutations.ts +4 -4
  134. package/src/algorithms/primeFactorization.ts +9 -9
  135. package/src/algorithms/radiansToDegrees.ts +3 -3
  136. package/src/algorithms/summation.ts +5 -5
  137. package/src/index.ts +35 -33
  138. package/src/linalg/DualQuaternion.ts +558 -804
  139. package/src/linalg/Matrix.ts +35 -36
  140. package/src/linalg/Matrix2.ts +277 -413
  141. package/src/linalg/Matrix3.ts +532 -737
  142. package/src/linalg/Matrix4.ts +1078 -1604
  143. package/src/linalg/Quaternion.ts +415 -690
  144. package/src/linalg/SlowMatrix.ts +118 -69
  145. package/src/linalg/SlowSquareMatrix.ts +85 -56
  146. package/src/linalg/SquareMatrix.ts +7 -7
  147. package/src/linalg/Vector.ts +71 -70
  148. package/src/linalg/Vector2.ts +380 -576
  149. package/src/linalg/Vector3.ts +544 -840
  150. package/src/linalg/Vector4.ts +383 -549
  151. package/src/types/AxisAngle.ts +1 -1
  152. package/src/utility/BigNumber.ts +33 -42
  153. package/src/utility/MagnitudeError.ts +4 -4
  154. package/src/utility/MatrixSizeError.ts +2 -3
  155. package/src/utility/PartialMatrixError.ts +2 -3
  156. package/src/utility/SingularMatrixError.ts +2 -2
  157. package/src/utility/epsilon.ts +1 -4
  158. package/dist/types/IntegerRepresentation.d.ts +0 -2
  159. package/dist/types/IntegerRepresentation.d.ts.map +0 -1
  160. package/dist/types/IntegerRepresentation.js +0 -2
  161. package/dist/types/IntegerRepresentation.js.map +0 -1
  162. package/src/types/IntegerRepresentation.ts +0 -2
@@ -1,120 +1,210 @@
1
- import SlowMatrix from "#SlowMatrix";
2
- import MatrixSizeError from "#MatrixSizeError";
3
- import SingularMatrixError from "#SingularMatrixError";
1
+ import MatrixSizeError from "../utility/MatrixSizeError.js";
2
+ import SingularMatrixError from "../utility/SingularMatrixError.js";
3
+ import SlowMatrix from "./SlowMatrix.js";
4
+ /**
5
+ * A variable-size matrix with the same number of rows and columns.
6
+ * @see [Square matrix](https://en.wikipedia.org/wiki/Square_matrix)
7
+ */
4
8
  export default class SlowSquareMatrix extends SlowMatrix {
9
+ /**
10
+ * Create a variable-size matrix with the same number of rows and columns from the given columns.
11
+ * @param cols - The columns in the matrix.
12
+ * @see [Square matrix](https://en.wikipedia.org/wiki/Square_matrix)
13
+ */
5
14
  constructor(...cols) {
6
15
  super(...cols);
16
+ // Ensure that every column is the same height and that the height is equal to the width.
7
17
  for (let i = 0; i < this.width; i++) {
8
- if (cols[i].length != this.height) {
18
+ const col = cols[i];
19
+ if (typeof col === "undefined" || col.length !== this.height) {
9
20
  throw new MatrixSizeError();
10
21
  }
11
22
  }
12
23
  }
24
+ /**
25
+ * Get the determinant of this matrix.
26
+ * @see [Determinant](https://en.wikipedia.org/wiki/Determinant)
27
+ */
13
28
  get determinant() {
14
29
  if (this.length < 1) {
15
30
  throw new MatrixSizeError();
16
31
  }
17
- if (this.length == 1) {
32
+ if (this.length === 1) {
18
33
  return this[0] ?? 0;
19
34
  }
20
35
  let out = 0;
21
36
  for (let i = 0; i < this.width; i++) {
22
- out +=
23
- this[i * this.height] * (i % 2 ? -1 : 1) * this.minor(0, i);
37
+ const a = this[i * this.height];
38
+ if (typeof a === "undefined") {
39
+ throw new MatrixSizeError();
40
+ }
41
+ out += a * (i % 2 ? -1 : 1) * this.minor(0, i);
24
42
  }
25
43
  return out;
26
44
  }
45
+ /**
46
+ * Calculate the adjugate of this matrix.
47
+ * @returns The adjugate of this matrix.
48
+ * @see [Adjugate matrix](https://en.wikipedia.org/wiki/Adjugate_matrix)
49
+ */
27
50
  adjoint() {
28
51
  return this.cofactor().transpose();
29
52
  }
53
+ /**
54
+ * Create a copy of this matrix.
55
+ * @returns A copy of this matrix.
56
+ */
30
57
  clone() {
31
58
  const cols = [];
32
59
  for (let x = 0; x < this.width; x++) {
33
60
  for (let y = 0; y < this.height; y++) {
34
- (cols[x] ??= [])[y] = this[x * this.height + y];
61
+ const a = this[x * this.height + y];
62
+ if (typeof a === "undefined") {
63
+ throw new MatrixSizeError();
64
+ }
65
+ (cols[x] ??= [])[y] = a;
35
66
  }
36
67
  }
37
68
  return new SlowSquareMatrix(...cols);
38
69
  }
70
+ /**
71
+ * Calculate the cofactor of this matrix.
72
+ * @returns The cofactor.
73
+ * @see [Minor](https://en.wikipedia.org/wiki/Minor_(linear_algebra))
74
+ */
39
75
  cofactor() {
40
76
  const out = [];
41
77
  for (let i = 0; i < this.width; i++) {
78
+ // Column `i`.
42
79
  for (let j = 0; j < this.height; j++) {
80
+ // Row `j`.
43
81
  (out[j] ??= [])[i] = ((i + j) % 2 ? -1 : 1) * this.minor(i, j);
44
82
  }
45
83
  }
46
84
  return new SlowSquareMatrix(...out);
47
85
  }
86
+ /**
87
+ * Reset this matrix to identity.
88
+ * @returns This matrix.
89
+ * @see [Identity matrix](https://en.wikipedia.org/wiki/Identity_matrix)
90
+ */
48
91
  identity() {
49
92
  for (let i = 0; i < this.width; i++) {
50
93
  for (let j = 0; j < this.height; j++) {
51
- this[i * this.height + j] = i == j ? 1 : 0;
94
+ this[i * this.height + j] = i === j ? 1 : 0;
52
95
  }
53
96
  }
54
97
  return this;
55
98
  }
99
+ /**
100
+ * Invert this matrix.
101
+ * @returns The inverted matrix.
102
+ * @see [Invertible matrix](https://en.wikipedia.org/wiki/Invertible_matrix)
103
+ */
56
104
  invert() {
57
105
  const dim = this.width;
58
106
  const clone = this.clone();
59
107
  const identity = this.clone().identity();
60
108
  for (let i = 0; i < dim; i++) {
61
109
  let diagonal = clone[i * dim + i];
62
- if (!diagonal) {
110
+ if (typeof diagonal === "undefined") {
111
+ throw new MatrixSizeError();
112
+ }
113
+ if (diagonal === 0) {
63
114
  for (let ii = i + 1; ii < dim; ii++) {
64
115
  if (clone[ii * dim + i]) {
65
116
  for (let j = 0; j < dim; j++) {
66
117
  for (const matrix of [clone, identity]) {
67
- [matrix[i * dim + j], matrix[ii * dim + j]] = [
68
- matrix[ii * dim + j],
69
- matrix[i * dim + j]
70
- ];
118
+ const a = matrix[ii * dim + j];
119
+ const b = matrix[i * dim + j];
120
+ if (typeof a === "undefined" || typeof b === "undefined") {
121
+ throw new MatrixSizeError();
122
+ }
123
+ [matrix[i * dim + j], matrix[ii * dim + j]] = [a, b];
71
124
  }
72
125
  }
73
126
  break;
74
127
  }
75
128
  }
76
129
  diagonal = clone[i * dim + i];
77
- if (!diagonal) {
130
+ if (typeof diagonal === "undefined") {
131
+ throw new MatrixSizeError();
132
+ }
133
+ if (diagonal === 0) {
78
134
  throw new SingularMatrixError();
79
135
  }
80
136
  }
81
137
  for (let ii = 0; ii < dim; ii++) {
82
- if (ii == i) {
138
+ if (ii === i) {
83
139
  continue;
84
140
  }
85
141
  const temp = clone[ii * dim + i];
142
+ if (typeof temp === "undefined") {
143
+ throw new MatrixSizeError();
144
+ }
86
145
  for (let j = 0; j < dim; j++) {
87
146
  for (const matrix of [clone, identity]) {
88
- matrix[ii * dim + j] -= temp * matrix[i * dim + j];
147
+ const a = matrix[i * dim + j];
148
+ const b = matrix[ii * dim + j];
149
+ if (typeof a === "undefined" || typeof b === "undefined") {
150
+ throw new MatrixSizeError();
151
+ }
152
+ matrix[ii * dim + j] = b - temp * a;
89
153
  }
90
154
  }
91
155
  }
92
156
  }
93
157
  return identity;
94
158
  }
159
+ /**
160
+ * Calculate the minor of this matrix that results from removing the given row and column.
161
+ * @param row - The row to remove.
162
+ * @param col - The column to remove.
163
+ * @returns The minor.
164
+ * @see [Minor](https://en.wikipedia.org/wiki/Minor_(linear_algebra))
165
+ */
95
166
  minor(row, col) {
96
167
  return this.submatrix(row, col).determinant;
97
168
  }
169
+ /**
170
+ * Create a submatrix by removing the given row and column from this matrix.
171
+ * @param row - The row to remove.
172
+ * @param col - The column to remove.
173
+ * @returns The submatrix.
174
+ */
98
175
  submatrix(row, col) {
99
176
  const cols = [];
100
177
  for (let i = 0; i < this.width; i++) {
101
- if (i == col) {
178
+ if (i === col) {
102
179
  continue;
103
180
  }
104
181
  for (let j = 0; j < this.height; j++) {
105
- if (j == row) {
182
+ if (j === row) {
106
183
  continue;
107
184
  }
108
- (cols[i < col ? i : i - 1] ??= [])[j < row ? j : j - 1] = this[i * this.height + j];
185
+ const a = this[i * this.height + j];
186
+ if (typeof a === "undefined") {
187
+ throw new MatrixSizeError();
188
+ }
189
+ (cols[i < col ? i : i - 1] ??= [])[j < row ? j : j - 1] = a;
109
190
  }
110
191
  }
111
192
  return new SlowSquareMatrix(...cols);
112
193
  }
194
+ /**
195
+ * Transpose this matrix.
196
+ * @returns The transpose of this matrix.
197
+ * @see [Transpose](https://en.wikipedia.org/wiki/Transpose)
198
+ */
113
199
  transpose() {
114
200
  const cols = [];
115
201
  for (let x = 0; x < this.width; x++) {
116
202
  for (let y = 0; y < this.height; y++) {
117
- (cols[y] ??= [])[x] = this[x * this.height + y];
203
+ const a = this[x * this.height + y];
204
+ if (typeof a === "undefined") {
205
+ throw new MatrixSizeError();
206
+ }
207
+ (cols[y] ??= [])[x] = a;
118
208
  }
119
209
  }
120
210
  return new SlowSquareMatrix(...cols);
@@ -1 +1 @@
1
- {"version":3,"file":"SlowSquareMatrix.js","sourceRoot":"","sources":["../../src/linalg/SlowSquareMatrix.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SlowSquareMatrix.js","sourceRoot":"","sources":["../../src/linalg/SlowSquareMatrix.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,31 @@
1
- import type Matrix from "#Matrix";
1
+ import type { default as Matrix, MatrixLike } from "./Matrix.js";
2
+ /**
3
+ * A matrix with the same number of rows and columns.
4
+ * @see [Square matrix](https://en.wikipedia.org/wiki/Square_matrix)
5
+ */
2
6
  export default interface SquareMatrix extends Matrix {
7
+ /**
8
+ * Get the determinant of this matrix.
9
+ * @see [Determinant](https://en.wikipedia.org/wiki/Determinant)
10
+ */
3
11
  get determinant(): number;
4
- adjoint(): Matrix;
12
+ /**
13
+ * Calculate the adjugate of this matrix.
14
+ * @returns The adjugate of this matrix.
15
+ * @see [Adjugate matrix](https://en.wikipedia.org/wiki/Adjugate_matrix)
16
+ */
17
+ adjoint(): MatrixLike;
18
+ /**
19
+ * Reset this matrix to identity.
20
+ * @returns This matrix.
21
+ * @see [Identity matrix](https://en.wikipedia.org/wiki/Identity_matrix)
22
+ */
5
23
  identity(): this;
6
- invert(): SquareMatrix;
24
+ /**
25
+ * Invert this matrix.
26
+ * @returns The inverted matrix.
27
+ * @see [Invertible matrix](https://en.wikipedia.org/wiki/Invertible_matrix)
28
+ */
29
+ invert(): MatrixLike;
7
30
  }
8
31
  //# sourceMappingURL=SquareMatrix.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"SquareMatrix.d.ts","sourceRoot":"","sources":["../../src/linalg/SquareMatrix.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,SAAS,CAAC;AAMlC,MAAM,CAAC,OAAO,WAAW,YAAa,SAAQ,MAAM;IAKnD,IAAI,WAAW,IAAI,MAAM,CAAC;IAO1B,OAAO,IAAI,MAAM,CAAC;IAOlB,QAAQ,IAAI,IAAI,CAAC;IAOjB,MAAM,IAAI,YAAY,CAAC;CACvB"}
1
+ {"version":3,"file":"SquareMatrix.d.ts","sourceRoot":"","sources":["../../src/linalg/SquareMatrix.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,IAAI,MAAM,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEjE;;;GAGG;AACH,MAAM,CAAC,OAAO,WAAW,YAAa,SAAQ,MAAM;IACnD;;;OAGG;IACH,IAAI,WAAW,IAAI,MAAM,CAAC;IAE1B;;;;OAIG;IACH,OAAO,IAAI,UAAU,CAAC;IAEtB;;;;OAIG;IACH,QAAQ,IAAI,IAAI,CAAC;IAEjB;;;;OAIG;IACH,MAAM,IAAI,UAAU,CAAC;CACrB"}
@@ -1,30 +1,154 @@
1
- export type VectorLike = Vector | Iterable<number>;
2
- export default interface Vector extends Iterable<number> {
3
- equals(vector: VectorLike): boolean;
4
- exactEquals(vector: VectorLike): boolean;
5
- add(vector: VectorLike): Vector;
6
- clone(): Vector;
7
- copy(vector: VectorLike): this;
8
- multiply(vector: VectorLike): Vector;
9
- divide(vector: VectorLike): Vector;
10
- subtract(vector: VectorLike): Vector;
11
- ceil(): Vector;
12
- floor(): Vector;
13
- round(): Vector;
14
- min(vector: VectorLike): Vector;
15
- max(vector: VectorLike): Vector;
16
- scale(scalar: number): Vector;
17
- scaleAndAdd(vector: VectorLike, scalar: number): Vector;
18
- distance(vector: VectorLike): number;
19
- squaredDistance(vector: VectorLike): number;
1
+ import type { Vector4Like } from "./Vector4.js";
2
+ /** An object that could be interpreted as a vector. */
3
+ export type VectorLike = Record<number, number>;
4
+ /**
5
+ * A quantity with magnitude and direction.
6
+ * @see [Wikipedia](https://en.wikipedia.org/wiki/Euclidean_vector)
7
+ */
8
+ export default interface Vector extends VectorLike {
9
+ /**
10
+ * Determine whether this vector is roughly equivalent to another.
11
+ * @param vector - The other vector.
12
+ * @returns Whether the vectors are equivalent.
13
+ */
14
+ equals(vector: Vector4Like): boolean;
15
+ /**
16
+ * Determine whether this vector is exactly equivalent to another.
17
+ * @param vector - The other vector.
18
+ * @returns Whether the vectors are equivalent.
19
+ */
20
+ exactEquals(vector: Vector4Like): boolean;
21
+ /**
22
+ * Add two vectors of the same size.
23
+ * @param vector - The other vector.
24
+ * @returns The sum of the vectors.
25
+ */
26
+ add(vector: Vector4Like): VectorLike;
27
+ /**
28
+ * Create a copy of this vector.
29
+ * @returns A copy of this vector.
30
+ */
31
+ clone(): VectorLike;
32
+ /**
33
+ * Copy the values of another vector into this one.
34
+ * @param vector - The vector to copy.
35
+ * @returns This vector.
36
+ */
37
+ copy(vector: Vector4Like): this;
38
+ /**
39
+ * Multiply this vector by another.
40
+ * @param vector - The other vector.
41
+ * @returns The product of the vectors.
42
+ */
43
+ multiply(vector: Vector4Like): VectorLike;
44
+ /**
45
+ * Divide this vector by another.
46
+ * @param vector - The other vector.
47
+ * @returns The quotient of the vectors.
48
+ */
49
+ divide(vector: Vector4Like): VectorLike;
50
+ /**
51
+ * Subtract another vector from this one.
52
+ * @param vector - The other vector.
53
+ * @returns The difference between the vectors.
54
+ */
55
+ subtract(vector: Vector4Like): VectorLike;
56
+ /**
57
+ * Round up the components of this vector.
58
+ * @returns The rounded vector.
59
+ */
60
+ ceil(): VectorLike;
61
+ /**
62
+ * Round down the components of this vector.
63
+ * @returns The rounded vector.
64
+ */
65
+ floor(): VectorLike;
66
+ /**
67
+ * Round the components of this vector.
68
+ * @returns The rounded vector.
69
+ */
70
+ round(): VectorLike;
71
+ /**
72
+ * Return the minimum of this and another vector.
73
+ * @param vector - The other vector.
74
+ * @returns The minimum.
75
+ */
76
+ min(vector: Vector4Like): VectorLike;
77
+ /**
78
+ * Return the maximum of this and another vector.
79
+ * @param vector - The other vector.
80
+ * @returns The maximum.
81
+ */
82
+ max(vector: Vector4Like): VectorLike;
83
+ /**
84
+ * Scale this vector by a scalar.
85
+ * @param scalar - The scalar.
86
+ * @returns The scaled vector.
87
+ */
88
+ scale(scalar: number): VectorLike;
89
+ /**
90
+ * Add another vector to this one after scaling the other by a scalar.
91
+ * @param vector - The other vector.
92
+ * @param scalar - The scalar.
93
+ * @returns The sum.
94
+ */
95
+ scaleAndAdd(vector: Vector4Like, scalar: number): VectorLike;
96
+ /**
97
+ * Calculate the Euclidean distance between this vector and another.
98
+ * @param vector - The other vector.
99
+ * @returns The distance.
100
+ */
101
+ distance(vector: Vector4Like): number;
102
+ /**
103
+ * Calculate the squared Euclidean distance between this vector and another.
104
+ * @param vector - The other vector.
105
+ * @returns The squared distance.
106
+ */
107
+ squaredDistance(vector: Vector4Like): number;
108
+ /** Get the magnitude (length) of this vector. */
20
109
  get magnitude(): number;
110
+ /** Get the squared magnitude (length) of this vector. */
21
111
  get squaredMagnitude(): number;
22
- negate(): Vector;
23
- invert(): Vector;
24
- normalize(): Vector;
25
- dot(vector: VectorLike): number;
26
- lerp(vector: VectorLike, t: number): Vector;
112
+ /**
113
+ * Negate this vector.
114
+ * @returns The negated vector.
115
+ */
116
+ negate(): VectorLike;
117
+ /**
118
+ * Calculate the multiplicative inverse of the components of this vector.
119
+ * @returns The inverted vector.
120
+ */
121
+ invert(): VectorLike;
122
+ /**
123
+ * Normalize this vector.
124
+ * @returns The normalized vector.
125
+ * @see [Unit vector](https://en.wikipedia.org/wiki/Unit_vector)
126
+ */
127
+ normalize(): VectorLike;
128
+ /**
129
+ * Calculate the dot product of this and another vector.
130
+ * @param vector - The other vector.
131
+ * @returns The dot product.
132
+ * @see [Dot product](https://en.wikipedia.org/wiki/Dot_product)
133
+ */
134
+ dot(vector: Vector4Like): number;
135
+ /**
136
+ * Perform a linear interpolation between this and another vector.
137
+ * @param vector - The other vector.
138
+ * @param t - The interpolation amount (in `[0,1]`).
139
+ * @returns The interpolated vector.
140
+ */
141
+ lerp(vector: Vector4Like, t: number): VectorLike;
142
+ /**
143
+ * Set this vector to a random value with the given magnitude.
144
+ * @param magnitude - The magnitude.
145
+ * @returns This vector.
146
+ */
27
147
  random(magnitude: number): this;
148
+ /**
149
+ * Set this to the zero vector.
150
+ * @returns This vector.
151
+ */
28
152
  zero(): this;
29
153
  }
30
154
  //# sourceMappingURL=Vector.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Vector.d.ts","sourceRoot":"","sources":["../../src/linalg/Vector.ts"],"names":[],"mappings":"AACA,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC;AAMnD,MAAM,CAAC,OAAO,WAAW,MAAO,SAAQ,QAAQ,CAAC,MAAM,CAAC;IAMvD,MAAM,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC;IAOpC,WAAW,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC;IAOzC,GAAG,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM,CAAC;IAMhC,KAAK,IAAI,MAAM,CAAC;IAOhB,IAAI,CAAC,MAAM,EAAE,UAAU,GAAG,IAAI,CAAC;IAO/B,QAAQ,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM,CAAC;IAOrC,MAAM,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM,CAAC;IAOnC,QAAQ,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM,CAAC;IAMrC,IAAI,IAAI,MAAM,CAAC;IAMf,KAAK,IAAI,MAAM,CAAC;IAMhB,KAAK,IAAI,MAAM,CAAC;IAOhB,GAAG,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM,CAAC;IAOhC,GAAG,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM,CAAC;IAOhC,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC;IAQ9B,WAAW,CAAC,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC;IAOxD,QAAQ,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM,CAAC;IAQrC,eAAe,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM,CAAC;IAG5C,IAAI,SAAS,IAAI,MAAM,CAAC;IAGxB,IAAI,gBAAgB,IAAI,MAAM,CAAC;IAM/B,MAAM,IAAI,MAAM,CAAC;IAMjB,MAAM,IAAI,MAAM,CAAC;IAOjB,SAAS,IAAI,MAAM,CAAC;IAQpB,GAAG,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM,CAAC;IAQhC,IAAI,CAAC,MAAM,EAAE,UAAU,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAO5C,MAAM,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IAMhC,IAAI,IAAI,IAAI,CAAC;CACb"}
1
+ {"version":3,"file":"Vector.d.ts","sourceRoot":"","sources":["../../src/linalg/Vector.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAEhD,uDAAuD;AACvD,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAEhD;;;GAGG;AACH,MAAM,CAAC,OAAO,WAAW,MAAO,SAAQ,UAAU;IACjD;;;;OAIG;IACH,MAAM,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC;IAErC;;;;OAIG;IACH,WAAW,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC;IAE1C;;;;OAIG;IACH,GAAG,CAAC,MAAM,EAAE,WAAW,GAAG,UAAU,CAAC;IAErC;;;OAGG;IACH,KAAK,IAAI,UAAU,CAAC;IAEpB;;;;OAIG;IACH,IAAI,CAAC,MAAM,EAAE,WAAW,GAAG,IAAI,CAAC;IAEhC;;;;OAIG;IACH,QAAQ,CAAC,MAAM,EAAE,WAAW,GAAG,UAAU,CAAC;IAE1C;;;;OAIG;IACH,MAAM,CAAC,MAAM,EAAE,WAAW,GAAG,UAAU,CAAC;IAExC;;;;OAIG;IACH,QAAQ,CAAC,MAAM,EAAE,WAAW,GAAG,UAAU,CAAC;IAE1C;;;OAGG;IACH,IAAI,IAAI,UAAU,CAAC;IAEnB;;;OAGG;IACH,KAAK,IAAI,UAAU,CAAC;IAEpB;;;OAGG;IACH,KAAK,IAAI,UAAU,CAAC;IAEpB;;;;OAIG;IACH,GAAG,CAAC,MAAM,EAAE,WAAW,GAAG,UAAU,CAAC;IAErC;;;;OAIG;IACH,GAAG,CAAC,MAAM,EAAE,WAAW,GAAG,UAAU,CAAC;IAErC;;;;OAIG;IACH,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,UAAU,CAAC;IAElC;;;;;OAKG;IACH,WAAW,CAAC,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,GAAG,UAAU,CAAC;IAE7D;;;;OAIG;IACH,QAAQ,CAAC,MAAM,EAAE,WAAW,GAAG,MAAM,CAAC;IAEtC;;;;OAIG;IACH,eAAe,CAAC,MAAM,EAAE,WAAW,GAAG,MAAM,CAAC;IAE7C,iDAAiD;IACjD,IAAI,SAAS,IAAI,MAAM,CAAC;IAExB,yDAAyD;IACzD,IAAI,gBAAgB,IAAI,MAAM,CAAC;IAE/B;;;OAGG;IACH,MAAM,IAAI,UAAU,CAAC;IAErB;;;OAGG;IACH,MAAM,IAAI,UAAU,CAAC;IAErB;;;;OAIG;IACH,SAAS,IAAI,UAAU,CAAC;IAExB;;;;;OAKG;IACH,GAAG,CAAC,MAAM,EAAE,WAAW,GAAG,MAAM,CAAC;IAEjC;;;;;OAKG;IACH,IAAI,CAAC,MAAM,EAAE,WAAW,EAAE,CAAC,EAAE,MAAM,GAAG,UAAU,CAAC;IAEjD;;;;OAIG;IACH,MAAM,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IAEhC;;;OAGG;IACH,IAAI,IAAI,IAAI,CAAC;CACb"}