@lakuna/umath 1.0.0 → 1.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (116) hide show
  1. package/dist/algorithms/combinations.js +1 -1
  2. package/dist/algorithms/combinations.js.map +1 -1
  3. package/dist/algorithms/permutations.js +1 -1
  4. package/dist/algorithms/permutations.js.map +1 -1
  5. package/dist/index.d.ts +32 -28
  6. package/dist/index.d.ts.map +1 -1
  7. package/dist/index.js +26 -22
  8. package/dist/index.js.map +1 -1
  9. package/dist/{linear → linalg}/DualQuaternion.d.ts +3 -3
  10. package/dist/{linear → linalg}/DualQuaternion.d.ts.map +1 -1
  11. package/dist/{linear → linalg}/DualQuaternion.js +5 -5
  12. package/dist/linalg/DualQuaternion.js.map +1 -0
  13. package/dist/{linear → linalg}/Matrix.d.ts +4 -5
  14. package/dist/linalg/Matrix.d.ts.map +1 -0
  15. package/dist/{linear → linalg}/Matrix.js.map +1 -1
  16. package/dist/{linear → linalg}/Matrix2.d.ts +2 -2
  17. package/dist/linalg/Matrix2.d.ts.map +1 -0
  18. package/dist/{linear → linalg}/Matrix2.js +2 -1
  19. package/dist/linalg/Matrix2.js.map +1 -0
  20. package/dist/{linear → linalg}/Matrix3.d.ts +4 -4
  21. package/dist/linalg/Matrix3.d.ts.map +1 -0
  22. package/dist/{linear → linalg}/Matrix3.js +2 -1
  23. package/dist/linalg/Matrix3.js.map +1 -0
  24. package/dist/{linear → linalg}/Matrix4.d.ts +5 -4
  25. package/dist/linalg/Matrix4.d.ts.map +1 -0
  26. package/dist/{linear → linalg}/Matrix4.js +5 -1
  27. package/dist/linalg/Matrix4.js.map +1 -0
  28. package/dist/{linear → linalg}/Quaternion.d.ts +3 -3
  29. package/dist/linalg/Quaternion.d.ts.map +1 -0
  30. package/dist/{linear → linalg}/Quaternion.js +2 -3
  31. package/dist/linalg/Quaternion.js.map +1 -0
  32. package/dist/linalg/SlowMatrix.d.ts +18 -0
  33. package/dist/linalg/SlowMatrix.d.ts.map +1 -0
  34. package/dist/linalg/SlowMatrix.js +128 -0
  35. package/dist/linalg/SlowMatrix.js.map +1 -0
  36. package/dist/linalg/SlowSquareMatrix.d.ts +15 -0
  37. package/dist/linalg/SlowSquareMatrix.d.ts.map +1 -0
  38. package/dist/linalg/SlowSquareMatrix.js +119 -0
  39. package/dist/linalg/SlowSquareMatrix.js.map +1 -0
  40. package/dist/{linear → linalg}/SquareMatrix.d.ts +2 -1
  41. package/dist/linalg/SquareMatrix.d.ts.map +1 -0
  42. package/dist/{linear → linalg}/SquareMatrix.js.map +1 -1
  43. package/dist/{linear → linalg}/Vector.d.ts.map +1 -1
  44. package/dist/{linear → linalg}/Vector.js.map +1 -1
  45. package/dist/{linear → linalg}/Vector2.d.ts +5 -5
  46. package/dist/linalg/Vector2.d.ts.map +1 -0
  47. package/dist/{linear → linalg}/Vector2.js +2 -2
  48. package/dist/linalg/Vector2.js.map +1 -0
  49. package/dist/{linear → linalg}/Vector3.d.ts +4 -5
  50. package/dist/linalg/Vector3.d.ts.map +1 -0
  51. package/dist/{linear → linalg}/Vector3.js +3 -3
  52. package/dist/linalg/Vector3.js.map +1 -0
  53. package/dist/{linear → linalg}/Vector4.d.ts +3 -3
  54. package/dist/linalg/Vector4.d.ts.map +1 -0
  55. package/dist/{linear → linalg}/Vector4.js +1 -1
  56. package/dist/linalg/Vector4.js.map +1 -0
  57. package/dist/types/AxisAngle.d.ts +1 -1
  58. package/dist/types/AxisAngle.d.ts.map +1 -1
  59. package/dist/utility/BigNumber.d.ts +1 -1
  60. package/dist/utility/BigNumber.d.ts.map +1 -1
  61. package/dist/utility/BigNumber.js +1 -1
  62. package/dist/utility/BigNumber.js.map +1 -1
  63. package/dist/utility/MagnitudeError.d.ts.map +1 -1
  64. package/dist/utility/MagnitudeError.js +1 -0
  65. package/dist/utility/MagnitudeError.js.map +1 -1
  66. package/dist/utility/MatrixSizeError.d.ts +4 -0
  67. package/dist/utility/MatrixSizeError.d.ts.map +1 -0
  68. package/dist/utility/MatrixSizeError.js +7 -0
  69. package/dist/utility/MatrixSizeError.js.map +1 -0
  70. package/dist/utility/PartialMatrixError.d.ts +4 -0
  71. package/dist/utility/PartialMatrixError.d.ts.map +1 -0
  72. package/dist/utility/PartialMatrixError.js +7 -0
  73. package/dist/utility/PartialMatrixError.js.map +1 -0
  74. package/package.json +17 -9
  75. package/src/algorithms/combinations.ts +1 -1
  76. package/src/algorithms/permutations.ts +1 -1
  77. package/src/index.ts +32 -28
  78. package/src/{linear → linalg}/DualQuaternion.ts +5 -5
  79. package/src/{linear → linalg}/Matrix.ts +17 -24
  80. package/src/{linear → linalg}/Matrix2.ts +4 -2
  81. package/src/{linear → linalg}/Matrix3.ts +6 -4
  82. package/src/{linear → linalg}/Matrix4.ts +8 -4
  83. package/src/{linear → linalg}/Quaternion.ts +5 -4
  84. package/src/linalg/SlowMatrix.ts +231 -0
  85. package/src/linalg/SlowSquareMatrix.ts +205 -0
  86. package/src/{linear → linalg}/SquareMatrix.ts +8 -1
  87. package/src/{linear → linalg}/Vector2.ts +6 -5
  88. package/src/{linear → linalg}/Vector3.ts +6 -6
  89. package/src/{linear → linalg}/Vector4.ts +4 -3
  90. package/src/types/AxisAngle.ts +1 -1
  91. package/src/utility/BigNumber.ts +2 -1
  92. package/src/utility/MagnitudeError.ts +1 -0
  93. package/src/utility/MatrixSizeError.ts +11 -0
  94. package/src/utility/PartialMatrixError.ts +11 -0
  95. package/dist/linear/DualQuaternion.js.map +0 -1
  96. package/dist/linear/Matrix.d.ts.map +0 -1
  97. package/dist/linear/Matrix2.d.ts.map +0 -1
  98. package/dist/linear/Matrix2.js.map +0 -1
  99. package/dist/linear/Matrix3.d.ts.map +0 -1
  100. package/dist/linear/Matrix3.js.map +0 -1
  101. package/dist/linear/Matrix4.d.ts.map +0 -1
  102. package/dist/linear/Matrix4.js.map +0 -1
  103. package/dist/linear/Quaternion.d.ts.map +0 -1
  104. package/dist/linear/Quaternion.js.map +0 -1
  105. package/dist/linear/SquareMatrix.d.ts.map +0 -1
  106. package/dist/linear/Vector2.d.ts.map +0 -1
  107. package/dist/linear/Vector2.js.map +0 -1
  108. package/dist/linear/Vector3.d.ts.map +0 -1
  109. package/dist/linear/Vector3.js.map +0 -1
  110. package/dist/linear/Vector4.d.ts.map +0 -1
  111. package/dist/linear/Vector4.js.map +0 -1
  112. /package/dist/{linear → linalg}/Matrix.js +0 -0
  113. /package/dist/{linear → linalg}/SquareMatrix.js +0 -0
  114. /package/dist/{linear → linalg}/Vector.d.ts +0 -0
  115. /package/dist/{linear → linalg}/Vector.js +0 -0
  116. /package/src/{linear → linalg}/Vector.ts +0 -0
@@ -1,7 +1,11 @@
1
- import { type FieldOfView, MagnitudeError, SingularMatrixError, epsilon, type SquareMatrix, Vector3, Quaternion } from "@lakuna/umath";
2
- import type { DualQuaternionLike } from "@lakuna/umath/DualQuaternion";
3
- import type { QuaternionLike } from "@lakuna/umath/Quaternion";
4
- import type { Vector3Like } from "@lakuna/umath/Vector3";
1
+ import type { DualQuaternionLike } from "#linalg/DualQuaternion";
2
+ import Quaternion, { type QuaternionLike } from "#linalg/Quaternion";
3
+ import type SquareMatrix from "#linalg/SquareMatrix";
4
+ import Vector3, { type Vector3Like } from "#linalg/Vector3";
5
+ import type FieldOfView from "#types/FieldOfView";
6
+ import epsilon from "#utility/epsilon";
7
+ import MagnitudeError from "#utility/MagnitudeError";
8
+ import SingularMatrixError from "#utility/SingularMatrixError";
5
9
 
6
10
  /**
7
11
  * Numbers arranged into four columns and four rows.
@@ -1,7 +1,8 @@
1
- import { epsilon, type AxisAngle } from "@lakuna/umath";
2
- import { type Matrix3Like } from "@lakuna/umath/Matrix3";
3
- import type { Vector3Like } from "@lakuna/umath/Vector3";
4
- import Vector4, { fromValues, copy, add, scale, dot, lerp, getMagnitude, getSquaredMagnitude, normalize, equals, exactEquals, type Vector4Like } from "./Vector4.js";
1
+ import type { Matrix3Like } from "#linalg/Matrix3";
2
+ import type { Vector3Like } from "#linalg/Vector3";
3
+ import Vector4, { add, copy, dot, equals, exactEquals, fromValues, getMagnitude, getSquaredMagnitude, lerp, normalize, scale, type Vector4Like } from "#linalg/Vector4";
4
+ import type AxisAngle from "#types/AxisAngle";
5
+ import epsilon from "#utility/epsilon";
5
6
 
6
7
  /** A complex number that is commonly used to describe rotations. */
7
8
  export type QuaternionLike = Quaternion | [number, number, number, number];
@@ -0,0 +1,231 @@
1
+ import type Matrix from "#linalg/Matrix";
2
+ import epsilon from "#utility/epsilon";
3
+ import MatrixSizeError from "#utility/MatrixSizeError";
4
+ import PartialMatrixError from "#utility/PartialMatrixError";
5
+
6
+ /**
7
+ * A variable-size matrix.
8
+ * @see [Matrix](https://en.wikipedia.org/wiki/Matrix_(mathematics))
9
+ */
10
+ export default class SlowMatrix extends Float32Array implements Matrix {
11
+ /**
12
+ * Creates a variable-size matrix from the given columns.
13
+ * @param cols The columns in the matrix.
14
+ */
15
+ public constructor(...cols: Array<Array<number>>) {
16
+ super(cols.flat());
17
+ this.width = cols.length;
18
+ this.height = this.width && (cols[0] as Array<number>).length;
19
+
20
+ if (this.width < 1 || this.height < 1) {
21
+ throw new MatrixSizeError();
22
+ }
23
+
24
+ // Ensure that every column is the same height.
25
+ for (let i = 0; i < this.width; i++) {
26
+ if ((cols[i]?.length ?? 0) != this.height) {
27
+ throw new PartialMatrixError();
28
+ }
29
+ }
30
+ }
31
+
32
+ /** The number of rows in this matrix. */
33
+ public readonly height: number;
34
+
35
+ /** The number of columns in this matrix. */
36
+ public readonly width: number;
37
+
38
+ /**
39
+ * The Frobenius norm of this matrix.
40
+ * @see [Matrix norm](https://en.wikipedia.org/wiki/Matrix_norm)
41
+ */
42
+ public get frob(): number {
43
+ return Math.hypot(...this);
44
+ }
45
+
46
+ /**
47
+ * Adds two matrices of the same size.
48
+ * @param matrix The other matrix.
49
+ * @returns The sum of the matrices.
50
+ * @see [Matrix addition](https://en.wikipedia.org/wiki/Matrix_addition)
51
+ */
52
+ public add(matrix: Matrix): SlowMatrix {
53
+ if (this.width != matrix.width || this.height != matrix.height) {
54
+ throw new MatrixSizeError();
55
+ }
56
+
57
+ const cols: Array<Array<number>> = [];
58
+ for (let x = 0; x < this.width; x++) {
59
+ for (let y = 0; y < this.height; y++) {
60
+ (cols[x] ??= [])[y] = (this[x * this.height + y] as number) + (matrix[x * matrix.height + y] as number);
61
+ }
62
+ }
63
+
64
+ return new SlowMatrix(...cols);
65
+ }
66
+
67
+ /**
68
+ * Creates a copy of this matrix.
69
+ * @returns A copy of this matrix.
70
+ */
71
+ public clone(): SlowMatrix {
72
+ const cols: Array<Array<number>> = [];
73
+ for (let x = 0; x < this.width; x++) {
74
+ for (let y = 0; y < this.height; y++) {
75
+ (cols[x] ??= [])[y] = this[x * this.height + y] as number;
76
+ }
77
+ }
78
+
79
+ return new SlowMatrix(...cols);
80
+ }
81
+
82
+ /**
83
+ * Copies the values of another matrix into this one.
84
+ * @param matrix The matrix to copy.
85
+ * @returns This matrix.
86
+ */
87
+ public copy(matrix: Matrix): this {
88
+ if (this.width != matrix.width || this.height != matrix.height) {
89
+ throw new MatrixSizeError();
90
+ }
91
+
92
+ for (let x = 0; x < this.width; x++) {
93
+ for (let y = 0; y < this.height; y++) {
94
+ (this[x * this.width + y] as number) = matrix[x * this.height + y] as number;
95
+ }
96
+ }
97
+
98
+ return this;
99
+ }
100
+
101
+ /**
102
+ * Determines whether this matrix is roughly equivalent to another.
103
+ * @param matrix The other matrix.
104
+ * @returns Whether the matrices are equivalent.
105
+ */
106
+ public equals(matrix: Matrix): boolean {
107
+ if (this.width != matrix.width || this.height != matrix.height) {
108
+ return false;
109
+ }
110
+
111
+ for (let i = 0; i < this.length; i++) {
112
+ if (Math.abs((this[i] as number) - (matrix[i] as number)) > epsilon) {
113
+ return false;
114
+ }
115
+ }
116
+
117
+ return true;
118
+ }
119
+
120
+ /**
121
+ * Determines whether this matrix is exactly equivalent to another.
122
+ * @param matrix The other matrix.
123
+ * @returns Whether the matrices are equivalent.
124
+ */
125
+ public exactEquals(matrix: Matrix): boolean {
126
+ if (this.width != matrix.width || this.height != matrix.height) {
127
+ return false;
128
+ }
129
+
130
+ for (let i = 0; i < this.length; i++) {
131
+ if (this[i] != matrix[i]) {
132
+ return false;
133
+ }
134
+ }
135
+
136
+ return true;
137
+ }
138
+
139
+ /**
140
+ * Multiplies this matrix by another.
141
+ * @param matrix The other matrix.
142
+ * @returns The product of the matrices.
143
+ * @see [Matrix multiplication](https://en.wikipedia.org/wiki/Matrix_multiplication)
144
+ */
145
+ public multiply(matrix: Matrix): SlowMatrix {
146
+ if (this.width != matrix.height) {
147
+ throw new MatrixSizeError();
148
+ }
149
+
150
+ const n: number = this.height;
151
+ const m: number = this.width;
152
+ const p: number = matrix.width;
153
+
154
+ const out: Array<Array<number>> = [];
155
+ for (let i = 0; i < n; i++) {
156
+ for (let j = 0; j < p; j++) {
157
+ let sum = 0;
158
+ for (let k = 0; k < m; k++) {
159
+ sum += (this[k * this.height + i] as number) * (matrix[j * matrix.height + k] as number)
160
+ }
161
+ (out[j] ??= [])[i] = sum;
162
+ }
163
+ }
164
+
165
+ return new SlowMatrix(...out);
166
+ }
167
+
168
+ /**
169
+ * Multiplies this matrix by a scalar value.
170
+ * @param scalar The scalar value.
171
+ * @returns The product of the matrix and the scalar value.
172
+ * @see [Matrix multiplication](https://en.wikipedia.org/wiki/Matrix_multiplication)
173
+ */
174
+ public multiplyScalar(scalar: number): SlowMatrix {
175
+ const out = this.clone();
176
+ for (let i = 0; i < out.length; i++) {
177
+ out[i] *= scalar;
178
+ }
179
+
180
+ return out;
181
+ }
182
+
183
+ /**
184
+ * Adds this matrix to another after multiplying the other by a scalar.
185
+ * @param matrix The other matrix.
186
+ * @param scalar The scalar.
187
+ * @returns The sum.
188
+ * @see [Matrix addition](https://en.wikipedia.org/wiki/Matrix_addition)
189
+ * @see [Matrix multiplication](https://en.wikipedia.org/wiki/Matrix_multiplication)
190
+ */
191
+ public multiplyScalarAndAdd(matrix: Matrix, scalar: number): SlowMatrix {
192
+ return this.add(matrix.multiplyScalar(scalar));
193
+ }
194
+
195
+ /**
196
+ * Subtracts another matrix from this one.
197
+ * @param matrix The other matrix.
198
+ * @returns The difference between the matrices.
199
+ * @see [Matrix addition](https://en.wikipedia.org/wiki/Matrix_addition)
200
+ */
201
+ public subtract(matrix: Matrix): SlowMatrix {
202
+ if (this.width != matrix.width || this.height != matrix.height) {
203
+ throw new MatrixSizeError();
204
+ }
205
+
206
+ const cols: Array<Array<number>> = [];
207
+ for (let x = 0; x < this.width; x++) {
208
+ for (let y = 0; y < this.height; y++) {
209
+ (cols[x] ??= [])[y] = (this[x * this.height + y] as number) - (matrix[x * matrix.height + y] as number);
210
+ }
211
+ }
212
+
213
+ return new SlowMatrix(...cols);
214
+ }
215
+
216
+ /**
217
+ * Transposes this matrix.
218
+ * @returns The transpose of this matrix.
219
+ * @see [Transpose](https://en.wikipedia.org/wiki/Transpose)
220
+ */
221
+ public transpose(): SlowMatrix {
222
+ const cols: Array<Array<number>> = [];
223
+ for (let x = 0; x < this.width; x++) {
224
+ for (let y = 0; y < this.height; y++) {
225
+ (cols[y] ??= [])[x] = (this[x * this.height + y] as number);
226
+ }
227
+ }
228
+
229
+ return new SlowMatrix(...cols);
230
+ }
231
+ }
@@ -0,0 +1,205 @@
1
+ import SlowMatrix from "#linalg/SlowMatrix";
2
+ import type SquareMatrix from "#linalg/SquareMatrix";
3
+ import MatrixSizeError from "#utility/MatrixSizeError";
4
+ import SingularMatrixError from "#utility/SingularMatrixError";
5
+
6
+ /**
7
+ * A variable-size matrix with the same number of rows and columns.
8
+ * @see [Square matrix](https://en.wikipedia.org/wiki/Square_matrix)
9
+ */
10
+ export default class SlowSquareMatrix extends SlowMatrix implements SquareMatrix {
11
+ /**
12
+ * Creates a variable-size matrix with the same number of rows and columns from the given columns.
13
+ * @param cols The columns in the matrix.
14
+ * @see [Square matrix](https://en.wikipedia.org/wiki/Square_matrix)
15
+ */
16
+ public constructor(...cols: Array<Array<number>>) {
17
+ super(...cols);
18
+
19
+ // Ensure that every column is the same height and that the height is equal to the width.
20
+ for (let i = 0; i < this.width; i++) {
21
+ if ((cols[i] as Array<number>).length != this.height) {
22
+ throw new MatrixSizeError();
23
+ }
24
+ }
25
+ }
26
+
27
+ /**
28
+ * The determinant of this matrix.
29
+ * @see [Determinant](https://en.wikipedia.org/wiki/Determinant)
30
+ */
31
+ public get determinant(): number {
32
+ if (this.length < 1) {
33
+ throw new MatrixSizeError();
34
+ }
35
+
36
+ if (this.length == 1) {
37
+ return this[0] ?? 0;
38
+ }
39
+
40
+ let out = 0;
41
+ for (let i = 0; i < this.width; i++) {
42
+ out += (this[i * this.height] as number) * (i % 2 ? -1 : 1) * this.minor(0, i);
43
+ }
44
+
45
+ return out;
46
+ }
47
+
48
+ /**
49
+ * Calculates the adjugate of this matrix.
50
+ * @returns The adjugate of this matrix.
51
+ * @see [Adjugate matrix](https://en.wikipedia.org/wiki/Adjugate_matrix)
52
+ */
53
+ public adjoint(): SlowSquareMatrix {
54
+ return this.cofactor().transpose();
55
+ }
56
+
57
+ /**
58
+ * Creates a copy of this matrix.
59
+ * @returns A copy of this matrix.
60
+ */
61
+ public override clone(): SlowSquareMatrix {
62
+ const cols: Array<Array<number>> = [];
63
+ for (let x = 0; x < this.width; x++) {
64
+ for (let y = 0; y < this.height; y++) {
65
+ (cols[x] ??= [])[y] = this[x * this.height + y] as number;
66
+ }
67
+ }
68
+
69
+ return new SlowSquareMatrix(...cols);
70
+ }
71
+
72
+ /**
73
+ * Calculates the cofactor of this matrix.
74
+ * @returns The cofactor.
75
+ * @see [Minor](https://en.wikipedia.org/wiki/Minor_(linear_algebra))
76
+ */
77
+ public cofactor(): SlowSquareMatrix {
78
+ const out: Array<Array<number>> = [];
79
+ for (let i = 0; i < this.width; i++) { // col i
80
+ for (let j = 0; j < this.height; j++) { // row j
81
+ (out[j] ??= [])[i] = ((i + j) % 2 ? -1 : 1) * this.minor(i, j);
82
+ }
83
+ }
84
+
85
+ return new SlowSquareMatrix(...out);
86
+ }
87
+
88
+ /**
89
+ * Resets this matrix to identity.
90
+ * @returns This matrix.
91
+ * @see [Identity matrix](https://en.wikipedia.org/wiki/Identity_matrix)
92
+ */
93
+ public identity(): this {
94
+ for (let i = 0; i < this.width; i++) {
95
+ for (let j = 0; j < this.height; j++) {
96
+ this[i * this.height + j] = i == j ? 1 : 0;
97
+ }
98
+ }
99
+
100
+ return this;
101
+ }
102
+
103
+ /**
104
+ * Inverts this matrix.
105
+ * @returns The inverted matrix.
106
+ * @see [Invertible matrix](https://en.wikipedia.org/wiki/Invertible_matrix)
107
+ */
108
+ public invert(): SlowSquareMatrix {
109
+ const dim: number = this.width;
110
+
111
+ const clone: SlowSquareMatrix = this.clone();
112
+ const identity: SlowSquareMatrix = this.clone().identity();
113
+
114
+ for (let i = 0; i < dim; i++) {
115
+ let diagonal: number = clone[i * dim + i] as number;
116
+ if (!diagonal) {
117
+ for (let ii: number = i + 1; ii < dim; ii++) {
118
+ if (clone[ii * dim + i]) {
119
+ for (let j = 0; j < dim; j++) {
120
+ for (const matrix of [clone, identity]) {
121
+ [matrix[i * dim + j], matrix[ii * dim + j]] = [matrix[ii * dim + j] as number, matrix[i * dim + j] as number];
122
+ }
123
+ }
124
+
125
+ break;
126
+ }
127
+ }
128
+
129
+ diagonal = clone[i * dim + i] as number;
130
+ if (!diagonal) {
131
+ throw new SingularMatrixError();
132
+ }
133
+ }
134
+
135
+ for (let ii = 0; ii < dim; ii++) {
136
+ if (ii == i) {
137
+ continue;
138
+ }
139
+
140
+ const temp: number = clone[ii * dim + i] as number;
141
+
142
+ for (let j = 0; j < dim; j++) {
143
+ for (const matrix of [clone, identity]) {
144
+ matrix[ii * dim + j] -= temp * (matrix[i * dim + j] as number);
145
+ }
146
+ }
147
+ }
148
+ }
149
+
150
+ return identity;
151
+ }
152
+
153
+ /**
154
+ * Calculates the minor of this matrix which results from removing the given row and column.
155
+ * @param row The row to remove.
156
+ * @param col The column to remove.
157
+ * @returns The minor.
158
+ * @see [Minor](https://en.wikipedia.org/wiki/Minor_(linear_algebra))
159
+ */
160
+ public minor(row: number, col: number): number {
161
+ return this.submatrix(row, col).determinant;
162
+ }
163
+
164
+ /**
165
+ * Creates a submatrix by removing the given row and column from this matrix.
166
+ * @param row The row to remove.
167
+ * @param col The column to remove.
168
+ * @returns The submatrix.
169
+ */
170
+ public submatrix(row: number, col: number): SlowSquareMatrix {
171
+ const cols: Array<Array<number>> = [];
172
+
173
+ for (let i = 0; i < this.width; i++) {
174
+ if (i == col) {
175
+ continue;
176
+ }
177
+
178
+ for (let j = 0; j < this.height; j++) {
179
+ if (j == row) {
180
+ continue;
181
+ }
182
+
183
+ (cols[i < col ? i : i - 1] ??= [])[j < row ? j : j - 1] = this[i * this.height + j] as number;
184
+ }
185
+ }
186
+
187
+ return new SlowSquareMatrix(...cols);
188
+ }
189
+
190
+ /**
191
+ * Transposes this matrix.
192
+ * @returns The transpose of this matrix.
193
+ * @see [Transpose](https://en.wikipedia.org/wiki/Transpose)
194
+ */
195
+ public override transpose(): SlowSquareMatrix {
196
+ const cols: Array<Array<number>> = [];
197
+ for (let x = 0; x < this.width; x++) {
198
+ for (let y = 0; y < this.height; y++) {
199
+ (cols[y] ??= [])[x] = (this[x * this.height + y] as number);
200
+ }
201
+ }
202
+
203
+ return new SlowSquareMatrix(...cols);
204
+ }
205
+ }
@@ -1,4 +1,4 @@
1
- import type { Matrix } from "@lakuna/umath";
1
+ import type Matrix from "#linalg/Matrix";
2
2
 
3
3
  /**
4
4
  * A matrix with the same number of rows and columns.
@@ -11,6 +11,13 @@ export default interface SquareMatrix extends Matrix {
11
11
  */
12
12
  get determinant(): number;
13
13
 
14
+ /**
15
+ * Calculates the adjugate of this matrix.
16
+ * @returns The adjugate of this matrix.
17
+ * @see [Adjugate matrix](https://en.wikipedia.org/wiki/Adjugate_matrix)
18
+ */
19
+ adjoint(): Matrix;
20
+
14
21
  /**
15
22
  * Resets this matrix to identity.
16
23
  * @returns This matrix.
@@ -1,8 +1,9 @@
1
- import { epsilon, type Vector } from "@lakuna/umath";
2
- import type { Matrix2Like } from "@lakuna/umath/Matrix2";
3
- import type { Matrix3Like } from "@lakuna/umath/Matrix3";
4
- import type { Matrix4Like } from "@lakuna/umath/Matrix4";
5
- import Vector3, { type Vector3Like } from "@lakuna/umath/Vector3";
1
+ import type { Matrix2Like } from "#linalg/Matrix2";
2
+ import type { Matrix3Like } from "#linalg/Matrix3";
3
+ import type { Matrix4Like } from "#linalg/Matrix4";
4
+ import type Vector from "#linalg/Vector";
5
+ import Vector3, { type Vector3Like } from "#linalg/Vector3";
6
+ import epsilon from "#utility/epsilon";
6
7
 
7
8
  /** A quantity with magnitude and direction in two dimensions. */
8
9
  export type Vector2Like = Vector2 | [number, number];
@@ -1,9 +1,9 @@
1
- import { type Vector, epsilon } from "@lakuna/umath";
2
- import type { Matrix3Like } from "@lakuna/umath/Matrix3";
3
- import type { Matrix4Like } from "@lakuna/umath/Matrix4";
4
- import type { QuaternionLike } from "@lakuna/umath/Quaternion";
5
- import Quaternion from "@lakuna/umath/Quaternion";
6
- import { normalize as normalizeVector4, type Vector4Like } from "@lakuna/umath/Vector4";
1
+ import type { Matrix3Like } from "#linalg/Matrix3";
2
+ import type { Matrix4Like } from "#linalg/Matrix4";
3
+ import Quaternion, { type QuaternionLike } from "#linalg/Quaternion";
4
+ import type Vector from "#linalg/Vector";
5
+ import { normalize as normalizeVector4, type Vector4Like } from "#linalg/Vector4";
6
+ import epsilon from "#utility/epsilon";
7
7
 
8
8
  /** A quantity with magnitude and direction in three dimensions. */
9
9
  export type Vector3Like = Vector3 | [number, number, number];
@@ -1,6 +1,7 @@
1
- import { type Vector, epsilon } from "@lakuna/umath";
2
- import type { Matrix4Like } from "@lakuna/umath/Matrix4";
3
- import type { QuaternionLike } from "@lakuna/umath/Quaternion";
1
+ import type { Matrix4Like } from "#linalg/Matrix4";
2
+ import type { QuaternionLike } from "#linalg/Quaternion";
3
+ import type Vector from "#linalg/Vector";
4
+ import epsilon from "#utility/epsilon";
4
5
 
5
6
  /** A quantity with magnitude and direction in four dimensions. */
6
7
  export type Vector4Like = Vector4 | [number, number, number, number];
@@ -1,4 +1,4 @@
1
- import type { Vector3Like } from "@lakuna/umath/Vector3";
1
+ import type { Vector3Like } from "#linalg/Vector3";
2
2
 
3
3
  /** An axis and an angle to rotate around it. */
4
4
  export default interface AxisAngle {
@@ -1,4 +1,5 @@
1
- import { greatestCommonDivisor, type IntegerRepresentation } from "@lakuna/umath";
1
+ import greatestCommonDivisor from "#algorithms/greatestCommonDivisor";
2
+ import type { IntegerRepresentation } from "#types/IntegerRepresentation";
2
3
 
3
4
  /** A number with no maximum precise size. */
4
5
  export default class BigNumber {
@@ -6,5 +6,6 @@ export default class MagnitudeError extends Error {
6
6
  */
7
7
  public constructor(message = "The vector is too small.") {
8
8
  super(message);
9
+ this.name = "MagnitudeError";
9
10
  }
10
11
  }
@@ -0,0 +1,11 @@
1
+ /** An error resulting from trying to use a matrix that is the wrong size. */
2
+ export default class PartialMatrixError extends Error {
3
+ /**
4
+ * Creates an error resulting from trying to use a matrix that is the wrong size.
5
+ * @param message The message of the error.
6
+ */
7
+ public constructor(message = "Invalid matrix dimensions.") {
8
+ super(message);
9
+ this.name = "MatrixSizeError";
10
+ }
11
+ }
@@ -0,0 +1,11 @@
1
+ /** An error resulting from creating a matrix that isn't a perfect rectangle. */
2
+ export default class PartialMatrixError extends Error {
3
+ /**
4
+ * Creates an error resulting from creating a matrix that isn't a perfect rectangle.
5
+ * @param message The message of the error.
6
+ */
7
+ public constructor(message = "The matrix is not rectangular.") {
8
+ super(message);
9
+ this.name = "PartialMatrixError";
10
+ }
11
+ }
@@ -1 +0,0 @@
1
- {"version":3,"file":"DualQuaternion.js","sourceRoot":"","sources":["../../src/linear/DualQuaternion.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"Matrix.d.ts","sourceRoot":"","sources":["../../src/linear/Matrix.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC;AAMpD,MAAM,CAAC,OAAO,WAAW,MAAO,SAAQ,SAAS,CAAC,MAAM,CAAC;IAExD,KAAK,EAAE,MAAM,CAAC;IAGd,MAAM,EAAE,MAAM,CAAC;IAOf,MAAM,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC;IAOpC,WAAW,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC;IAQzC,GAAG,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM,CAAC;IAOhC,OAAO,IAAI,MAAM,CAAC;IAMlB,KAAK,IAAI,MAAM,CAAC;IAOhB,IAAI,CAAC,MAAM,EAAE,UAAU,GAAG,IAAI,CAAC;IAM/B,IAAI,IAAI,IAAI,MAAM,CAAC;IAQnB,QAAQ,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM,CAAC;IAQrC,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC;IAUvC,oBAAoB,CAAC,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC;IAQjE,QAAQ,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM,CAAC;IAOrC,SAAS,IAAI,MAAM,CAAC;CACpB"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"Matrix2.d.ts","sourceRoot":"","sources":["../../src/linear/Matrix2.ts"],"names":[],"mappings":"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"}