@pawells/math-extended 2.0.0 → 3.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.
- package/README.md +15 -21
- package/build/clamp.d.ts +5 -5
- package/build/clamp.js +5 -5
- package/build/core.d.ts +23 -0
- package/build/core.d.ts.map +1 -0
- package/build/core.js +25 -0
- package/build/core.js.map +1 -0
- package/build/index.d.ts +1 -4
- package/build/index.d.ts.map +1 -1
- package/build/index.js +1 -6
- package/build/index.js.map +1 -1
- package/build/interpolation.d.ts +158 -171
- package/build/interpolation.d.ts.map +1 -1
- package/build/interpolation.js +162 -181
- package/build/interpolation.js.map +1 -1
- package/build/matrices/arithmetic.d.ts +132 -132
- package/build/matrices/arithmetic.d.ts.map +1 -1
- package/build/matrices/arithmetic.js +194 -226
- package/build/matrices/arithmetic.js.map +1 -1
- package/build/matrices/asserts.d.ts +30 -408
- package/build/matrices/asserts.d.ts.map +1 -1
- package/build/matrices/asserts.js +98 -542
- package/build/matrices/asserts.js.map +1 -1
- package/build/matrices/core.d.ts +117 -46
- package/build/matrices/core.d.ts.map +1 -1
- package/build/matrices/core.js +127 -103
- package/build/matrices/core.js.map +1 -1
- package/build/matrices/decompositions.d.ts +95 -96
- package/build/matrices/decompositions.d.ts.map +1 -1
- package/build/matrices/decompositions.js +119 -160
- package/build/matrices/decompositions.js.map +1 -1
- package/build/matrices/index.d.ts +0 -1
- package/build/matrices/index.d.ts.map +1 -1
- package/build/matrices/index.js +0 -3
- package/build/matrices/index.js.map +1 -1
- package/build/matrices/linear-algebra.d.ts +45 -8
- package/build/matrices/linear-algebra.d.ts.map +1 -1
- package/build/matrices/linear-algebra.js +76 -32
- package/build/matrices/linear-algebra.js.map +1 -1
- package/build/matrices/normalization.d.ts +29 -8
- package/build/matrices/normalization.d.ts.map +1 -1
- package/build/matrices/normalization.js +32 -23
- package/build/matrices/normalization.js.map +1 -1
- package/build/matrices/transformations.d.ts +116 -148
- package/build/matrices/transformations.d.ts.map +1 -1
- package/build/matrices/transformations.js +69 -91
- package/build/matrices/transformations.js.map +1 -1
- package/build/matrices/types.d.ts +32 -60
- package/build/matrices/types.d.ts.map +1 -1
- package/build/matrices/types.js +63 -1
- package/build/matrices/types.js.map +1 -1
- package/build/quaternions/asserts.d.ts +29 -38
- package/build/quaternions/asserts.d.ts.map +1 -1
- package/build/quaternions/asserts.js +61 -77
- package/build/quaternions/asserts.js.map +1 -1
- package/build/quaternions/conversions.d.ts +26 -26
- package/build/quaternions/conversions.d.ts.map +1 -1
- package/build/quaternions/conversions.js +24 -24
- package/build/quaternions/core.d.ts +70 -69
- package/build/quaternions/core.d.ts.map +1 -1
- package/build/quaternions/core.js +71 -71
- package/build/quaternions/core.js.map +1 -1
- package/build/quaternions/index.d.ts +0 -1
- package/build/quaternions/index.d.ts.map +1 -1
- package/build/quaternions/index.js +0 -2
- package/build/quaternions/index.js.map +1 -1
- package/build/quaternions/interpolation.d.ts +16 -16
- package/build/quaternions/interpolation.d.ts.map +1 -1
- package/build/quaternions/interpolation.js +21 -21
- package/build/quaternions/interpolation.js.map +1 -1
- package/build/quaternions/predefined.d.ts +10 -10
- package/build/quaternions/predefined.d.ts.map +1 -1
- package/build/quaternions/predefined.js +9 -9
- package/build/quaternions/types.d.ts +23 -12
- package/build/quaternions/types.d.ts.map +1 -1
- package/build/quaternions/types.js +51 -1
- package/build/quaternions/types.js.map +1 -1
- package/build/random.d.ts +66 -20
- package/build/random.d.ts.map +1 -1
- package/build/random.js +73 -20
- package/build/random.js.map +1 -1
- package/build/vectors/asserts.d.ts +50 -220
- package/build/vectors/asserts.d.ts.map +1 -1
- package/build/vectors/asserts.js +141 -327
- package/build/vectors/asserts.js.map +1 -1
- package/build/vectors/core.d.ts +182 -229
- package/build/vectors/core.d.ts.map +1 -1
- package/build/vectors/core.js +234 -288
- package/build/vectors/core.js.map +1 -1
- package/build/vectors/index.d.ts +0 -1
- package/build/vectors/index.d.ts.map +1 -1
- package/build/vectors/index.js +0 -2
- package/build/vectors/index.js.map +1 -1
- package/build/vectors/interpolation.d.ts +40 -40
- package/build/vectors/interpolation.d.ts.map +1 -1
- package/build/vectors/interpolation.js +75 -86
- package/build/vectors/interpolation.js.map +1 -1
- package/build/vectors/predefined.d.ts +31 -7
- package/build/vectors/predefined.d.ts.map +1 -1
- package/build/vectors/predefined.js +30 -6
- package/build/vectors/predefined.js.map +1 -1
- package/build/vectors/types.d.ts +26 -4
- package/build/vectors/types.d.ts.map +1 -1
- package/build/vectors/types.js +50 -1
- package/build/vectors/types.js.map +1 -1
- package/package.json +3 -2
- package/build/matrices/_exports.d.ts +0 -13
- package/build/matrices/_exports.d.ts.map +0 -1
- package/build/matrices/_exports.js +0 -13
- package/build/matrices/_exports.js.map +0 -1
- package/build/quaternions/_exports.d.ts +0 -11
- package/build/quaternions/_exports.d.ts.map +0 -1
- package/build/quaternions/_exports.js +0 -11
- package/build/quaternions/_exports.js.map +0 -1
- package/build/vectors/_exports.d.ts +0 -10
- package/build/vectors/_exports.d.ts.map +0 -1
- package/build/vectors/_exports.js +0 -10
- package/build/vectors/_exports.js.map +0 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { AssertMatrix,
|
|
1
|
+
import { AssertMatrix, MatrixError } from './asserts.js';
|
|
2
2
|
import { MatrixSize } from './core.js';
|
|
3
3
|
import { MatrixSVD } from './decompositions.js';
|
|
4
4
|
/**
|
|
@@ -6,7 +6,10 @@ import { MatrixSVD } from './decompositions.js';
|
|
|
6
6
|
* @param matrix - The input matrix (any dimensions)
|
|
7
7
|
* @returns {number} The Frobenius norm (always non-negative)
|
|
8
8
|
* @throws {Error} If the matrix contains invalid values
|
|
9
|
-
* @example
|
|
9
|
+
* @example
|
|
10
|
+
* ```typescript
|
|
11
|
+
* MatrixFrobeniusNorm([[3, 4], [0, 0]]) // 5 (sqrt(3² + 4²))
|
|
12
|
+
* ```
|
|
10
13
|
*/
|
|
11
14
|
export function MatrixFrobeniusNorm(matrix) {
|
|
12
15
|
AssertMatrix(matrix);
|
|
@@ -14,10 +17,8 @@ export function MatrixFrobeniusNorm(matrix) {
|
|
|
14
17
|
let sum = 0;
|
|
15
18
|
for (let row = 0; row < rows; row++) {
|
|
16
19
|
const matrixRow = matrix[row];
|
|
17
|
-
AssertMatrixRow(matrixRow, { rowIndex: row });
|
|
18
20
|
for (let col = 0; col < cols; col++) {
|
|
19
21
|
const val = matrixRow[col];
|
|
20
|
-
AssertMatrixValue(val, { rowIndex: row, columnIndex: col });
|
|
21
22
|
// Add square of each element to the sum
|
|
22
23
|
sum += val * val;
|
|
23
24
|
}
|
|
@@ -30,7 +31,10 @@ export function MatrixFrobeniusNorm(matrix) {
|
|
|
30
31
|
* @param matrix - The input matrix
|
|
31
32
|
* @returns {number} The spectral norm (always non-negative)
|
|
32
33
|
* @throws {Error} If the matrix contains invalid values
|
|
33
|
-
* @example
|
|
34
|
+
* @example
|
|
35
|
+
* ```typescript
|
|
36
|
+
* MatrixSpectralNorm([[3, 0], [0, 4]]) // 4 (largest singular value)
|
|
37
|
+
* ```
|
|
34
38
|
*/
|
|
35
39
|
export function MatrixSpectralNorm(matrix) {
|
|
36
40
|
AssertMatrix(matrix);
|
|
@@ -47,7 +51,10 @@ export function MatrixSpectralNorm(matrix) {
|
|
|
47
51
|
* @param matrix - The input matrix
|
|
48
52
|
* @returns {number} The 1-norm (always non-negative)
|
|
49
53
|
* @throws {Error} If the matrix contains invalid values
|
|
50
|
-
* @example
|
|
54
|
+
* @example
|
|
55
|
+
* ```typescript
|
|
56
|
+
* Matrix1Norm([[1, 2], [3, 4]]) // 6 (max of column sums: 4, 6)
|
|
57
|
+
* ```
|
|
51
58
|
*/
|
|
52
59
|
export function Matrix1Norm(matrix) {
|
|
53
60
|
AssertMatrix(matrix);
|
|
@@ -59,9 +66,7 @@ export function Matrix1Norm(matrix) {
|
|
|
59
66
|
// Sum absolute values in this column
|
|
60
67
|
for (let row = 0; row < rows; row++) {
|
|
61
68
|
const matrixRow = matrix[row];
|
|
62
|
-
AssertMatrixRow(matrixRow, { rowIndex: row });
|
|
63
69
|
const val = matrixRow[col];
|
|
64
|
-
AssertMatrixValue(val, { rowIndex: row, columnIndex: col });
|
|
65
70
|
columnSum += Math.abs(val);
|
|
66
71
|
}
|
|
67
72
|
maxColumnSum = Math.max(maxColumnSum, columnSum);
|
|
@@ -73,7 +78,10 @@ export function Matrix1Norm(matrix) {
|
|
|
73
78
|
* @param matrix - The input matrix
|
|
74
79
|
* @returns {number} The infinity norm (always non-negative)
|
|
75
80
|
* @throws {Error} If the matrix contains invalid values
|
|
76
|
-
* @example
|
|
81
|
+
* @example
|
|
82
|
+
* ```typescript
|
|
83
|
+
* MatrixInfinityNorm([[1, 2], [3, 4]]) // 7 (max of row sums: 3, 7)
|
|
84
|
+
* ```
|
|
77
85
|
*/
|
|
78
86
|
export function MatrixInfinityNorm(matrix) {
|
|
79
87
|
AssertMatrix(matrix);
|
|
@@ -82,12 +90,10 @@ export function MatrixInfinityNorm(matrix) {
|
|
|
82
90
|
// Iterate through each row
|
|
83
91
|
for (let row = 0; row < rows; row++) {
|
|
84
92
|
const matrixRow = matrix[row];
|
|
85
|
-
AssertMatrixRow(matrixRow, { rowIndex: row });
|
|
86
93
|
let rowSum = 0;
|
|
87
94
|
// Sum absolute values in this row
|
|
88
95
|
for (let col = 0; col < cols; col++) {
|
|
89
96
|
const val = matrixRow[col];
|
|
90
|
-
AssertMatrixValue(val, { rowIndex: row, columnIndex: col });
|
|
91
97
|
rowSum += Math.abs(val);
|
|
92
98
|
}
|
|
93
99
|
maxRowSum = Math.max(maxRowSum, rowSum);
|
|
@@ -100,7 +106,10 @@ export function MatrixInfinityNorm(matrix) {
|
|
|
100
106
|
* @param matrix - The input matrix
|
|
101
107
|
* @returns {number} The nuclear norm (always non-negative)
|
|
102
108
|
* @throws {Error} If the matrix contains invalid values
|
|
103
|
-
* @example
|
|
109
|
+
* @example
|
|
110
|
+
* ```typescript
|
|
111
|
+
* MatrixNuclearNorm([[3, 0], [0, 4]]) // 7 (sum of singular values: 3 + 4)
|
|
112
|
+
* ```
|
|
104
113
|
*/
|
|
105
114
|
export function MatrixNuclearNorm(matrix) {
|
|
106
115
|
AssertMatrix(matrix);
|
|
@@ -118,7 +127,10 @@ export function MatrixNuclearNorm(matrix) {
|
|
|
118
127
|
* @param matrix - The input matrix
|
|
119
128
|
* @returns {number} The max norm (always non-negative)
|
|
120
129
|
* @throws {Error} If the matrix contains invalid values
|
|
121
|
-
* @example
|
|
130
|
+
* @example
|
|
131
|
+
* ```typescript
|
|
132
|
+
* MatrixMaxNorm([[1, -5], [3, 2]]) // 5 (max absolute value)
|
|
133
|
+
* ```
|
|
122
134
|
*/
|
|
123
135
|
export function MatrixMaxNorm(matrix) {
|
|
124
136
|
AssertMatrix(matrix);
|
|
@@ -126,10 +138,8 @@ export function MatrixMaxNorm(matrix) {
|
|
|
126
138
|
let maxValue = 0;
|
|
127
139
|
for (let row = 0; row < rows; row++) {
|
|
128
140
|
const matrixRow = matrix[row];
|
|
129
|
-
AssertMatrixRow(matrixRow, { rowIndex: row });
|
|
130
141
|
for (let col = 0; col < cols; col++) {
|
|
131
142
|
const val = matrixRow[col];
|
|
132
|
-
AssertMatrixValue(val, { rowIndex: row, columnIndex: col });
|
|
133
143
|
maxValue = Math.max(maxValue, Math.abs(val));
|
|
134
144
|
}
|
|
135
145
|
}
|
|
@@ -141,24 +151,23 @@ export function MatrixMaxNorm(matrix) {
|
|
|
141
151
|
* @param p - The norm parameter (must be >= 1)
|
|
142
152
|
* @returns {number} The p-norm (always non-negative)
|
|
143
153
|
* @throws {Error} If the matrix contains invalid values or p < 1
|
|
144
|
-
* @example
|
|
154
|
+
* @example
|
|
155
|
+
* ```typescript
|
|
156
|
+
* MatrixPNorm([[1, 2], [3, 4]], 1) // 10 (sum of absolute values)
|
|
157
|
+
* ```
|
|
145
158
|
*/
|
|
146
159
|
export function MatrixPNorm(matrix, p) {
|
|
147
160
|
AssertMatrix(matrix);
|
|
148
|
-
if (p < 1)
|
|
149
|
-
throw new
|
|
150
|
-
|
|
151
|
-
if (p === Infinity) {
|
|
161
|
+
if (p < 1)
|
|
162
|
+
throw new MatrixError('p-norm parameter must be >= 1');
|
|
163
|
+
if (p === Infinity)
|
|
152
164
|
return MatrixMaxNorm(matrix);
|
|
153
|
-
}
|
|
154
165
|
const [rows, cols] = MatrixSize(matrix);
|
|
155
166
|
let sum = 0;
|
|
156
167
|
for (let row = 0; row < rows; row++) {
|
|
157
168
|
const matrixRow = matrix[row];
|
|
158
|
-
AssertMatrixRow(matrixRow, { rowIndex: row });
|
|
159
169
|
for (let col = 0; col < cols; col++) {
|
|
160
170
|
const val = matrixRow[col];
|
|
161
|
-
AssertMatrixValue(val, { rowIndex: row, columnIndex: col });
|
|
162
171
|
sum += Math.pow(Math.abs(val), p);
|
|
163
172
|
}
|
|
164
173
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"normalization.js","sourceRoot":"","sources":["../../src/matrices/normalization.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,
|
|
1
|
+
{"version":3,"file":"normalization.js","sourceRoot":"","sources":["../../src/matrices/normalization.ts"],"names":[],"mappings":"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"}
|
|
@@ -13,8 +13,8 @@
|
|
|
13
13
|
* All matrices use homogeneous coordinates for consistent transformation composition.
|
|
14
14
|
* 2D transformations use 3x3 matrices, 3D transformations use 4x4 matrices.
|
|
15
15
|
*/
|
|
16
|
-
import { TMatrix3, TMatrix4 } from './types.js';
|
|
17
|
-
import { TVector2, TVector3 } from '../vectors/types.js';
|
|
16
|
+
import type { TMatrix3, TMatrix4 } from './types.js';
|
|
17
|
+
import type { TVector2, TVector3 } from '../vectors/types.js';
|
|
18
18
|
/**
|
|
19
19
|
* Creates a 2D rotation matrix for rotating points around the origin.
|
|
20
20
|
*
|
|
@@ -35,14 +35,12 @@ import { TVector2, TVector3 } from '../vectors/types.js';
|
|
|
35
35
|
* @throws {Error} If radians is not a finite number
|
|
36
36
|
*
|
|
37
37
|
* @example
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
* ```
|
|
45
|
-
* ```
|
|
38
|
+
* ```typescript
|
|
39
|
+
* // 90-degree counterclockwise rotation
|
|
40
|
+
* const matrix = MatrixRotation2D(Math.PI / 2);
|
|
41
|
+
* // 45-degree clockwise rotation
|
|
42
|
+
* const clockwise = MatrixRotation2D(-Math.PI / 4);
|
|
43
|
+
* ```
|
|
46
44
|
*/
|
|
47
45
|
export declare function MatrixRotation2D(radians: number): TMatrix3;
|
|
48
46
|
/**
|
|
@@ -66,12 +64,10 @@ export declare function MatrixRotation2D(radians: number): TMatrix3;
|
|
|
66
64
|
* @throws {Error} If radians is not a finite number
|
|
67
65
|
*
|
|
68
66
|
* @example
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
* ```
|
|
74
|
-
* ```
|
|
67
|
+
* ```typescript
|
|
68
|
+
* // 45-degree roll (banking left in aviation)
|
|
69
|
+
* const rollMatrix = MatrixRotation3DRoll(Math.PI / 4);
|
|
70
|
+
* ```
|
|
75
71
|
*/
|
|
76
72
|
export declare function MatrixRotation3DRoll(radians: number): TMatrix4;
|
|
77
73
|
/**
|
|
@@ -95,12 +91,10 @@ export declare function MatrixRotation3DRoll(radians: number): TMatrix4;
|
|
|
95
91
|
* @throws {Error} If radians is not a finite number
|
|
96
92
|
*
|
|
97
93
|
* @example
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
* ```
|
|
103
|
-
* ```
|
|
94
|
+
* ```typescript
|
|
95
|
+
* // 30-degree pitch up
|
|
96
|
+
* const pitchMatrix = MatrixRotation3DPitch(Math.PI / 6);
|
|
97
|
+
* ```
|
|
104
98
|
*/
|
|
105
99
|
export declare function MatrixRotation3DPitch(radians: number): TMatrix4;
|
|
106
100
|
/**
|
|
@@ -124,12 +118,10 @@ export declare function MatrixRotation3DPitch(radians: number): TMatrix4;
|
|
|
124
118
|
* @throws {Error} If radians is not a finite number
|
|
125
119
|
*
|
|
126
120
|
* @example
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
* ```
|
|
132
|
-
* ```
|
|
121
|
+
* ```typescript
|
|
122
|
+
* // 60-degree yaw left
|
|
123
|
+
* const yawMatrix = MatrixRotation3DYaw(Math.PI / 3);
|
|
124
|
+
* ```
|
|
133
125
|
*/
|
|
134
126
|
export declare function MatrixRotation3DYaw(radians: number): TMatrix4;
|
|
135
127
|
/**
|
|
@@ -151,15 +143,13 @@ export declare function MatrixRotation3DYaw(radians: number): TMatrix4;
|
|
|
151
143
|
* @throws {Error} If any angle is not a finite number
|
|
152
144
|
*
|
|
153
145
|
* @example
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
* ```
|
|
162
|
-
* ```
|
|
146
|
+
* ```typescript
|
|
147
|
+
* // Using individual angles (banking, elevation, heading)
|
|
148
|
+
* const rotationMatrix = MatrixRotation3D(0.1, 0.2, 0.3);
|
|
149
|
+
* // Using vector input
|
|
150
|
+
* const eulerAngles: TVector3 = [0.1, 0.2, 0.3];
|
|
151
|
+
* const rotationMatrix2 = MatrixRotation3D(eulerAngles);
|
|
152
|
+
* ```
|
|
163
153
|
*/
|
|
164
154
|
export declare function MatrixRotation3D(roll: number, pitch: number, yaw: number): TMatrix4;
|
|
165
155
|
export declare function MatrixRotation3D(v: TVector3): TMatrix4;
|
|
@@ -180,15 +170,13 @@ export declare function MatrixRotation3D(v: TVector3): TMatrix4;
|
|
|
180
170
|
* @throws {Error} If any angle is not a finite number
|
|
181
171
|
*
|
|
182
172
|
* @example
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
* ```
|
|
191
|
-
* ```
|
|
173
|
+
* ```typescript
|
|
174
|
+
* // Using individual angles in degrees
|
|
175
|
+
* const rotation = MatrixRotation3DEulerAngles(45, 30, 60);
|
|
176
|
+
* // Using vector input in degrees
|
|
177
|
+
* const angles: TVector3 = [45, 30, 60];
|
|
178
|
+
* const rotation2 = MatrixRotation3DEulerAngles(angles);
|
|
179
|
+
* ```
|
|
192
180
|
*/
|
|
193
181
|
export declare function MatrixRotation3DEulerAngles(roll: number, pitch: number, yaw: number): TMatrix4;
|
|
194
182
|
export declare function MatrixRotation3DEulerAngles(v: TVector3): TMatrix4;
|
|
@@ -218,19 +206,17 @@ export declare function MatrixRotation3DEulerAngles(v: TVector3): TMatrix4;
|
|
|
218
206
|
* @throws {Error} If any scale factor is not a finite number
|
|
219
207
|
*
|
|
220
208
|
* @example
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
* ```
|
|
233
|
-
* ```
|
|
209
|
+
* ```typescript
|
|
210
|
+
* // Uniform scaling (double size)
|
|
211
|
+
* const uniform = MatrixScale2D(2.0);
|
|
212
|
+
* // Independent scaling (stretch horizontally, compress vertically)
|
|
213
|
+
* const stretch = MatrixScale2D(2.0, 0.5);
|
|
214
|
+
* // Vector input
|
|
215
|
+
* const scaleVector: TVector2 = [1.5, 0.8];
|
|
216
|
+
* const vectorScale = MatrixScale2D(scaleVector);
|
|
217
|
+
* // Flip horizontally
|
|
218
|
+
* const flip = MatrixScale2D(-1, 1);
|
|
219
|
+
* ```
|
|
234
220
|
*/
|
|
235
221
|
export declare function MatrixScale2D(scale: number): TMatrix3;
|
|
236
222
|
export declare function MatrixScale2D(x: number, y: number): TMatrix3;
|
|
@@ -263,19 +249,17 @@ export declare function MatrixScale2D(v: TVector2): TMatrix3;
|
|
|
263
249
|
* @throws {Error} If any scale factor is not a finite number
|
|
264
250
|
*
|
|
265
251
|
* @example
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
* ```
|
|
278
|
-
* ```
|
|
252
|
+
* ```typescript
|
|
253
|
+
* // Uniform scaling (triple size)
|
|
254
|
+
* const uniform = MatrixScale3D(3.0);
|
|
255
|
+
* // Independent scaling (stretch, compress, normal)
|
|
256
|
+
* const stretch = MatrixScale3D(2.0, 0.5, 1.0);
|
|
257
|
+
* // Vector input
|
|
258
|
+
* const scaleVector: TVector3 = [1.5, 0.8, 2.0];
|
|
259
|
+
* const vectorScale = MatrixScale3D(scaleVector);
|
|
260
|
+
* // Mirror across XY plane
|
|
261
|
+
* const mirror = MatrixScale3D(1, 1, -1);
|
|
262
|
+
* ```
|
|
279
263
|
*/
|
|
280
264
|
export declare function MatrixScale3D(scale: number): TMatrix4;
|
|
281
265
|
export declare function MatrixScale3D(x: number, y: number, z: number): TMatrix4;
|
|
@@ -299,15 +283,13 @@ export declare function MatrixScale3D(v: TVector3): TMatrix4;
|
|
|
299
283
|
* @throws {Error} If the input is not a valid 2D vector
|
|
300
284
|
*
|
|
301
285
|
* @example
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
* ```
|
|
310
|
-
* ```
|
|
286
|
+
* ```typescript
|
|
287
|
+
* // Move 10 units right, 5 units up
|
|
288
|
+
* const translation = MatrixTranslation2D(10, 5);
|
|
289
|
+
* // Using vector input
|
|
290
|
+
* const offset: TVector2 = [10, 5];
|
|
291
|
+
* const translation2 = MatrixTranslation2D(...offset);
|
|
292
|
+
* ```
|
|
311
293
|
*/
|
|
312
294
|
export declare function MatrixTranslation2D(...v: TVector2): TMatrix3;
|
|
313
295
|
/**
|
|
@@ -337,17 +319,15 @@ export declare function MatrixTranslation2D(...v: TVector2): TMatrix3;
|
|
|
337
319
|
* @throws {Error} If any translation distance is not a finite number
|
|
338
320
|
*
|
|
339
321
|
* @example
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
* ```
|
|
350
|
-
* ```
|
|
322
|
+
* ```typescript
|
|
323
|
+
* // Uniform translation (move 5 units in all directions)
|
|
324
|
+
* const uniform = MatrixTranslation3D(5.0);
|
|
325
|
+
* // Independent translation
|
|
326
|
+
* const independent = MatrixTranslation3D(10, -5, 3);
|
|
327
|
+
* // Vector input
|
|
328
|
+
* const offset: TVector3 = [10, -5, 3];
|
|
329
|
+
* const vectorTranslation = MatrixTranslation3D(...offset);
|
|
330
|
+
* ```
|
|
351
331
|
*/
|
|
352
332
|
export declare function MatrixTranslation3D(translation: number): TMatrix4;
|
|
353
333
|
export declare function MatrixTranslation3D(x: number, y: number, z: number): TMatrix4;
|
|
@@ -371,20 +351,18 @@ export declare function MatrixTranslation3D(v: TVector3): TMatrix4;
|
|
|
371
351
|
* @throws {Error} If inputs are not valid vector/matrix types
|
|
372
352
|
*
|
|
373
353
|
* @example
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
* ```
|
|
387
|
-
* ```
|
|
354
|
+
* ```typescript
|
|
355
|
+
* // Rotate a point 90 degrees counterclockwise
|
|
356
|
+
* const rotationMatrix = MatrixRotation2D(Math.PI / 2);
|
|
357
|
+
* const point: TVector2 = [1, 0];
|
|
358
|
+
* const rotatedPoint = MatrixTransform2D(point, rotationMatrix);
|
|
359
|
+
* // Result: approximately [0, 1]
|
|
360
|
+
* // Chain multiple transformations
|
|
361
|
+
* const scale = MatrixScale2D(2, 2);
|
|
362
|
+
* const translate = MatrixTranslation2D(5, 3);
|
|
363
|
+
* const combined = MatrixMultiply(translate, scale);
|
|
364
|
+
* const transformedPoint = MatrixTransform2D(point, combined);
|
|
365
|
+
* ```
|
|
388
366
|
*/
|
|
389
367
|
export declare function MatrixTransform2D(vector: TVector2, matrix: TMatrix3): TVector2;
|
|
390
368
|
/**
|
|
@@ -398,13 +376,11 @@ export declare function MatrixTransform2D(vector: TVector2, matrix: TMatrix3): T
|
|
|
398
376
|
* @throws {Error} If the w component is near zero (degenerate transformation).
|
|
399
377
|
*
|
|
400
378
|
* @example
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
* ```
|
|
407
|
-
* ```
|
|
379
|
+
* ```typescript
|
|
380
|
+
* const rotationMatrix = MatrixRotation3DYaw(Math.PI / 4);
|
|
381
|
+
* const point: TVector3 = [1, 0, 0];
|
|
382
|
+
* const rotatedPoint = MatrixTransform3D(point, rotationMatrix);
|
|
383
|
+
* ```
|
|
408
384
|
*/
|
|
409
385
|
export declare function MatrixTransform3D(vector: TVector3, transform: TMatrix4): TVector3;
|
|
410
386
|
/**
|
|
@@ -416,13 +392,11 @@ export declare function MatrixTransform3D(vector: TVector3, transform: TMatrix4)
|
|
|
416
392
|
* @returns {TVector3} The transformed direction vector.
|
|
417
393
|
*
|
|
418
394
|
* @example
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
* ```
|
|
425
|
-
* ```
|
|
395
|
+
* ```typescript
|
|
396
|
+
* const rotationMatrix = MatrixRotation3DYaw(Math.PI / 4);
|
|
397
|
+
* const normal: TVector3 = [0, 0, 1];
|
|
398
|
+
* const rotatedNormal = MatrixDirection3D(normal, rotationMatrix);
|
|
399
|
+
* ```
|
|
426
400
|
*/
|
|
427
401
|
export declare function MatrixDirection3D(direction: TVector3, matrix: TMatrix3): TVector3;
|
|
428
402
|
/**
|
|
@@ -435,15 +409,13 @@ export declare function MatrixDirection3D(direction: TVector3, matrix: TMatrix3)
|
|
|
435
409
|
* @returns {TMatrix4} A 4x4 view transformation matrix.
|
|
436
410
|
*
|
|
437
411
|
* @example
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
* ```
|
|
446
|
-
* ```
|
|
412
|
+
* ```typescript
|
|
413
|
+
* const viewMatrix = MatrixView(
|
|
414
|
+
* [10, 5, 10], // Camera position
|
|
415
|
+
* [0, 0, 0], // Looking at origin
|
|
416
|
+
* [0, 1, 0] // Y-axis is up
|
|
417
|
+
* );
|
|
418
|
+
* ```
|
|
447
419
|
*/
|
|
448
420
|
export declare function MatrixView(eye: TVector3, target: TVector3, up: TVector3): TMatrix4;
|
|
449
421
|
/**
|
|
@@ -459,16 +431,14 @@ export declare function MatrixView(eye: TVector3, target: TVector3, up: TVector3
|
|
|
459
431
|
* @throws {Error} If parameters are invalid.
|
|
460
432
|
*
|
|
461
433
|
* @example
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
* ```
|
|
471
|
-
* ```
|
|
434
|
+
* ```typescript
|
|
435
|
+
* const perspectiveMatrix = MatrixPerspective(
|
|
436
|
+
* Math.PI / 4, // 45-degree field of view
|
|
437
|
+
* 16 / 9, // Widescreen aspect ratio
|
|
438
|
+
* 0.1, // Near plane
|
|
439
|
+
* 1000 // Far plane
|
|
440
|
+
* );
|
|
441
|
+
* ```
|
|
472
442
|
*/
|
|
473
443
|
export declare function MatrixPerspective(fovY: number, aspect: number, near: number, far: number): TMatrix4;
|
|
474
444
|
/**
|
|
@@ -486,15 +456,13 @@ export declare function MatrixPerspective(fovY: number, aspect: number, near: nu
|
|
|
486
456
|
* @throws {Error} If any opposing boundaries are equal.
|
|
487
457
|
*
|
|
488
458
|
* @example
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
* ```
|
|
497
|
-
* ```
|
|
459
|
+
* ```typescript
|
|
460
|
+
* const orthoMatrix = MatrixOrthographic(
|
|
461
|
+
* -10, 10, // Left/Right: 20 units wide
|
|
462
|
+
* -7.5, 7.5, // Bottom/Top: 15 units tall
|
|
463
|
+
* -100, 100 // Near/Far: 200 units deep
|
|
464
|
+
* );
|
|
465
|
+
* ```
|
|
498
466
|
*/
|
|
499
467
|
export declare function MatrixOrthographic(left: number, right: number, bottom: number, top: number, near: number, far: number): TMatrix4;
|
|
500
468
|
//# sourceMappingURL=transformations.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transformations.d.ts","sourceRoot":"","sources":["../../src/matrices/transformations.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAMH,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"transformations.d.ts","sourceRoot":"","sources":["../../src/matrices/transformations.ts"],"names":[],"mappings":"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"}
|