linearly 0.3.0 → 0.4.2
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/lib/{common.d.ts → cjs/common.d.ts} +1 -0
- package/lib/cjs/common.d.ts.map +1 -0
- package/lib/cjs/common.js +20 -0
- package/lib/{index.d.ts → cjs/index.d.ts} +1 -0
- package/lib/cjs/index.d.ts.map +1 -0
- package/lib/cjs/index.js +35 -0
- package/lib/{mat2.d.ts → cjs/mat2.d.ts} +1 -0
- package/lib/cjs/mat2.d.ts.map +1 -0
- package/lib/cjs/mat2.js +224 -0
- package/lib/{mat2d.d.ts → cjs/mat2d.d.ts} +1 -0
- package/lib/cjs/mat2d.d.ts.map +1 -0
- package/lib/cjs/mat2d.js +291 -0
- package/lib/{mat3.d.ts → cjs/mat3.d.ts} +1 -0
- package/lib/cjs/mat3.d.ts.map +1 -0
- package/lib/cjs/mat3.js +450 -0
- package/lib/{mat4.d.ts → cjs/mat4.d.ts} +1 -0
- package/lib/cjs/mat4.d.ts.map +1 -0
- package/lib/cjs/mat4.js +1250 -0
- package/lib/{quat.d.ts → cjs/quat.d.ts} +1 -0
- package/lib/cjs/quat.d.ts.map +1 -0
- package/lib/cjs/quat.js +504 -0
- package/lib/{vec2.d.ts → cjs/vec2.d.ts} +1 -0
- package/lib/cjs/vec2.d.ts.map +1 -0
- package/lib/cjs/vec2.js +205 -0
- package/lib/{vec3.d.ts → cjs/vec3.d.ts} +1 -0
- package/lib/cjs/vec3.d.ts.map +1 -0
- package/lib/cjs/vec3.js +409 -0
- package/lib/{vec4.d.ts → cjs/vec4.d.ts} +1 -0
- package/lib/cjs/vec4.d.ts.map +1 -0
- package/lib/cjs/vec4.js +319 -0
- package/lib/esm/common.d.ts +12 -0
- package/lib/esm/common.d.ts.map +1 -0
- package/lib/esm/common.js +16 -0
- package/lib/esm/index.d.ts +17 -0
- package/lib/esm/index.d.ts.map +1 -0
- package/lib/esm/index.js +9 -0
- package/lib/esm/mat2.d.ts +91 -0
- package/lib/esm/mat2.d.ts.map +1 -0
- package/lib/esm/mat2.js +179 -0
- package/lib/esm/mat2d.d.ts +102 -0
- package/lib/esm/mat2d.d.ts.map +1 -0
- package/lib/esm/mat2d.js +246 -0
- package/lib/esm/mat3.d.ts +120 -0
- package/lib/esm/mat3.d.ts.map +1 -0
- package/lib/esm/mat3.js +400 -0
- package/lib/esm/mat4.d.ts +313 -0
- package/lib/esm/mat4.d.ts.map +1 -0
- package/lib/esm/mat4.js +1183 -0
- package/lib/esm/quat.d.ts +220 -0
- package/lib/esm/quat.d.ts.map +1 -0
- package/lib/esm/quat.js +458 -0
- package/lib/esm/vec2.d.ts +66 -0
- package/lib/esm/vec2.d.ts.map +1 -0
- package/lib/esm/vec2.js +149 -0
- package/lib/esm/vec3.d.ts +167 -0
- package/lib/esm/vec3.d.ts.map +1 -0
- package/lib/esm/vec3.js +348 -0
- package/lib/esm/vec4.d.ts +116 -0
- package/lib/esm/vec4.d.ts.map +1 -0
- package/lib/esm/vec4.js +266 -0
- package/package.json +6 -4
- package/lib/common.js +0 -30
- package/lib/index.js +0 -45
- package/lib/mat2.js +0 -234
- package/lib/mat2d.js +0 -301
- package/lib/mat2d.test.d.ts +0 -1
- package/lib/mat2d.test.js +0 -123
- package/lib/mat3.js +0 -460
- package/lib/mat4.js +0 -1260
- package/lib/quat.js +0 -514
- package/lib/vec2.js +0 -215
- package/lib/vec2.test.d.ts +0 -1
- package/lib/vec2.test.js +0 -147
- package/lib/vec3.js +0 -419
- package/lib/vec3.test.d.ts +0 -1
- package/lib/vec3.test.js +0 -149
- package/lib/vec4.js +0 -329
- package/lib/vec4.test.d.ts +0 -1
- package/lib/vec4.test.js +0 -45
package/lib/esm/mat2.js
ADDED
|
@@ -0,0 +1,179 @@
|
|
|
1
|
+
import * as Common from './common';
|
|
2
|
+
export function of(m00, m01, m10, m11) {
|
|
3
|
+
return [m00, m01, m10, m11];
|
|
4
|
+
}
|
|
5
|
+
/**
|
|
6
|
+
* The identity matrix of mat2
|
|
7
|
+
*
|
|
8
|
+
*/
|
|
9
|
+
export const identity = Object.freeze([1, 0, 0, 1]);
|
|
10
|
+
export const zero = Object.freeze([0, 0, 0, 0]);
|
|
11
|
+
/**
|
|
12
|
+
* Transpose the values of a mat2
|
|
13
|
+
*/
|
|
14
|
+
export function transpose(a) {
|
|
15
|
+
// prettier-ignore
|
|
16
|
+
return [
|
|
17
|
+
a[0], a[2],
|
|
18
|
+
a[1], a[3],
|
|
19
|
+
];
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Inverts a mat2
|
|
23
|
+
*/
|
|
24
|
+
export function invert(a) {
|
|
25
|
+
const [a0, a1, a2, a3] = a;
|
|
26
|
+
// Calculate the determinant
|
|
27
|
+
const det = a0 * a3 - a2 * a1;
|
|
28
|
+
if (!det) {
|
|
29
|
+
return null;
|
|
30
|
+
}
|
|
31
|
+
const detinv = 1 / det;
|
|
32
|
+
// prettier-ignore
|
|
33
|
+
return [
|
|
34
|
+
a3 * detinv, -a1 * detinv,
|
|
35
|
+
-a2 * detinv, a0 * detinv
|
|
36
|
+
];
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Calculates the adjugate of a mat2
|
|
40
|
+
*/
|
|
41
|
+
export function adjoint(a) {
|
|
42
|
+
// Caching this value is necessary if out == a
|
|
43
|
+
const a0 = a[0];
|
|
44
|
+
return [a[3], -a[1], -a[2], a0];
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Calculates the determinant of a mat2
|
|
48
|
+
* @returns determinant of a
|
|
49
|
+
*/
|
|
50
|
+
export function determinant(a) {
|
|
51
|
+
return a[0] * a[3] - a[2] * a[1];
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Multiplies two mat2's
|
|
55
|
+
*/
|
|
56
|
+
export function multiply(a, b) {
|
|
57
|
+
const [a0, a1, a2, a3] = a;
|
|
58
|
+
const [b0, b1, b2, b3] = b;
|
|
59
|
+
return [
|
|
60
|
+
a0 * b0 + a2 * b1,
|
|
61
|
+
a1 * b0 + a3 * b1,
|
|
62
|
+
a0 * b2 + a2 * b3,
|
|
63
|
+
a1 * b2 + a3 * b3,
|
|
64
|
+
];
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Rotates a mat2 by the given angle
|
|
68
|
+
*
|
|
69
|
+
* @param a the matrix to rotate
|
|
70
|
+
* @param rad the angle to rotate the matrix by
|
|
71
|
+
*/
|
|
72
|
+
export function rotate(a, rad) {
|
|
73
|
+
const [a0, a1, a2, a3] = a;
|
|
74
|
+
const s = Math.sin(rad);
|
|
75
|
+
const c = Math.cos(rad);
|
|
76
|
+
return [a0 * c + a2 * s, a1 * c + a3 * s, a0 * -s + a2 * c, a1 * -s + a3 * c];
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Scales the mat2 by the dimensions in the given vec2
|
|
80
|
+
**/
|
|
81
|
+
export function scale(a, v) {
|
|
82
|
+
const [a0, a1, a2, a3] = a;
|
|
83
|
+
const [v0, v1] = v;
|
|
84
|
+
return [a0 * v0, a1 * v0, a2 * v1, a3 * v1];
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Apply skew to the mat2d by the given angles
|
|
88
|
+
* https://developer.mozilla.org/en-US/docs/Web/CSS/transform-function/skew
|
|
89
|
+
*/
|
|
90
|
+
export function skew(m, ax, ay) {
|
|
91
|
+
return multiply(m, fromSkew(ax, ay));
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Creates a matrix from a given angle
|
|
95
|
+
*/
|
|
96
|
+
export function fromRotation(rad) {
|
|
97
|
+
const s = Math.sin(rad);
|
|
98
|
+
const c = Math.cos(rad);
|
|
99
|
+
return [c, s, -s, c];
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Creates a matrix from a vector scaling
|
|
103
|
+
*/
|
|
104
|
+
export function fromScaling(v) {
|
|
105
|
+
return [v[0], 0, 0, v[1]];
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Creates a matrix from a vector skew
|
|
109
|
+
* https://developer.mozilla.org/en-US/docs/Web/CSS/transform-function/skew
|
|
110
|
+
*/
|
|
111
|
+
export function fromSkew(ax, ay) {
|
|
112
|
+
const x = Math.tan(ax);
|
|
113
|
+
const y = Math.tan(ay);
|
|
114
|
+
// prettier-ignore
|
|
115
|
+
return [
|
|
116
|
+
1, y,
|
|
117
|
+
x, 1,
|
|
118
|
+
];
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* Returns Frobenius norm of a mat2
|
|
122
|
+
*/
|
|
123
|
+
export function frob(a) {
|
|
124
|
+
return Math.sqrt(a[0] * a[0] + a[1] * a[1] + a[2] * a[2] + a[3] * a[3]);
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* Adds two mat2's
|
|
128
|
+
*/
|
|
129
|
+
export function add(a, b) {
|
|
130
|
+
return [a[0] + b[0], a[1] + b[1], a[2] + b[2], a[3] + b[3]];
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* Subtracts matrix b from matrix a
|
|
134
|
+
*/
|
|
135
|
+
export function subtract(a, b) {
|
|
136
|
+
return [a[0] - b[0], a[1] - b[1], a[2] - b[2], a[3] - b[3]];
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* Returns whether or not the matrices have exactly the same elements in the same position (when compared with ===)
|
|
140
|
+
*/
|
|
141
|
+
export function exactEquals(a, b) {
|
|
142
|
+
return a[0] === b[0] && a[1] === b[1] && a[2] === b[2] && a[3] === b[3];
|
|
143
|
+
}
|
|
144
|
+
/**
|
|
145
|
+
* Returns whether or not the matrices have approximately the same elements in the same position.
|
|
146
|
+
*/
|
|
147
|
+
export function equals(a, b) {
|
|
148
|
+
const [a0, a1, a2, a3] = a;
|
|
149
|
+
const [b0, b1, b2, b3] = b;
|
|
150
|
+
return (Math.abs(a0 - b0) <=
|
|
151
|
+
Common.EPSILON * Math.max(1, Math.abs(a0), Math.abs(b0)) &&
|
|
152
|
+
Math.abs(a1 - b1) <=
|
|
153
|
+
Common.EPSILON * Math.max(1, Math.abs(a1), Math.abs(b1)) &&
|
|
154
|
+
Math.abs(a2 - b2) <=
|
|
155
|
+
Common.EPSILON * Math.max(1, Math.abs(a2), Math.abs(b2)) &&
|
|
156
|
+
Math.abs(a3 - b3) <=
|
|
157
|
+
Common.EPSILON * Math.max(1, Math.abs(a3), Math.abs(b3)));
|
|
158
|
+
}
|
|
159
|
+
/**
|
|
160
|
+
* Multiply each element of the matrix by a scalar.
|
|
161
|
+
*
|
|
162
|
+
* @param a the matrix to scale
|
|
163
|
+
* @param s amount to scale the matrix's elements by
|
|
164
|
+
*/
|
|
165
|
+
export function multiplyScalar(a, s) {
|
|
166
|
+
return [a[0] * s, a[1] * s, a[2] * s, a[3] * s];
|
|
167
|
+
}
|
|
168
|
+
/**
|
|
169
|
+
* Adds two mat2's after multiplying each element of the second operand by a scalar value.
|
|
170
|
+
*/
|
|
171
|
+
export function multiplyScalarAndAdd(a, b, scale) {
|
|
172
|
+
return [
|
|
173
|
+
a[0] + b[0] * scale,
|
|
174
|
+
a[1] + b[1] * scale,
|
|
175
|
+
a[2] + b[2] * scale,
|
|
176
|
+
a[3] + b[3] * scale,
|
|
177
|
+
];
|
|
178
|
+
}
|
|
179
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF0Mi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9tYXQyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxNQUFNLE1BQU0sVUFBVSxDQUFBO0FBS2xDLE1BQU0sVUFBVSxFQUFFLENBQUMsR0FBVyxFQUFFLEdBQVcsRUFBRSxHQUFXLEVBQUUsR0FBVztJQUNwRSxPQUFPLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUE7QUFDNUIsQ0FBQztBQUVEOzs7R0FHRztBQUNILE1BQU0sQ0FBQyxNQUFNLFFBQVEsR0FBUyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQTtBQUV6RCxNQUFNLENBQUMsTUFBTSxJQUFJLEdBQVMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUE7QUFFckQ7O0dBRUc7QUFDSCxNQUFNLFVBQVUsU0FBUyxDQUFDLENBQU87SUFDaEMsa0JBQWtCO0lBQ2xCLE9BQU87UUFDTixDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNWLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0tBQ1YsQ0FBQTtBQUNGLENBQUM7QUFFRDs7R0FFRztBQUNILE1BQU0sVUFBVSxNQUFNLENBQUMsQ0FBTztJQUM3QixNQUFNLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFBO0lBRTFCLDRCQUE0QjtJQUM1QixNQUFNLEdBQUcsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUE7SUFFN0IsSUFBSSxDQUFDLEdBQUcsRUFBRTtRQUNULE9BQU8s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
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
import { Vec2 } from './vec2';
|
|
2
|
+
/**
|
|
3
|
+
* 2x3 Matrix
|
|
4
|
+
* @module mat2d
|
|
5
|
+
* @description
|
|
6
|
+
* A mat2d contains six elements defined as:
|
|
7
|
+
* <pre>
|
|
8
|
+
* [a, b,
|
|
9
|
+
* c, d,
|
|
10
|
+
* tx, ty]
|
|
11
|
+
* </pre>
|
|
12
|
+
* This is a short form for the 3x3 matrix:
|
|
13
|
+
* <pre>
|
|
14
|
+
* [a, b, 0,
|
|
15
|
+
* c, d, 0,
|
|
16
|
+
* tx, ty, 1]
|
|
17
|
+
* </pre>
|
|
18
|
+
* The last column is ignored so the array is shorter and operations are faster.
|
|
19
|
+
*/
|
|
20
|
+
export type Mat2d = readonly [number, number, number, number, number, number];
|
|
21
|
+
export declare function of(a: number, b: number, c: number, d: number, tx: number, ty: number): Mat2d;
|
|
22
|
+
/**
|
|
23
|
+
* The identity matrix of mat2d
|
|
24
|
+
*/
|
|
25
|
+
export declare const identity: readonly number[];
|
|
26
|
+
export declare const zero: Mat2d;
|
|
27
|
+
/**
|
|
28
|
+
* Inverts a mat2d
|
|
29
|
+
*/
|
|
30
|
+
export declare function invert(a: Mat2d): Mat2d | null;
|
|
31
|
+
/**
|
|
32
|
+
* Calculates the determinant of a mat2d
|
|
33
|
+
*/
|
|
34
|
+
export declare function determinant(a: Mat2d): number;
|
|
35
|
+
/**
|
|
36
|
+
* Multiplies two mat2d's
|
|
37
|
+
*/
|
|
38
|
+
export declare function multiply(a: Mat2d, b: Mat2d): Mat2d;
|
|
39
|
+
/**
|
|
40
|
+
* Rotates a mat2d by the given angle
|
|
41
|
+
*/
|
|
42
|
+
export declare function rotate(a: Mat2d, rad: number): Mat2d;
|
|
43
|
+
/**
|
|
44
|
+
* Scales the mat2d by the dimensions in the given vec2
|
|
45
|
+
**/
|
|
46
|
+
export declare function scale(a: Mat2d, v: Vec2): Mat2d;
|
|
47
|
+
/**
|
|
48
|
+
* Translates the mat2d by the dimensions in the given vec2
|
|
49
|
+
**/
|
|
50
|
+
export declare function translate(m: Mat2d, v: Vec2): Mat2d;
|
|
51
|
+
/**
|
|
52
|
+
* Apply skew to the mat2d by the given angles
|
|
53
|
+
* https://developer.mozilla.org/en-US/docs/Web/CSS/transform-function/skew
|
|
54
|
+
*/
|
|
55
|
+
export declare function skew(m: Mat2d, ax: number, ay: number): Mat2d;
|
|
56
|
+
/**
|
|
57
|
+
* Creates a matrix from a given angle
|
|
58
|
+
* This is equivalent to (but much faster than):
|
|
59
|
+
*/
|
|
60
|
+
export declare function fromRotation(rad: number): Mat2d;
|
|
61
|
+
/**
|
|
62
|
+
* Creates a matrix from a vector scaling
|
|
63
|
+
*/
|
|
64
|
+
export declare function fromScaling(v: Vec2): Mat2d;
|
|
65
|
+
/**
|
|
66
|
+
* Creates a matrix from a vector translation
|
|
67
|
+
*/
|
|
68
|
+
export declare function fromTranslation(v: Vec2): Mat2d;
|
|
69
|
+
/**
|
|
70
|
+
* Creates a matrix from a vector skew
|
|
71
|
+
* https://developer.mozilla.org/en-US/docs/Web/CSS/transform-function/skew
|
|
72
|
+
*/
|
|
73
|
+
export declare function fromSkew(ax: number, ay: number): Mat2d;
|
|
74
|
+
/**
|
|
75
|
+
* Returns Frobenius norm of a mat2d
|
|
76
|
+
*/
|
|
77
|
+
export declare function frob(a: Mat2d): number;
|
|
78
|
+
/**
|
|
79
|
+
* Adds two mat2d's
|
|
80
|
+
*/
|
|
81
|
+
export declare function add(a: Mat2d, b: Mat2d): Mat2d;
|
|
82
|
+
/**
|
|
83
|
+
* Subtracts matrix b from matrix a
|
|
84
|
+
*/
|
|
85
|
+
export declare function subtract(a: Mat2d, b: Mat2d): Mat2d;
|
|
86
|
+
/**
|
|
87
|
+
* Multiply each element of the matrix by a scalar.
|
|
88
|
+
*/
|
|
89
|
+
export declare function multiplyScalar(a: Mat2d, s: number): Mat2d;
|
|
90
|
+
/**
|
|
91
|
+
* Adds two mat2d's after multiplying each element of the second operand by a scalar value.
|
|
92
|
+
*/
|
|
93
|
+
export declare function multiplyScalarAndAdd(a: Mat2d, b: Mat2d, scale: number): Mat2d;
|
|
94
|
+
/**
|
|
95
|
+
* Returns whether or not the matrices have exactly the same elements in the same position (when compared with ===)
|
|
96
|
+
*/
|
|
97
|
+
export declare function exactEquals(a: Mat2d, b: Mat2d): boolean;
|
|
98
|
+
/**
|
|
99
|
+
* Returns whether or not the matrices have approximately the same elements in the same position.
|
|
100
|
+
*/
|
|
101
|
+
export declare function equals(a: Mat2d, b: Mat2d): boolean;
|
|
102
|
+
//# sourceMappingURL=mat2d.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mat2d.d.ts","sourceRoot":"","sources":["../../src/mat2d.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,IAAI,EAAC,MAAM,QAAQ,CAAA;AAE3B;;;;;;;;;;;;;;;;;GAiBG;AAEH,MAAM,MAAM,KAAK,GAAG,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;AAG7E,wBAAgB,EAAE,CACjB,CAAC,EAAE,MAAM,EAAG,CAAC,EAAE,MAAM,EACrB,CAAC,EAAE,MAAM,EAAG,CAAC,EAAE,MAAM,EACrB,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GACpB,KAAK,CAEP;AAED;;GAEG;AAEH,eAAO,MAAM,QAAQ,mBAInB,CAAA;AAEF,eAAO,MAAM,IAAI,EAAE,KAAyC,CAAA;AAE5D;;GAEG;AACH,wBAAgB,MAAM,CAAC,CAAC,EAAE,KAAK,GAAG,KAAK,GAAG,IAAI,CAmB7C;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAAE,KAAK,UAEnC;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,GAAG,KAAK,CAYlD;AAED;;GAEG;AACH,wBAAgB,MAAM,CAAC,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,GAAG,KAAK,CAWnD;AAED;;IAEI;AACJ,wBAAgB,KAAK,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,GAAG,KAAK,CAU9C;AAED;;IAEI;AACJ,wBAAgB,SAAS,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,GAAG,KAAK,CAUlD;AAED;;;GAGG;AACH,wBAAgB,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,KAAK,CAE5D;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,KAAK,CAU/C;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,CAS1C;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,CAS9C;AAED;;;GAGG;AACH,wBAAgB,QAAQ,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,KAAK,CAUtD;AAED;;GAEG;AACH,wBAAgB,IAAI,CAAC,CAAC,EAAE,KAAK,UAU5B;AAED;;GAEG;AACH,wBAAgB,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,GAAG,KAAK,CAS7C;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,GAAG,KAAK,CASlD;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,GAAG,KAAK,CAOzD;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,GAAG,KAAK,CAS7E;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,WAS7C;AAED;;GAEG;AACH,wBAAgB,MAAM,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,WAiBxC"}
|
package/lib/esm/mat2d.js
ADDED
|
@@ -0,0 +1,246 @@
|
|
|
1
|
+
import * as Common from './common';
|
|
2
|
+
// prettier-ignore
|
|
3
|
+
export function of(a, b, c, d, tx, ty) {
|
|
4
|
+
return [a, b, c, d, tx, ty];
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* The identity matrix of mat2d
|
|
8
|
+
*/
|
|
9
|
+
// prettier-ignore
|
|
10
|
+
export const identity = Object.freeze([
|
|
11
|
+
1, 0,
|
|
12
|
+
0, 1,
|
|
13
|
+
0, 0
|
|
14
|
+
]);
|
|
15
|
+
export const zero = Object.freeze([0, 0, 0, 0, 0, 0]);
|
|
16
|
+
/**
|
|
17
|
+
* Inverts a mat2d
|
|
18
|
+
*/
|
|
19
|
+
export function invert(a) {
|
|
20
|
+
const [aa, ab, ac, ad, atx, aty] = a;
|
|
21
|
+
const det = aa * ad - ab * ac;
|
|
22
|
+
if (!det) {
|
|
23
|
+
return null;
|
|
24
|
+
}
|
|
25
|
+
const detinv = 1 / det;
|
|
26
|
+
// prettier-ignore
|
|
27
|
+
return [
|
|
28
|
+
ad * detinv, -ab * detinv,
|
|
29
|
+
-ac * detinv, aa * detinv,
|
|
30
|
+
(ac * aty - ad * atx) * detinv,
|
|
31
|
+
(ab * atx - aa * aty) * detinv,
|
|
32
|
+
];
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Calculates the determinant of a mat2d
|
|
36
|
+
*/
|
|
37
|
+
export function determinant(a) {
|
|
38
|
+
return a[0] * a[3] - a[1] * a[2];
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Multiplies two mat2d's
|
|
42
|
+
*/
|
|
43
|
+
export function multiply(a, b) {
|
|
44
|
+
const [a0, a1, a2, a3, a4, a5] = a;
|
|
45
|
+
const [b0, b1, b2, b3, b4, b5] = b;
|
|
46
|
+
// prettier-ignore
|
|
47
|
+
return [
|
|
48
|
+
a0 * b0 + a2 * b1, a1 * b0 + a3 * b1,
|
|
49
|
+
a0 * b2 + a2 * b3, a1 * b2 + a3 * b3,
|
|
50
|
+
a0 * b4 + a2 * b5 + a4,
|
|
51
|
+
a1 * b4 + a3 * b5 + a5,
|
|
52
|
+
];
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Rotates a mat2d by the given angle
|
|
56
|
+
*/
|
|
57
|
+
export function rotate(a, rad) {
|
|
58
|
+
const [a0, a1, a2, a3, tx, ty] = a;
|
|
59
|
+
const s = Math.sin(rad);
|
|
60
|
+
const c = Math.cos(rad);
|
|
61
|
+
// prettier-ignore
|
|
62
|
+
return [
|
|
63
|
+
a0 * c + a2 * s, a1 * c + a3 * s,
|
|
64
|
+
a0 * -s + a2 * c, a1 * -s + a3 * c,
|
|
65
|
+
tx, ty
|
|
66
|
+
];
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Scales the mat2d by the dimensions in the given vec2
|
|
70
|
+
**/
|
|
71
|
+
export function scale(a, v) {
|
|
72
|
+
const [a0, a1, a2, a3, tx, ty] = a;
|
|
73
|
+
const [sx, sy] = v;
|
|
74
|
+
// prettier-ignore
|
|
75
|
+
return [
|
|
76
|
+
a0 * sx, a1 * sx,
|
|
77
|
+
a2 * sy, a3 * sy,
|
|
78
|
+
tx, ty
|
|
79
|
+
];
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Translates the mat2d by the dimensions in the given vec2
|
|
83
|
+
**/
|
|
84
|
+
export function translate(m, v) {
|
|
85
|
+
const [a, b, c, d, tx, ty] = m;
|
|
86
|
+
const [x, y] = v;
|
|
87
|
+
// prettier-ignore
|
|
88
|
+
return [
|
|
89
|
+
a, b,
|
|
90
|
+
c, d,
|
|
91
|
+
a * x + c * y + tx,
|
|
92
|
+
b * x + d * y + ty
|
|
93
|
+
];
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Apply skew to the mat2d by the given angles
|
|
97
|
+
* https://developer.mozilla.org/en-US/docs/Web/CSS/transform-function/skew
|
|
98
|
+
*/
|
|
99
|
+
export function skew(m, ax, ay) {
|
|
100
|
+
return multiply(m, fromSkew(ax, ay));
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Creates a matrix from a given angle
|
|
104
|
+
* This is equivalent to (but much faster than):
|
|
105
|
+
*/
|
|
106
|
+
export function fromRotation(rad) {
|
|
107
|
+
const s = Math.sin(rad);
|
|
108
|
+
const c = Math.cos(rad);
|
|
109
|
+
// prettier-ignore
|
|
110
|
+
return [
|
|
111
|
+
c, s,
|
|
112
|
+
-s, c,
|
|
113
|
+
0, 0,
|
|
114
|
+
];
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Creates a matrix from a vector scaling
|
|
118
|
+
*/
|
|
119
|
+
export function fromScaling(v) {
|
|
120
|
+
const [x, y] = v;
|
|
121
|
+
// prettier-ignore
|
|
122
|
+
return [
|
|
123
|
+
x, 0,
|
|
124
|
+
0, y,
|
|
125
|
+
0, 0,
|
|
126
|
+
];
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* Creates a matrix from a vector translation
|
|
130
|
+
*/
|
|
131
|
+
export function fromTranslation(v) {
|
|
132
|
+
const [x, y] = v;
|
|
133
|
+
// prettier-ignore
|
|
134
|
+
return [
|
|
135
|
+
1, 0,
|
|
136
|
+
0, 1,
|
|
137
|
+
x, y,
|
|
138
|
+
];
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* Creates a matrix from a vector skew
|
|
142
|
+
* https://developer.mozilla.org/en-US/docs/Web/CSS/transform-function/skew
|
|
143
|
+
*/
|
|
144
|
+
export function fromSkew(ax, ay) {
|
|
145
|
+
const x = Math.tan(ax);
|
|
146
|
+
const y = Math.tan(ay);
|
|
147
|
+
// prettier-ignore
|
|
148
|
+
return [
|
|
149
|
+
1, y,
|
|
150
|
+
x, 1,
|
|
151
|
+
0, 0,
|
|
152
|
+
];
|
|
153
|
+
}
|
|
154
|
+
/**
|
|
155
|
+
* Returns Frobenius norm of a mat2d
|
|
156
|
+
*/
|
|
157
|
+
export function frob(a) {
|
|
158
|
+
// prettier-ignore
|
|
159
|
+
return Math.sqrt(a[0] ** 2 +
|
|
160
|
+
a[1] ** 2 +
|
|
161
|
+
a[2] ** 2 +
|
|
162
|
+
a[3] ** 2 +
|
|
163
|
+
a[4] ** 2 +
|
|
164
|
+
a[5] ** 2 + 1);
|
|
165
|
+
}
|
|
166
|
+
/**
|
|
167
|
+
* Adds two mat2d's
|
|
168
|
+
*/
|
|
169
|
+
export function add(a, b) {
|
|
170
|
+
return [
|
|
171
|
+
a[0] + b[0],
|
|
172
|
+
a[1] + b[1],
|
|
173
|
+
a[2] + b[2],
|
|
174
|
+
a[3] + b[3],
|
|
175
|
+
a[4] + b[4],
|
|
176
|
+
a[5] + b[5],
|
|
177
|
+
];
|
|
178
|
+
}
|
|
179
|
+
/**
|
|
180
|
+
* Subtracts matrix b from matrix a
|
|
181
|
+
*/
|
|
182
|
+
export function subtract(a, b) {
|
|
183
|
+
return [
|
|
184
|
+
a[0] - b[0],
|
|
185
|
+
a[1] - b[1],
|
|
186
|
+
a[2] - b[2],
|
|
187
|
+
a[3] - b[3],
|
|
188
|
+
a[4] - b[4],
|
|
189
|
+
a[5] - b[5],
|
|
190
|
+
];
|
|
191
|
+
}
|
|
192
|
+
/**
|
|
193
|
+
* Multiply each element of the matrix by a scalar.
|
|
194
|
+
*/
|
|
195
|
+
export function multiplyScalar(a, s) {
|
|
196
|
+
// prettier-ignore
|
|
197
|
+
return [
|
|
198
|
+
a[0] * s, a[1] * s,
|
|
199
|
+
a[2] * s, a[3] * s,
|
|
200
|
+
a[4] * s, a[5] * s,
|
|
201
|
+
];
|
|
202
|
+
}
|
|
203
|
+
/**
|
|
204
|
+
* Adds two mat2d's after multiplying each element of the second operand by a scalar value.
|
|
205
|
+
*/
|
|
206
|
+
export function multiplyScalarAndAdd(a, b, scale) {
|
|
207
|
+
return [
|
|
208
|
+
a[0] + b[0] * scale,
|
|
209
|
+
a[1] + b[1] * scale,
|
|
210
|
+
a[2] + b[2] * scale,
|
|
211
|
+
a[3] + b[3] * scale,
|
|
212
|
+
a[4] + b[4] * scale,
|
|
213
|
+
a[5] + b[5] * scale,
|
|
214
|
+
];
|
|
215
|
+
}
|
|
216
|
+
/**
|
|
217
|
+
* Returns whether or not the matrices have exactly the same elements in the same position (when compared with ===)
|
|
218
|
+
*/
|
|
219
|
+
export function exactEquals(a, b) {
|
|
220
|
+
return (a[0] === b[0] &&
|
|
221
|
+
a[1] === b[1] &&
|
|
222
|
+
a[2] === b[2] &&
|
|
223
|
+
a[3] === b[3] &&
|
|
224
|
+
a[4] === b[4] &&
|
|
225
|
+
a[5] === b[5]);
|
|
226
|
+
}
|
|
227
|
+
/**
|
|
228
|
+
* Returns whether or not the matrices have approximately the same elements in the same position.
|
|
229
|
+
*/
|
|
230
|
+
export function equals(a, b) {
|
|
231
|
+
const [a0, a1, a2, a3, a4, a5] = a;
|
|
232
|
+
const [b0, b1, b2, b3, b4, b5] = b;
|
|
233
|
+
return (Math.abs(a0 - b0) <=
|
|
234
|
+
Common.EPSILON * Math.max(1, Math.abs(a0), Math.abs(b0)) &&
|
|
235
|
+
Math.abs(a1 - b1) <=
|
|
236
|
+
Common.EPSILON * Math.max(1, Math.abs(a1), Math.abs(b1)) &&
|
|
237
|
+
Math.abs(a2 - b2) <=
|
|
238
|
+
Common.EPSILON * Math.max(1, Math.abs(a2), Math.abs(b2)) &&
|
|
239
|
+
Math.abs(a3 - b3) <=
|
|
240
|
+
Common.EPSILON * Math.max(1, Math.abs(a3), Math.abs(b3)) &&
|
|
241
|
+
Math.abs(a4 - b4) <=
|
|
242
|
+
Common.EPSILON * Math.max(1, Math.abs(a4), Math.abs(b4)) &&
|
|
243
|
+
Math.abs(a5 - b5) <=
|
|
244
|
+
Common.EPSILON * Math.max(1, Math.abs(a5), Math.abs(b5)));
|
|
245
|
+
}
|
|
246
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF0MmQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbWF0MmQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLE1BQU0sTUFBTSxVQUFVLENBQUE7QUF3QmxDLGtCQUFrQjtBQUNsQixNQUFNLFVBQVUsRUFBRSxDQUNqQixDQUFTLEVBQUcsQ0FBUyxFQUNyQixDQUFTLEVBQUcsQ0FBUyxFQUNyQixFQUFVLEVBQUUsRUFBVTtJQUV0QixPQUFPLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQTtBQUM1QixDQUFDO0FBRUQ7O0dBRUc7QUFDSCxrQkFBa0I7QUFDbEIsTUFBTSxDQUFDLE1BQU0sUUFBUSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUM7SUFDckMsQ0FBQyxFQUFFLENBQUM7SUFDSixDQUFDLEVBQUUsQ0FBQztJQUNKLENBQUMsRUFBRSxDQUFDO0NBQ0osQ0FBQyxDQUFBO0FBRUYsTUFBTSxDQUFDLE1BQU0sSUFBSSxHQUFVLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUE7QUFFNUQ7O0dBRUc7QUFDSCxNQUFNLFVBQVUsTUFBTSxDQUFDLENBQVE7SUFDOUIsTUFBTSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFBO0lBRXBDLE1BQU0sR0FBRyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQTtJQUU3QixJQUFJLENBQUMsR0FBRyxFQUFFO1FBQ1QsT0FBTyxJQUFJLENBQUE7S0FDWDtJQUVELE1BQU0sTUFBTSxHQUFHLENBQUMsR0FBRyxHQUFHLENBQUE7SUFFdEIsa0JBQWtC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
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
import { Mat4 } from './mat4';
|
|
2
|
+
import { Quat } from './quat';
|
|
3
|
+
import { Vec2 } from './vec2';
|
|
4
|
+
import { Vec3 } from './vec3';
|
|
5
|
+
export type Mat3 = readonly [
|
|
6
|
+
number,
|
|
7
|
+
number,
|
|
8
|
+
number,
|
|
9
|
+
number,
|
|
10
|
+
number,
|
|
11
|
+
number,
|
|
12
|
+
number,
|
|
13
|
+
number,
|
|
14
|
+
number
|
|
15
|
+
];
|
|
16
|
+
export declare function of(m00: number, m01: number, m02: number, m10: number, m11: number, m12: number, m20: number, m21: number, m22: number): Mat3;
|
|
17
|
+
/**
|
|
18
|
+
* 3x3 Matrix
|
|
19
|
+
* @module mat3
|
|
20
|
+
*/
|
|
21
|
+
/**
|
|
22
|
+
* Copies the upper-left 3x3 values into the given mat3.
|
|
23
|
+
*/
|
|
24
|
+
export declare function fromMat4(a: Mat4): Mat3;
|
|
25
|
+
/**
|
|
26
|
+
* The identity matrix of mat3
|
|
27
|
+
*/
|
|
28
|
+
export declare const identity: readonly number[];
|
|
29
|
+
export declare const zero: Mat3;
|
|
30
|
+
/**
|
|
31
|
+
* Transpose the values of a mat3
|
|
32
|
+
*/
|
|
33
|
+
export declare function transpose(a: Mat3): Mat3;
|
|
34
|
+
/**
|
|
35
|
+
* Inverts a mat3
|
|
36
|
+
*/
|
|
37
|
+
export declare function invert(a: Mat3): Mat3 | null;
|
|
38
|
+
/**
|
|
39
|
+
* Calculates the adjugate of a mat3
|
|
40
|
+
*/
|
|
41
|
+
export declare function adjoint(a: Mat3): Mat3;
|
|
42
|
+
/**
|
|
43
|
+
* Calculates the determinant of a mat3
|
|
44
|
+
*/
|
|
45
|
+
export declare function determinant(a: Mat3): number;
|
|
46
|
+
/**
|
|
47
|
+
* Multiplies two mat3's
|
|
48
|
+
*/
|
|
49
|
+
export declare function multiply(a: Mat3, b: Mat3): Mat3;
|
|
50
|
+
/**
|
|
51
|
+
* Translate a mat3 by the given vector
|
|
52
|
+
*/
|
|
53
|
+
export declare function translate(a: Mat3, v: Vec3): Mat3;
|
|
54
|
+
/**
|
|
55
|
+
* Rotates a mat3 by the given angle
|
|
56
|
+
*/
|
|
57
|
+
export declare function rotate(a: Mat3, rad: number): Mat3;
|
|
58
|
+
/**
|
|
59
|
+
* Scales the mat3 by the dimensions in the given vec2
|
|
60
|
+
**/
|
|
61
|
+
export declare function scale(a: Mat3, v: Vec2): Mat3;
|
|
62
|
+
/**
|
|
63
|
+
* Creates a matrix from a vector translation
|
|
64
|
+
*/
|
|
65
|
+
export declare function fromTranslation(v: Vec2): Mat3;
|
|
66
|
+
/**
|
|
67
|
+
* Creates a matrix from a given angle
|
|
68
|
+
*/
|
|
69
|
+
export declare function fromRotation(rad: number): Mat3;
|
|
70
|
+
/**
|
|
71
|
+
* Creates a matrix from a vector scaling
|
|
72
|
+
*/
|
|
73
|
+
export declare function fromScaling(v: Vec2): Mat3;
|
|
74
|
+
/**
|
|
75
|
+
* Copies the values from a mat2d into a mat3
|
|
76
|
+
**/
|
|
77
|
+
export declare function fromMat2d(a: Mat3): Mat3;
|
|
78
|
+
/**
|
|
79
|
+
* Calculates a 3x3 matrix from the given quaternion
|
|
80
|
+
*
|
|
81
|
+
*/
|
|
82
|
+
export declare function fromQuat(q: Quat): Mat3;
|
|
83
|
+
/**
|
|
84
|
+
* Calculates a 3x3 normal matrix (transpose inverse) from the 4x4 matrix
|
|
85
|
+
*
|
|
86
|
+
*/
|
|
87
|
+
export declare function normalFromMat4(a: Mat4): Mat3 | null;
|
|
88
|
+
/**
|
|
89
|
+
* Generates a 2D projection matrix with the given bounds
|
|
90
|
+
*/
|
|
91
|
+
export declare function projection(width: number, height: number): Mat3;
|
|
92
|
+
/**
|
|
93
|
+
* Returns Frobenius norm of a mat3
|
|
94
|
+
*/
|
|
95
|
+
export declare function frob(a: Mat3): number;
|
|
96
|
+
/**
|
|
97
|
+
* Adds two mat3's
|
|
98
|
+
*/
|
|
99
|
+
export declare function add(a: Mat3, b: Mat3): Mat3;
|
|
100
|
+
/**
|
|
101
|
+
* Subtracts matrix b from matrix a
|
|
102
|
+
*/
|
|
103
|
+
export declare function subtract(a: Mat3, b: Mat3): Mat3;
|
|
104
|
+
/**
|
|
105
|
+
* Multiply each element of the matrix by a scalar.
|
|
106
|
+
*/
|
|
107
|
+
export declare function multiplyScalar(a: Mat3, s: number): Mat3;
|
|
108
|
+
/**
|
|
109
|
+
* Adds two mat3's after multiplying each element of the second operand by a scalar value.
|
|
110
|
+
*/
|
|
111
|
+
export declare function multiplyScalarAndAdd(a: Mat3, b: Mat3, scale: number): Mat3;
|
|
112
|
+
/**
|
|
113
|
+
* Returns whether or not the matrices have exactly the same elements in the same position (when compared with ===)
|
|
114
|
+
*/
|
|
115
|
+
export declare function exactEquals(a: Mat3, b: Mat3): boolean;
|
|
116
|
+
/**
|
|
117
|
+
* Returns whether or not the matrices have approximately the same elements in the same position.
|
|
118
|
+
*/
|
|
119
|
+
export declare function equals(a: Mat3, b: Mat3): boolean;
|
|
120
|
+
//# sourceMappingURL=mat3.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mat3.d.ts","sourceRoot":"","sources":["../../src/mat3.ts"],"names":[],"mappings":"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"}
|