linearly 0.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/LICENSE +21 -0
- package/README.md +3 -0
- package/lib/common.d.ts +11 -0
- package/lib/common.js +16 -0
- package/lib/index.d.ts +16 -0
- package/lib/index.js +9 -0
- package/lib/mat2.d.ts +78 -0
- package/lib/mat2.js +155 -0
- package/lib/mat2d.d.ts +89 -0
- package/lib/mat2d.js +238 -0
- package/lib/mat2d.test.d.ts +1 -0
- package/lib/mat2d.test.js +88 -0
- package/lib/mat3.d.ts +117 -0
- package/lib/mat3.js +390 -0
- package/lib/mat4.d.ts +310 -0
- package/lib/mat4.js +1173 -0
- package/lib/quat.d.ts +218 -0
- package/lib/quat.js +459 -0
- package/lib/vec2.d.ts +58 -0
- package/lib/vec2.js +135 -0
- package/lib/vec2.test.d.ts +1 -0
- package/lib/vec2.test.js +105 -0
- package/lib/vec3.d.ts +159 -0
- package/lib/vec3.js +326 -0
- package/lib/vec3.test.d.ts +1 -0
- package/lib/vec3.test.js +105 -0
- package/lib/vec4.d.ts +108 -0
- package/lib/vec4.js +241 -0
- package/package.json +50 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2023 Baku Hashimoto
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
package/lib/common.d.ts
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Common utilities
|
|
3
|
+
*/
|
|
4
|
+
export declare const EPSILON = 0.000001;
|
|
5
|
+
/**
|
|
6
|
+
* Symmetric round
|
|
7
|
+
* see https://www.npmjs.com/package/round-half-up-symmetric#user-content-detailed-background
|
|
8
|
+
*/
|
|
9
|
+
export declare function round(a: number): number;
|
|
10
|
+
export type AngleOrder = 'xyz' | 'xzy' | 'yxz' | 'yzx' | 'zxy' | 'zyx';
|
|
11
|
+
export declare const DEFAULT_ANGLE_ORDER: AngleOrder;
|
package/lib/common.js
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Common utilities
|
|
3
|
+
*/
|
|
4
|
+
// Configuration Constants
|
|
5
|
+
export const EPSILON = 0.000001;
|
|
6
|
+
/**
|
|
7
|
+
* Symmetric round
|
|
8
|
+
* see https://www.npmjs.com/package/round-half-up-symmetric#user-content-detailed-background
|
|
9
|
+
*/
|
|
10
|
+
export function round(a) {
|
|
11
|
+
if (a >= 0)
|
|
12
|
+
return Math.round(a);
|
|
13
|
+
return a % 0.5 === 0 ? Math.floor(a) : Math.round(a);
|
|
14
|
+
}
|
|
15
|
+
export const DEFAULT_ANGLE_ORDER = 'zyx';
|
|
16
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2NvbW1vbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILDBCQUEwQjtBQUMxQixNQUFNLENBQUMsTUFBTSxPQUFPLEdBQUcsUUFBUSxDQUFBO0FBRS9COzs7R0FHRztBQUNILE1BQU0sVUFBVSxLQUFLLENBQUMsQ0FBUztJQUM5QixJQUFJLENBQUMsSUFBSSxDQUFDO1FBQUUsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBQ2hDLE9BQU8sQ0FBQyxHQUFHLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUE7QUFDckQsQ0FBQztBQUlELE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFlLEtBQUssQ0FBQSJ9
|
package/lib/index.d.ts
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export * as vec2 from './vec2';
|
|
2
|
+
export type { Vec2 } from './vec2';
|
|
3
|
+
export * as vec3 from './vec3';
|
|
4
|
+
export type { Vec3 } from './vec3';
|
|
5
|
+
export * as vec4 from './vec4';
|
|
6
|
+
export type { Vec4 } from './vec4';
|
|
7
|
+
export * as mat2 from './mat2';
|
|
8
|
+
export type { Mat2 } from './mat2';
|
|
9
|
+
export * as mat2d from './mat2d';
|
|
10
|
+
export type { Mat2d } from './mat2d';
|
|
11
|
+
export * as mat3 from './mat3';
|
|
12
|
+
export type { Mat3 } from './mat3';
|
|
13
|
+
export * as mat4 from './mat4';
|
|
14
|
+
export type { Mat4 } from './mat4';
|
|
15
|
+
export * as quat from './quat';
|
|
16
|
+
export type { Quat } from './quat';
|
package/lib/index.js
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export * as vec2 from './vec2';
|
|
2
|
+
export * as vec3 from './vec3';
|
|
3
|
+
export * as vec4 from './vec4';
|
|
4
|
+
export * as mat2 from './mat2';
|
|
5
|
+
export * as mat2d from './mat2d';
|
|
6
|
+
export * as mat3 from './mat3';
|
|
7
|
+
export * as mat4 from './mat4';
|
|
8
|
+
export * as quat from './quat';
|
|
9
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLElBQUksTUFBTSxRQUFRLENBQUE7QUFHOUIsT0FBTyxLQUFLLElBQUksTUFBTSxRQUFRLENBQUE7QUFHOUIsT0FBTyxLQUFLLElBQUksTUFBTSxRQUFRLENBQUE7QUFHOUIsT0FBTyxLQUFLLElBQUksTUFBTSxRQUFRLENBQUE7QUFHOUIsT0FBTyxLQUFLLEtBQUssTUFBTSxTQUFTLENBQUE7QUFHaEMsT0FBTyxLQUFLLElBQUksTUFBTSxRQUFRLENBQUE7QUFHOUIsT0FBTyxLQUFLLElBQUksTUFBTSxRQUFRLENBQUE7QUFHOUIsT0FBTyxLQUFLLElBQUksTUFBTSxRQUFRLENBQUEifQ==
|
package/lib/mat2.d.ts
ADDED
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import { Vec2 } from './vec2';
|
|
2
|
+
export type Mat2 = readonly [number, number, number, number];
|
|
3
|
+
/**
|
|
4
|
+
* The identity matrix of mat2
|
|
5
|
+
*
|
|
6
|
+
*/
|
|
7
|
+
export declare const identity: Mat2;
|
|
8
|
+
/**
|
|
9
|
+
* Transpose the values of a mat2
|
|
10
|
+
*/
|
|
11
|
+
export declare function transpose(a: Mat2): Mat2;
|
|
12
|
+
/**
|
|
13
|
+
* Inverts a mat2
|
|
14
|
+
*/
|
|
15
|
+
export declare function invert(a: Mat2): Mat2 | null;
|
|
16
|
+
/**
|
|
17
|
+
* Calculates the adjugate of a mat2
|
|
18
|
+
*/
|
|
19
|
+
export declare function adjoint(a: Mat2): Mat2;
|
|
20
|
+
/**
|
|
21
|
+
* Calculates the determinant of a mat2
|
|
22
|
+
* @returns determinant of a
|
|
23
|
+
*/
|
|
24
|
+
export declare function determinant(a: Mat2): number;
|
|
25
|
+
/**
|
|
26
|
+
* Multiplies two mat2's
|
|
27
|
+
*/
|
|
28
|
+
export declare function multiply(a: Mat2, b: Mat2): Mat2;
|
|
29
|
+
/**
|
|
30
|
+
* Rotates a mat2 by the given angle
|
|
31
|
+
*
|
|
32
|
+
* @param a the matrix to rotate
|
|
33
|
+
* @param rad the angle to rotate the matrix by
|
|
34
|
+
*/
|
|
35
|
+
export declare function rotate(a: Mat2, rad: number): Mat2;
|
|
36
|
+
/**
|
|
37
|
+
* Scales the mat2 by the dimensions in the given vec2
|
|
38
|
+
**/
|
|
39
|
+
export declare function scale(a: Mat2, v: Vec2): Mat2;
|
|
40
|
+
/**
|
|
41
|
+
* Creates a matrix from a given angle
|
|
42
|
+
*/
|
|
43
|
+
export declare function fromRotation(rad: number): Mat2;
|
|
44
|
+
/**
|
|
45
|
+
* Creates a matrix from a vector scaling
|
|
46
|
+
*/
|
|
47
|
+
export declare function fromScaling(v: Vec2): Mat2;
|
|
48
|
+
/**
|
|
49
|
+
* Returns Frobenius norm of a mat2
|
|
50
|
+
*/
|
|
51
|
+
export declare function frob(a: Mat2): number;
|
|
52
|
+
/**
|
|
53
|
+
* Adds two mat2's
|
|
54
|
+
*/
|
|
55
|
+
export declare function add(a: Mat2, b: Mat2): Mat2;
|
|
56
|
+
/**
|
|
57
|
+
* Subtracts matrix b from matrix a
|
|
58
|
+
*/
|
|
59
|
+
export declare function subtract(a: Mat2, b: Mat2): Mat2;
|
|
60
|
+
/**
|
|
61
|
+
* Returns whether or not the matrices have exactly the same elements in the same position (when compared with ===)
|
|
62
|
+
*/
|
|
63
|
+
export declare function exactEquals(a: Mat2, b: Mat2): boolean;
|
|
64
|
+
/**
|
|
65
|
+
* Returns whether or not the matrices have approximately the same elements in the same position.
|
|
66
|
+
*/
|
|
67
|
+
export declare function equals(a: Mat2, b: Mat2): boolean;
|
|
68
|
+
/**
|
|
69
|
+
* Multiply each element of the matrix by a scalar.
|
|
70
|
+
*
|
|
71
|
+
* @param a the matrix to scale
|
|
72
|
+
* @param s amount to scale the matrix's elements by
|
|
73
|
+
*/
|
|
74
|
+
export declare function multiplyScalar(a: Mat2, s: number): Mat2;
|
|
75
|
+
/**
|
|
76
|
+
* Adds two mat2's after multiplying each element of the second operand by a scalar value.
|
|
77
|
+
*/
|
|
78
|
+
export declare function multiplyScalarAndAdd(a: Mat2, b: Mat2, scale: number): Mat2;
|
package/lib/mat2.js
ADDED
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
import * as Common from './common';
|
|
2
|
+
/**
|
|
3
|
+
* The identity matrix of mat2
|
|
4
|
+
*
|
|
5
|
+
*/
|
|
6
|
+
export const identity = Object.freeze([1, 0, 0, 1]);
|
|
7
|
+
/**
|
|
8
|
+
* Transpose the values of a mat2
|
|
9
|
+
*/
|
|
10
|
+
export function transpose(a) {
|
|
11
|
+
// prettier-ignore
|
|
12
|
+
return [
|
|
13
|
+
a[0], a[2],
|
|
14
|
+
a[1], a[3],
|
|
15
|
+
];
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Inverts a mat2
|
|
19
|
+
*/
|
|
20
|
+
export function invert(a) {
|
|
21
|
+
const [a0, a1, a2, a3] = a;
|
|
22
|
+
// Calculate the determinant
|
|
23
|
+
const det = a0 * a3 - a2 * a1;
|
|
24
|
+
if (!det) {
|
|
25
|
+
return null;
|
|
26
|
+
}
|
|
27
|
+
const detinv = 1 / det;
|
|
28
|
+
// prettier-ignore
|
|
29
|
+
return [
|
|
30
|
+
a3 * detinv, -a1 * detinv,
|
|
31
|
+
-a2 * detinv, a0 * detinv
|
|
32
|
+
];
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Calculates the adjugate of a mat2
|
|
36
|
+
*/
|
|
37
|
+
export function adjoint(a) {
|
|
38
|
+
// Caching this value is necessary if out == a
|
|
39
|
+
const a0 = a[0];
|
|
40
|
+
return [a[3], -a[1], -a[2], a0];
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Calculates the determinant of a mat2
|
|
44
|
+
* @returns determinant of a
|
|
45
|
+
*/
|
|
46
|
+
export function determinant(a) {
|
|
47
|
+
return a[0] * a[3] - a[2] * a[1];
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Multiplies two mat2's
|
|
51
|
+
*/
|
|
52
|
+
export function multiply(a, b) {
|
|
53
|
+
const [a0, a1, a2, a3] = a;
|
|
54
|
+
const [b0, b1, b2, b3] = b;
|
|
55
|
+
return [
|
|
56
|
+
a0 * b0 + a2 * b1,
|
|
57
|
+
a1 * b0 + a3 * b1,
|
|
58
|
+
a0 * b2 + a2 * b3,
|
|
59
|
+
a1 * b2 + a3 * b3,
|
|
60
|
+
];
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Rotates a mat2 by the given angle
|
|
64
|
+
*
|
|
65
|
+
* @param a the matrix to rotate
|
|
66
|
+
* @param rad the angle to rotate the matrix by
|
|
67
|
+
*/
|
|
68
|
+
export function rotate(a, rad) {
|
|
69
|
+
const [a0, a1, a2, a3] = a;
|
|
70
|
+
const s = Math.sin(rad);
|
|
71
|
+
const c = Math.cos(rad);
|
|
72
|
+
return [a0 * c + a2 * s, a1 * c + a3 * s, a0 * -s + a2 * c, a1 * -s + a3 * c];
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Scales the mat2 by the dimensions in the given vec2
|
|
76
|
+
**/
|
|
77
|
+
export function scale(a, v) {
|
|
78
|
+
const [a0, a1, a2, a3] = a;
|
|
79
|
+
const [v0, v1] = v;
|
|
80
|
+
return [a0 * v0, a1 * v0, a2 * v1, a3 * v1];
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Creates a matrix from a given angle
|
|
84
|
+
*/
|
|
85
|
+
export function fromRotation(rad) {
|
|
86
|
+
const s = Math.sin(rad);
|
|
87
|
+
const c = Math.cos(rad);
|
|
88
|
+
return [c, s, -s, c];
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Creates a matrix from a vector scaling
|
|
92
|
+
*/
|
|
93
|
+
export function fromScaling(v) {
|
|
94
|
+
return [v[0], 0, 0, v[1]];
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Returns Frobenius norm of a mat2
|
|
98
|
+
*/
|
|
99
|
+
export function frob(a) {
|
|
100
|
+
return Math.sqrt(a[0] * a[0] + a[1] * a[1] + a[2] * a[2] + a[3] * a[3]);
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Adds two mat2's
|
|
104
|
+
*/
|
|
105
|
+
export function add(a, b) {
|
|
106
|
+
return [a[0] + b[0], a[1] + b[1], a[2] + b[2], a[3] + b[3]];
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Subtracts matrix b from matrix a
|
|
110
|
+
*/
|
|
111
|
+
export function subtract(a, b) {
|
|
112
|
+
return [a[0] - b[0], a[1] - b[1], a[2] - b[2], a[3] - b[3]];
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Returns whether or not the matrices have exactly the same elements in the same position (when compared with ===)
|
|
116
|
+
*/
|
|
117
|
+
export function exactEquals(a, b) {
|
|
118
|
+
return a[0] === b[0] && a[1] === b[1] && a[2] === b[2] && a[3] === b[3];
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* Returns whether or not the matrices have approximately the same elements in the same position.
|
|
122
|
+
*/
|
|
123
|
+
export function equals(a, b) {
|
|
124
|
+
const [a0, a1, a2, a3] = a;
|
|
125
|
+
const [b0, b1, b2, b3] = b;
|
|
126
|
+
return (Math.abs(a0 - b0) <=
|
|
127
|
+
Common.EPSILON * Math.max(1, Math.abs(a0), Math.abs(b0)) &&
|
|
128
|
+
Math.abs(a1 - b1) <=
|
|
129
|
+
Common.EPSILON * Math.max(1, Math.abs(a1), Math.abs(b1)) &&
|
|
130
|
+
Math.abs(a2 - b2) <=
|
|
131
|
+
Common.EPSILON * Math.max(1, Math.abs(a2), Math.abs(b2)) &&
|
|
132
|
+
Math.abs(a3 - b3) <=
|
|
133
|
+
Common.EPSILON * Math.max(1, Math.abs(a3), Math.abs(b3)));
|
|
134
|
+
}
|
|
135
|
+
/**
|
|
136
|
+
* Multiply each element of the matrix by a scalar.
|
|
137
|
+
*
|
|
138
|
+
* @param a the matrix to scale
|
|
139
|
+
* @param s amount to scale the matrix's elements by
|
|
140
|
+
*/
|
|
141
|
+
export function multiplyScalar(a, s) {
|
|
142
|
+
return [a[0] * s, a[1] * s, a[2] * s, a[3] * s];
|
|
143
|
+
}
|
|
144
|
+
/**
|
|
145
|
+
* Adds two mat2's after multiplying each element of the second operand by a scalar value.
|
|
146
|
+
*/
|
|
147
|
+
export function multiplyScalarAndAdd(a, b, scale) {
|
|
148
|
+
return [
|
|
149
|
+
a[0] + b[0] * scale,
|
|
150
|
+
a[1] + b[1] * scale,
|
|
151
|
+
a[2] + b[2] * scale,
|
|
152
|
+
a[3] + b[3] * scale,
|
|
153
|
+
];
|
|
154
|
+
}
|
|
155
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF0Mi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9tYXQyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxNQUFNLE1BQU0sVUFBVSxDQUFBO0FBS2xDOzs7R0FHRztBQUNILE1BQU0sQ0FBQyxNQUFNLFFBQVEsR0FBUyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQTtBQUV6RDs7R0FFRztBQUNILE1BQU0sVUFBVSxTQUFTLENBQUMsQ0FBTztJQUNoQyxrQkFBa0I7SUFDbEIsT0FBTztRQUNOLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ1YsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7S0FDVixDQUFBO0FBQ0YsQ0FBQztBQUVEOztHQUVHO0FBQ0gsTUFBTSxVQUFVLE1BQU0sQ0FBQyxDQUFPO0lBQzdCLE1BQU0sQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUE7SUFFMUIsNEJBQTRCO0lBQzVCLE1BQU0sR0FBRyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQTtJQUU3QixJQUFJLENBQUMsR0FBRyxFQUFFO1FBQ1QsT0FBTyxJQUFJLENBQUE7S0FDWDtJQUNELE1BQU0sTUFBTSxHQUFHLENBQUMsR0FBRyxHQUFHLENBQUE7SUFFdEIsa0JBQWtCO0lBQ2xCLE9BQU87UUFDSixFQUFFLEdBQUcsTUFBTSxFQUFFLENBQUMsRUFBRSxHQUFHLE1BQU07UUFDMUIsQ0FBQyxFQUFFLEdBQUcsTUFBTSxFQUFHLEVBQUUsR0FBRyxNQUFNO0tBQzNCLENBQUE7QUFDRixDQUFDO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLFVBQVUsT0FBTyxDQUFDLENBQU87SUFDOUIsOENBQThDO0lBQzlDLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUNmLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUE7QUFDaEMsQ0FBQztBQUVEOzs7R0FHRztBQUNILE1BQU0sVUFBVSxXQUFXLENBQUMsQ0FBTztJQUNsQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtBQUNqQyxDQUFDO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLFVBQVUsUUFBUSxDQUFDLENBQU8sRUFBRSxDQUFPO0lBQ3hDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUE7SUFDMUIsTUFBTSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQTtJQUUxQixPQUFPO1FBQ04sRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRTtRQUNqQixFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFO1FBQ2pCLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUU7UUFDakIsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRTtLQUNqQixDQUFBO0FBQ0YsQ0FBQztBQUVEOzs7OztHQUtHO0FBQ0gsTUFBTSxVQUFVLE1BQU0sQ0FBQyxDQUFPLEVBQUUsR0FBVztJQUMxQyxNQUFNLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFBO0lBQzFCLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUE7SUFDdkIsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQTtJQUV2QixPQUFPLENBQUMsRUFBRSxHQUFHLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxFQUFFLEVBQUUsR0FBRyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsRUFBRSxFQUFFLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsRUFBRSxFQUFFLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFBO0FBQzlFLENBQUM7QUFFRDs7SUFFSTtBQUNKLE1BQU0sVUFBVSxLQUFLLENBQUMsQ0FBTyxFQUFFLENBQU87SUFDckMsTUFBTSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQTtJQUMxQixNQUFNLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQTtJQUVsQixPQUFPLENBQUMsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFBO0FBQzVDLENBQUM7QUFFRDs7R0FFRztBQUNILE1BQU0sVUFBVSxZQUFZLENBQUMsR0FBVztJQUN2QyxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFBO0lBQ3ZCLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUE7SUFDdkIsT0FBTyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUE7QUFDckIsQ0FBQztBQUVEOztHQUVHO0FBQ0gsTUFBTSxVQUFVLFdBQVcsQ0FBQyxDQUFPO0lBQ2xDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtBQUMxQixDQUFDO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLFVBQVUsSUFBSSxDQUFDLENBQU87SUFDM0IsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtBQUN4RSxDQUFDO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLFVBQVUsR0FBRyxDQUFDLENBQU8sRUFBRSxDQUFPO0lBQ25DLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7QUFDNUQsQ0FBQztBQUVEOztHQUVHO0FBQ0gsTUFBTSxVQUFVLFFBQVEsQ0FBQyxDQUFPLEVBQUUsQ0FBTztJQUN4QyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO0FBQzVELENBQUM7QUFFRDs7R0FFRztBQUNILE1BQU0s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
|
package/lib/mat2d.d.ts
ADDED
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
import { Vec2 } from './vec2';
|
|
2
|
+
export type Mat2d = readonly [number, number, number, number, number, number];
|
|
3
|
+
/**
|
|
4
|
+
* 2x3 Matrix
|
|
5
|
+
* @module mat2d
|
|
6
|
+
* @description
|
|
7
|
+
* A mat2d contains six elements defined as:
|
|
8
|
+
* <pre>
|
|
9
|
+
* [a, b,
|
|
10
|
+
* c, d,
|
|
11
|
+
* tx, ty]
|
|
12
|
+
* </pre>
|
|
13
|
+
* This is a short form for the 3x3 matrix:
|
|
14
|
+
* <pre>
|
|
15
|
+
* [a, b, 0,
|
|
16
|
+
* c, d, 0,
|
|
17
|
+
* tx, ty, 1]
|
|
18
|
+
* </pre>
|
|
19
|
+
* The last column is ignored so the array is shorter and operations are faster.
|
|
20
|
+
*/
|
|
21
|
+
/**
|
|
22
|
+
* The identity matrix of mat2d
|
|
23
|
+
*/
|
|
24
|
+
export declare const identity: readonly number[];
|
|
25
|
+
/**
|
|
26
|
+
* Inverts a mat2d
|
|
27
|
+
*/
|
|
28
|
+
export declare function invert(a: Mat2d): Mat2d | null;
|
|
29
|
+
/**
|
|
30
|
+
* Calculates the determinant of a mat2d
|
|
31
|
+
*/
|
|
32
|
+
export declare function determinant(a: Mat2d): number;
|
|
33
|
+
/**
|
|
34
|
+
* Multiplies two mat2d's
|
|
35
|
+
*/
|
|
36
|
+
export declare function multiply(a: Mat2d, b: Mat2d): Mat2d;
|
|
37
|
+
/**
|
|
38
|
+
* Rotates a mat2d by the given angle
|
|
39
|
+
*/
|
|
40
|
+
export declare function rotate(a: Mat2d, rad: number): Mat2d;
|
|
41
|
+
/**
|
|
42
|
+
* Scales the mat2d by the dimensions in the given vec2
|
|
43
|
+
**/
|
|
44
|
+
export declare function scale(a: Mat2d, v: Vec2): Mat2d;
|
|
45
|
+
/**
|
|
46
|
+
* Translates the mat2d by the dimensions in the given vec2
|
|
47
|
+
**/
|
|
48
|
+
export declare function translate(m: Mat2d, v: Vec2): Mat2d;
|
|
49
|
+
/**
|
|
50
|
+
* Creates a matrix from a given angle
|
|
51
|
+
* This is equivalent to (but much faster than):
|
|
52
|
+
*/
|
|
53
|
+
export declare function fromRotation(rad: number): Mat2d;
|
|
54
|
+
/**
|
|
55
|
+
* Creates a matrix from a vector scaling
|
|
56
|
+
*/
|
|
57
|
+
export declare function fromScaling(v: Vec2): Mat2d;
|
|
58
|
+
/**
|
|
59
|
+
* Creates a matrix from a vector translation
|
|
60
|
+
*/
|
|
61
|
+
export declare function fromTranslation(v: Vec2): Mat2d;
|
|
62
|
+
/**
|
|
63
|
+
* Returns Frobenius norm of a mat2d
|
|
64
|
+
*/
|
|
65
|
+
export declare function frob(a: Mat2d): number;
|
|
66
|
+
/**
|
|
67
|
+
* Adds two mat2d's
|
|
68
|
+
*/
|
|
69
|
+
export declare function add(a: Mat2d, b: Mat2d): Mat2d;
|
|
70
|
+
/**
|
|
71
|
+
* Subtracts matrix b from matrix a
|
|
72
|
+
*/
|
|
73
|
+
export declare function subtract(a: Mat2d, b: Mat2d): Mat2d;
|
|
74
|
+
/**
|
|
75
|
+
* Multiply each element of the matrix by a scalar.
|
|
76
|
+
*/
|
|
77
|
+
export declare function multiplyScalar(a: Mat2d, s: number): Mat2d;
|
|
78
|
+
/**
|
|
79
|
+
* Adds two mat2d's after multiplying each element of the second operand by a scalar value.
|
|
80
|
+
*/
|
|
81
|
+
export declare function multiplyScalarAndAdd(a: Mat2d, b: Mat2d, scale: number): Mat2d;
|
|
82
|
+
/**
|
|
83
|
+
* Returns whether or not the matrices have exactly the same elements in the same position (when compared with ===)
|
|
84
|
+
*/
|
|
85
|
+
export declare function exactEquals(a: Mat2d, b: Mat2d): boolean;
|
|
86
|
+
/**
|
|
87
|
+
* Returns whether or not the matrices have approximately the same elements in the same position.
|
|
88
|
+
*/
|
|
89
|
+
export declare function equals(a: Mat2d, b: Mat2d): boolean;
|
package/lib/mat2d.js
ADDED
|
@@ -0,0 +1,238 @@
|
|
|
1
|
+
import * as Common from './common';
|
|
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
|
+
/**
|
|
21
|
+
* The identity matrix of mat2d
|
|
22
|
+
*/
|
|
23
|
+
// prettier-ignore
|
|
24
|
+
export const identity = Object.freeze([
|
|
25
|
+
1, 0,
|
|
26
|
+
0, 1,
|
|
27
|
+
0, 0
|
|
28
|
+
]);
|
|
29
|
+
/**
|
|
30
|
+
* Inverts a mat2d
|
|
31
|
+
*/
|
|
32
|
+
export function invert(a) {
|
|
33
|
+
const [aa, ab, ac, ad, atx, aty] = a;
|
|
34
|
+
const det = aa * ad - ab * ac;
|
|
35
|
+
if (!det) {
|
|
36
|
+
return null;
|
|
37
|
+
}
|
|
38
|
+
const detinv = 1 / det;
|
|
39
|
+
// prettier-ignore
|
|
40
|
+
return [
|
|
41
|
+
ad * detinv, -ab * detinv,
|
|
42
|
+
-ac * detinv, aa * detinv,
|
|
43
|
+
(ac * aty - ad * atx) * detinv,
|
|
44
|
+
(ab * atx - aa * aty) * detinv,
|
|
45
|
+
];
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Calculates the determinant of a mat2d
|
|
49
|
+
*/
|
|
50
|
+
export function determinant(a) {
|
|
51
|
+
return a[0] * a[3] - a[1] * a[2];
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Multiplies two mat2d's
|
|
55
|
+
*/
|
|
56
|
+
export function multiply(a, b) {
|
|
57
|
+
const [a0, a1, a2, a3, a4, a5] = a;
|
|
58
|
+
const [b0, b1, b2, b3, b4, b5] = b;
|
|
59
|
+
// prettier-ignore
|
|
60
|
+
return [
|
|
61
|
+
a0 * b0 + a2 * b1, a1 * b0 + a3 * b1,
|
|
62
|
+
a0 * b2 + a2 * b3, a1 * b2 + a3 * b3,
|
|
63
|
+
a0 * b4 + a2 * b5 + a4,
|
|
64
|
+
a1 * b4 + a3 * b5 + a5,
|
|
65
|
+
];
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Rotates a mat2d by the given angle
|
|
69
|
+
*/
|
|
70
|
+
export function rotate(a, rad) {
|
|
71
|
+
const [a0, a1, a2, a3, tx, ty] = a;
|
|
72
|
+
const s = Math.sin(rad);
|
|
73
|
+
const c = Math.cos(rad);
|
|
74
|
+
// prettier-ignore
|
|
75
|
+
return [
|
|
76
|
+
a0 * c + a2 * s, a1 * c + a3 * s,
|
|
77
|
+
a0 * -s + a2 * c, a1 * -s + a3 * c,
|
|
78
|
+
tx, ty
|
|
79
|
+
];
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Scales the mat2d by the dimensions in the given vec2
|
|
83
|
+
**/
|
|
84
|
+
export function scale(a, v) {
|
|
85
|
+
const [a0, a1, a2, a3, tx, ty] = a;
|
|
86
|
+
const [sx, sy] = v;
|
|
87
|
+
// prettier-ignore
|
|
88
|
+
return [
|
|
89
|
+
a0 * sx, a1 * sx,
|
|
90
|
+
a2 * sy, a3 * sy,
|
|
91
|
+
tx, ty
|
|
92
|
+
];
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Translates the mat2d by the dimensions in the given vec2
|
|
96
|
+
**/
|
|
97
|
+
export function translate(m, v) {
|
|
98
|
+
const [a, b, c, d, tx, ty] = m;
|
|
99
|
+
const [x, y] = v;
|
|
100
|
+
// prettier-ignore
|
|
101
|
+
return [
|
|
102
|
+
a, b,
|
|
103
|
+
c, d,
|
|
104
|
+
a * x + c * y + tx,
|
|
105
|
+
b * x + d * y + ty
|
|
106
|
+
];
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Creates a matrix from a given angle
|
|
110
|
+
* This is equivalent to (but much faster than):
|
|
111
|
+
*/
|
|
112
|
+
export function fromRotation(rad) {
|
|
113
|
+
const s = Math.sin(rad);
|
|
114
|
+
const c = Math.cos(rad);
|
|
115
|
+
// prettier-ignore
|
|
116
|
+
return [
|
|
117
|
+
c, s,
|
|
118
|
+
-s, c,
|
|
119
|
+
0, 0,
|
|
120
|
+
];
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Creates a matrix from a vector scaling
|
|
124
|
+
*/
|
|
125
|
+
export function fromScaling(v) {
|
|
126
|
+
const [x, y] = v;
|
|
127
|
+
// prettier-ignore
|
|
128
|
+
return [
|
|
129
|
+
x, 0,
|
|
130
|
+
0, y,
|
|
131
|
+
0, 0,
|
|
132
|
+
];
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* Creates a matrix from a vector translation
|
|
136
|
+
*/
|
|
137
|
+
export function fromTranslation(v) {
|
|
138
|
+
const [x, y] = v;
|
|
139
|
+
// prettier-ignore
|
|
140
|
+
return [
|
|
141
|
+
1, 0,
|
|
142
|
+
0, 1,
|
|
143
|
+
x, y,
|
|
144
|
+
];
|
|
145
|
+
}
|
|
146
|
+
/**
|
|
147
|
+
* Returns Frobenius norm of a mat2d
|
|
148
|
+
*/
|
|
149
|
+
export function frob(a) {
|
|
150
|
+
// prettier-ignore
|
|
151
|
+
return Math.sqrt(a[0] ** 2 +
|
|
152
|
+
a[1] ** 2 +
|
|
153
|
+
a[2] ** 2 +
|
|
154
|
+
a[3] ** 2 +
|
|
155
|
+
a[4] ** 2 +
|
|
156
|
+
a[5] ** 2 + 1);
|
|
157
|
+
}
|
|
158
|
+
/**
|
|
159
|
+
* Adds two mat2d's
|
|
160
|
+
*/
|
|
161
|
+
export function add(a, b) {
|
|
162
|
+
return [
|
|
163
|
+
a[0] + b[0],
|
|
164
|
+
a[1] + b[1],
|
|
165
|
+
a[2] + b[2],
|
|
166
|
+
a[3] + b[3],
|
|
167
|
+
a[4] + b[4],
|
|
168
|
+
a[5] + b[5],
|
|
169
|
+
];
|
|
170
|
+
}
|
|
171
|
+
/**
|
|
172
|
+
* Subtracts matrix b from matrix a
|
|
173
|
+
*/
|
|
174
|
+
export function subtract(a, b) {
|
|
175
|
+
return [
|
|
176
|
+
a[0] - b[0],
|
|
177
|
+
a[1] - b[1],
|
|
178
|
+
a[2] - b[2],
|
|
179
|
+
a[3] - b[3],
|
|
180
|
+
a[4] - b[4],
|
|
181
|
+
a[5] - b[5],
|
|
182
|
+
];
|
|
183
|
+
}
|
|
184
|
+
/**
|
|
185
|
+
* Multiply each element of the matrix by a scalar.
|
|
186
|
+
*/
|
|
187
|
+
export function multiplyScalar(a, s) {
|
|
188
|
+
// prettier-ignore
|
|
189
|
+
return [
|
|
190
|
+
a[0] * s, a[1] * s,
|
|
191
|
+
a[2] * s, a[3] * s,
|
|
192
|
+
a[4] * s, a[5] * s,
|
|
193
|
+
];
|
|
194
|
+
}
|
|
195
|
+
/**
|
|
196
|
+
* Adds two mat2d's after multiplying each element of the second operand by a scalar value.
|
|
197
|
+
*/
|
|
198
|
+
export function multiplyScalarAndAdd(a, b, scale) {
|
|
199
|
+
return [
|
|
200
|
+
a[0] + b[0] * scale,
|
|
201
|
+
a[1] + b[1] * scale,
|
|
202
|
+
a[2] + b[2] * scale,
|
|
203
|
+
a[3] + b[3] * scale,
|
|
204
|
+
a[4] + b[4] * scale,
|
|
205
|
+
a[5] + b[5] * scale,
|
|
206
|
+
];
|
|
207
|
+
}
|
|
208
|
+
/**
|
|
209
|
+
* Returns whether or not the matrices have exactly the same elements in the same position (when compared with ===)
|
|
210
|
+
*/
|
|
211
|
+
export function exactEquals(a, b) {
|
|
212
|
+
return (a[0] === b[0] &&
|
|
213
|
+
a[1] === b[1] &&
|
|
214
|
+
a[2] === b[2] &&
|
|
215
|
+
a[3] === b[3] &&
|
|
216
|
+
a[4] === b[4] &&
|
|
217
|
+
a[5] === b[5]);
|
|
218
|
+
}
|
|
219
|
+
/**
|
|
220
|
+
* Returns whether or not the matrices have approximately the same elements in the same position.
|
|
221
|
+
*/
|
|
222
|
+
export function equals(a, b) {
|
|
223
|
+
const [a0, a1, a2, a3, a4, a5] = a;
|
|
224
|
+
const [b0, b1, b2, b3, b4, b5] = b;
|
|
225
|
+
return (Math.abs(a0 - b0) <=
|
|
226
|
+
Common.EPSILON * Math.max(1, Math.abs(a0), Math.abs(b0)) &&
|
|
227
|
+
Math.abs(a1 - b1) <=
|
|
228
|
+
Common.EPSILON * Math.max(1, Math.abs(a1), Math.abs(b1)) &&
|
|
229
|
+
Math.abs(a2 - b2) <=
|
|
230
|
+
Common.EPSILON * Math.max(1, Math.abs(a2), Math.abs(b2)) &&
|
|
231
|
+
Math.abs(a3 - b3) <=
|
|
232
|
+
Common.EPSILON * Math.max(1, Math.abs(a3), Math.abs(b3)) &&
|
|
233
|
+
Math.abs(a4 - b4) <=
|
|
234
|
+
Common.EPSILON * Math.max(1, Math.abs(a4), Math.abs(b4)) &&
|
|
235
|
+
Math.abs(a5 - b5) <=
|
|
236
|
+
Common.EPSILON * Math.max(1, Math.abs(a5), Math.abs(b5)));
|
|
237
|
+
}
|
|
238
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF0MmQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvbWF0MmQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLE1BQU0sTUFBTSxVQUFVLENBQUE7QUFLbEM7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBaUJHO0FBRUg7O0dBRUc7QUFDSCxrQkFBa0I7QUFDbEIsTUFBTSxDQUFDLE1BQU0sUUFBUSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUM7SUFDckMsQ0FBQyxFQUFFLENBQUM7SUFDSixDQUFDLEVBQUUsQ0FBQztJQUNKLENBQUMsRUFBRSxDQUFDO0NBQ0osQ0FBQyxDQUFBO0FBRUY7O0dBRUc7QUFDSCxNQUFNLFVBQVUsTUFBTSxDQUFDLENBQVE7SUFDOUIsTUFBTSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFBO0lBRXBDLE1BQU0sR0FBRyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQTtJQUU3QixJQUFJLENBQUMsR0FBRyxFQUFFO1FBQ1QsT0FBTyxJQUFJLENBQUE7S0FDWDtJQUVELE1BQU0sTUFBTSxHQUFHLENBQUMsR0FBRyxHQUFHLENBQUE7SUFFdEIsa0JBQWtCO0lBQ2xCLE9BQU87UUFDSixFQUFFLEdBQUcsTUFBTSxFQUFFLENBQUMsRUFBRSxHQUFHLE1BQU07UUFDMUIsQ0FBQyxFQUFFLEdBQUcsTUFBTSxFQUFHLEVBQUUsR0FBRyxNQUFNO1FBRTFCLENBQUMsRUFBRSxHQUFHLEdBQUcsR0FBRyxFQUFFLEdBQUcsR0FBRyxDQUFDLEdBQUcsTUFBTTtRQUMvQixDQUFDLEVBQUUsR0FBRyxHQUFHLEdBQUcsRUFBRSxHQUFHLEdBQUcsQ0FBQyxHQUFHLE1BQU07S0FDOUIsQ0FBQTtBQUNGLENBQUM7QUFFRDs7R0FFRztBQUNILE1BQU0sVUFBVSxXQUFXLENBQUMsQ0FBUTtJQUNu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SSxDQUFDO1FBQ1QsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFDVCxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUNULENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUNiLENBQUE7QUFDRixDQUFDO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLFVBQVUsR0FBRyxDQUFDLENBQVEsRUFBRSxDQUFRO0lBQ3JDLE9BQU87UUFDTixDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNYLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ1gsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDWCxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNYLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ1gsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7S0FDWCxDQUFBO0FBQ0YsQ0FBQztBQUVEOztHQUVHO0FBQ0gsTUFBTSxVQUFVLFFBQVEsQ0FBQyxDQUFRLEVBQUUsQ0FBUTtJQUMxQyxPQUFPO1FBQ04sQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDWCxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNYLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ1gsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDWCxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNYLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0tBQ1gsQ0FBQTtBQUNG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
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|