linearly 0.8.2 → 0.10.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/lib/mat2d.js ADDED
@@ -0,0 +1,291 @@
1
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
2
+ if (k2 === undefined) k2 = k;
3
+ var desc = Object.getOwnPropertyDescriptor(m, k);
4
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
5
+ desc = { enumerable: true, get: function() { return m[k]; } };
6
+ }
7
+ Object.defineProperty(o, k2, desc);
8
+ }) : (function(o, m, k, k2) {
9
+ if (k2 === undefined) k2 = k;
10
+ o[k2] = m[k];
11
+ }));
12
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
13
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
14
+ }) : function(o, v) {
15
+ o["default"] = v;
16
+ });
17
+ var __importStar = (this && this.__importStar) || function (mod) {
18
+ if (mod && mod.__esModule) return mod;
19
+ var result = {};
20
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
21
+ __setModuleDefault(result, mod);
22
+ return result;
23
+ };
24
+ (function (factory) {
25
+ if (typeof module === "object" && typeof module.exports === "object") {
26
+ var v = factory(require, exports);
27
+ if (v !== undefined) module.exports = v;
28
+ }
29
+ else if (typeof define === "function" && define.amd) {
30
+ define(["require", "exports", "./common"], factory);
31
+ }
32
+ })(function (require, exports) {
33
+ "use strict";
34
+ Object.defineProperty(exports, "__esModule", { value: true });
35
+ exports.equals = exports.exactEquals = exports.multiplyScalarAndAdd = exports.multiplyScalar = exports.subtract = exports.add = exports.frob = exports.fromTranslation = exports.fromScaling = exports.fromRotation = exports.translate = exports.scale = exports.rotate = exports.multiply = exports.determinant = exports.invert = exports.zero = exports.identity = void 0;
36
+ const Common = __importStar(require("./common"));
37
+ /**
38
+ * 2x3 Matrix
39
+ * @module mat2d
40
+ * @description
41
+ * A mat2d contains six elements defined as:
42
+ * <pre>
43
+ * [a, b,
44
+ * c, d,
45
+ * tx, ty]
46
+ * </pre>
47
+ * This is a short form for the 3x3 matrix:
48
+ * <pre>
49
+ * [a, b, 0,
50
+ * c, d, 0,
51
+ * tx, ty, 1]
52
+ * </pre>
53
+ * The last column is ignored so the array is shorter and operations are faster.
54
+ */
55
+ /**
56
+ * The identity matrix of mat2d
57
+ */
58
+ // prettier-ignore
59
+ exports.identity = Object.freeze([
60
+ 1, 0,
61
+ 0, 1,
62
+ 0, 0
63
+ ]);
64
+ exports.zero = Object.freeze([0, 0, 0, 0, 0, 0]);
65
+ /**
66
+ * Inverts a mat2d
67
+ */
68
+ function invert(a) {
69
+ const [aa, ab, ac, ad, atx, aty] = a;
70
+ const det = aa * ad - ab * ac;
71
+ if (!det) {
72
+ return null;
73
+ }
74
+ const detinv = 1 / det;
75
+ // prettier-ignore
76
+ return [
77
+ ad * detinv, -ab * detinv,
78
+ -ac * detinv, aa * detinv,
79
+ (ac * aty - ad * atx) * detinv,
80
+ (ab * atx - aa * aty) * detinv,
81
+ ];
82
+ }
83
+ exports.invert = invert;
84
+ /**
85
+ * Calculates the determinant of a mat2d
86
+ */
87
+ function determinant(a) {
88
+ return a[0] * a[3] - a[1] * a[2];
89
+ }
90
+ exports.determinant = determinant;
91
+ /**
92
+ * Multiplies two mat2d's
93
+ */
94
+ function multiply(a, b) {
95
+ const [a0, a1, a2, a3, a4, a5] = a;
96
+ const [b0, b1, b2, b3, b4, b5] = b;
97
+ // prettier-ignore
98
+ return [
99
+ a0 * b0 + a2 * b1, a1 * b0 + a3 * b1,
100
+ a0 * b2 + a2 * b3, a1 * b2 + a3 * b3,
101
+ a0 * b4 + a2 * b5 + a4,
102
+ a1 * b4 + a3 * b5 + a5,
103
+ ];
104
+ }
105
+ exports.multiply = multiply;
106
+ /**
107
+ * Rotates a mat2d by the given angle
108
+ */
109
+ function rotate(a, rad) {
110
+ const [a0, a1, a2, a3, tx, ty] = a;
111
+ const s = Math.sin(rad);
112
+ const c = Math.cos(rad);
113
+ // prettier-ignore
114
+ return [
115
+ a0 * c + a2 * s, a1 * c + a3 * s,
116
+ a0 * -s + a2 * c, a1 * -s + a3 * c,
117
+ tx, ty
118
+ ];
119
+ }
120
+ exports.rotate = rotate;
121
+ /**
122
+ * Scales the mat2d by the dimensions in the given vec2
123
+ **/
124
+ function scale(a, v) {
125
+ const [a0, a1, a2, a3, tx, ty] = a;
126
+ const [sx, sy] = v;
127
+ // prettier-ignore
128
+ return [
129
+ a0 * sx, a1 * sx,
130
+ a2 * sy, a3 * sy,
131
+ tx, ty
132
+ ];
133
+ }
134
+ exports.scale = scale;
135
+ /**
136
+ * Translates the mat2d by the dimensions in the given vec2
137
+ **/
138
+ function translate(m, v) {
139
+ const [a, b, c, d, tx, ty] = m;
140
+ const [x, y] = v;
141
+ // prettier-ignore
142
+ return [
143
+ a, b,
144
+ c, d,
145
+ a * x + c * y + tx,
146
+ b * x + d * y + ty
147
+ ];
148
+ }
149
+ exports.translate = translate;
150
+ /**
151
+ * Creates a matrix from a given angle
152
+ * This is equivalent to (but much faster than):
153
+ */
154
+ function fromRotation(rad) {
155
+ const s = Math.sin(rad);
156
+ const c = Math.cos(rad);
157
+ // prettier-ignore
158
+ return [
159
+ c, s,
160
+ -s, c,
161
+ 0, 0,
162
+ ];
163
+ }
164
+ exports.fromRotation = fromRotation;
165
+ /**
166
+ * Creates a matrix from a vector scaling
167
+ */
168
+ function fromScaling(v) {
169
+ const [x, y] = v;
170
+ // prettier-ignore
171
+ return [
172
+ x, 0,
173
+ 0, y,
174
+ 0, 0,
175
+ ];
176
+ }
177
+ exports.fromScaling = fromScaling;
178
+ /**
179
+ * Creates a matrix from a vector translation
180
+ */
181
+ function fromTranslation(v) {
182
+ const [x, y] = v;
183
+ // prettier-ignore
184
+ return [
185
+ 1, 0,
186
+ 0, 1,
187
+ x, y,
188
+ ];
189
+ }
190
+ exports.fromTranslation = fromTranslation;
191
+ /**
192
+ * Returns Frobenius norm of a mat2d
193
+ */
194
+ function frob(a) {
195
+ // prettier-ignore
196
+ return Math.sqrt(a[0] ** 2 +
197
+ a[1] ** 2 +
198
+ a[2] ** 2 +
199
+ a[3] ** 2 +
200
+ a[4] ** 2 +
201
+ a[5] ** 2 + 1);
202
+ }
203
+ exports.frob = frob;
204
+ /**
205
+ * Adds two mat2d's
206
+ */
207
+ function add(a, b) {
208
+ return [
209
+ a[0] + b[0],
210
+ a[1] + b[1],
211
+ a[2] + b[2],
212
+ a[3] + b[3],
213
+ a[4] + b[4],
214
+ a[5] + b[5],
215
+ ];
216
+ }
217
+ exports.add = add;
218
+ /**
219
+ * Subtracts matrix b from matrix a
220
+ */
221
+ function subtract(a, b) {
222
+ return [
223
+ a[0] - b[0],
224
+ a[1] - b[1],
225
+ a[2] - b[2],
226
+ a[3] - b[3],
227
+ a[4] - b[4],
228
+ a[5] - b[5],
229
+ ];
230
+ }
231
+ exports.subtract = subtract;
232
+ /**
233
+ * Multiply each element of the matrix by a scalar.
234
+ */
235
+ function multiplyScalar(a, s) {
236
+ // prettier-ignore
237
+ return [
238
+ a[0] * s, a[1] * s,
239
+ a[2] * s, a[3] * s,
240
+ a[4] * s, a[5] * s,
241
+ ];
242
+ }
243
+ exports.multiplyScalar = multiplyScalar;
244
+ /**
245
+ * Adds two mat2d's after multiplying each element of the second operand by a scalar value.
246
+ */
247
+ function multiplyScalarAndAdd(a, b, scale) {
248
+ return [
249
+ a[0] + b[0] * scale,
250
+ a[1] + b[1] * scale,
251
+ a[2] + b[2] * scale,
252
+ a[3] + b[3] * scale,
253
+ a[4] + b[4] * scale,
254
+ a[5] + b[5] * scale,
255
+ ];
256
+ }
257
+ exports.multiplyScalarAndAdd = multiplyScalarAndAdd;
258
+ /**
259
+ * Returns whether or not the matrices have exactly the same elements in the same position (when compared with ===)
260
+ */
261
+ function exactEquals(a, b) {
262
+ return (a[0] === b[0] &&
263
+ a[1] === b[1] &&
264
+ a[2] === b[2] &&
265
+ a[3] === b[3] &&
266
+ a[4] === b[4] &&
267
+ a[5] === b[5]);
268
+ }
269
+ exports.exactEquals = exactEquals;
270
+ /**
271
+ * Returns whether or not the matrices have approximately the same elements in the same position.
272
+ */
273
+ function equals(a, b) {
274
+ const [a0, a1, a2, a3, a4, a5] = a;
275
+ const [b0, b1, b2, b3, b4, b5] = b;
276
+ return (Math.abs(a0 - b0) <=
277
+ Common.EPSILON * Math.max(1, Math.abs(a0), Math.abs(b0)) &&
278
+ Math.abs(a1 - b1) <=
279
+ Common.EPSILON * Math.max(1, Math.abs(a1), Math.abs(b1)) &&
280
+ Math.abs(a2 - b2) <=
281
+ Common.EPSILON * Math.max(1, Math.abs(a2), Math.abs(b2)) &&
282
+ Math.abs(a3 - b3) <=
283
+ Common.EPSILON * Math.max(1, Math.abs(a3), Math.abs(b3)) &&
284
+ Math.abs(a4 - b4) <=
285
+ Common.EPSILON * Math.max(1, Math.abs(a4), Math.abs(b4)) &&
286
+ Math.abs(a5 - b5) <=
287
+ Common.EPSILON * Math.max(1, Math.abs(a5), Math.abs(b5)));
288
+ }
289
+ exports.equals = equals;
290
+ });
291
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF0MmQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvbWF0MmQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUFBQSxpREFBa0M7SUFLbEM7Ozs7Ozs7Ozs7Ozs7Ozs7O09BaUJHO0lBRUg7O09BRUc7SUFDSCxrQkFBa0I7SUFDTCxRQUFBLFFBQVEsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDO1FBQ3JDLENBQUMsRUFBRSxDQUFDO1FBQ0osQ0FBQyxFQUFFLENBQUM7UUFDSixDQUFDLEVBQUUsQ0FBQztLQUNKLENBQUMsQ0FBQTtJQUVXLFFBQUEsSUFBSSxHQUFVLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUE7SUFFNUQ7O09BRUc7SUFDSCxTQUFnQixNQUFNLENBQUMsQ0FBUTtRQUM5QixNQUFNLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUE7UUFFcEMsTUFBTSxHQUFHLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFBO1FBRTdCLElBQUksQ0FBQyxHQUFHLEVBQUU7WUFDVCxPQUFPLElBQUksQ0FBQTtTQUNYO1FBRUQsTUFBTSxNQUFNLEdBQUcsQ0FBQyxHQUFHLEdBQUcsQ0FBQTtRQUV0QixrQkFBa0I7UUFDbEIsT0FBTztZQUNKLEVBQUUsR0FBRyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEdBQUcsTUFBTTtZQUMxQixDQUFDLEVBQUUsR0FBRyxNQUFNLEVBQUcsRUFBRSxHQUFHLE1BQU07WUFFMUIsQ0FBQyxFQUFFLEdBQUcsR0FBRyxHQUFHLEVBQUUsR0FBRyxHQUFHLENBQUMsR0FBRyxNQUFNO1lBQy9CLENBQUMsRUFB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
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,123 @@
1
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
2
+ if (k2 === undefined) k2 = k;
3
+ var desc = Object.getOwnPropertyDescriptor(m, k);
4
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
5
+ desc = { enumerable: true, get: function() { return m[k]; } };
6
+ }
7
+ Object.defineProperty(o, k2, desc);
8
+ }) : (function(o, m, k, k2) {
9
+ if (k2 === undefined) k2 = k;
10
+ o[k2] = m[k];
11
+ }));
12
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
13
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
14
+ }) : function(o, v) {
15
+ o["default"] = v;
16
+ });
17
+ var __importStar = (this && this.__importStar) || function (mod) {
18
+ if (mod && mod.__esModule) return mod;
19
+ var result = {};
20
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
21
+ __setModuleDefault(result, mod);
22
+ return result;
23
+ };
24
+ (function (factory) {
25
+ if (typeof module === "object" && typeof module.exports === "object") {
26
+ var v = factory(require, exports);
27
+ if (v !== undefined) module.exports = v;
28
+ }
29
+ else if (typeof define === "function" && define.amd) {
30
+ define(["require", "exports", "./common", "./mat2d"], factory);
31
+ }
32
+ })(function (require, exports) {
33
+ "use strict";
34
+ Object.defineProperty(exports, "__esModule", { value: true });
35
+ const common_1 = require("./common");
36
+ const mat2d = __importStar(require("./mat2d"));
37
+ function areMat2dEqual(a, b) {
38
+ if (!Array.isArray(a) || !Array.isArray(b) || a.length !== b.length) {
39
+ return undefined;
40
+ }
41
+ for (let i = 0; i < a.length; i++) {
42
+ const nearlyEqual = Math.abs(a[i] - b[i]) <=
43
+ common_1.EPSILON * Math.max(1, Math.abs(a[i]), Math.abs(b[i]));
44
+ if (!nearlyEqual) {
45
+ return undefined;
46
+ }
47
+ }
48
+ return true;
49
+ }
50
+ ;
51
+ expect.addEqualityTesters([areMat2dEqual]);
52
+ const matA = [1, 2, 3, 4, 5, 6];
53
+ const matB = [7, 8, 9, 10, 11, 12];
54
+ describe('invert', () => {
55
+ expect(mat2d.invert(matA)).toEqual([-2, 1, 1.5, -0.5, 1, -2]);
56
+ expect(mat2d.invert([1, 0, 2, 0, 0, 0])).toEqual(null);
57
+ });
58
+ describe('determinant', () => {
59
+ expect(mat2d.determinant(matA)).toEqual(-2);
60
+ });
61
+ describe('multiply', () => {
62
+ expect(mat2d.multiply(matA, matB)).toEqual([31, 46, 39, 58, 52, 76]);
63
+ });
64
+ describe('rotate', () => {
65
+ expect(mat2d.rotate(matA, Math.PI * 0.5)).toEqual([3, 4, -1, -2, 5, 6]);
66
+ });
67
+ describe('scale', () => {
68
+ expect(mat2d.scale(matA, [2, 3])).toEqual([2, 4, 9, 12, 5, 6]);
69
+ });
70
+ describe('translate', () => {
71
+ expect(mat2d.translate(matA, [2, 3])).toEqual([1, 2, 3, 4, 16, 22]);
72
+ });
73
+ describe('frob', () => {
74
+ expect(mat2d.frob(matA)).toEqual(Math.sqrt(Math.pow(1, 2) +
75
+ Math.pow(2, 2) +
76
+ Math.pow(3, 2) +
77
+ Math.pow(4, 2) +
78
+ Math.pow(5, 2) +
79
+ Math.pow(6, 2) +
80
+ 1));
81
+ });
82
+ describe('add', () => {
83
+ expect(mat2d.add(matA, matB)).toEqual([8, 10, 12, 14, 16, 18]);
84
+ });
85
+ describe('subtract', () => {
86
+ expect(mat2d.subtract(matA, matB)).toEqual([-6, -6, -6, -6, -6, -6]);
87
+ });
88
+ describe('multiplyScalar', () => {
89
+ expect(mat2d.multiplyScalar(matA, 2)).toEqual([2, 4, 6, 8, 10, 12]);
90
+ });
91
+ describe('multiplyScalarAndAdd', () => {
92
+ expect(mat2d.multiplyScalarAndAdd(matA, matB, 0.5)).toEqual([
93
+ 4.5, 6, 7.5, 9, 10.5, 12,
94
+ ]);
95
+ });
96
+ describe('exactEquals', () => {
97
+ const matA = [0, 1, 2, 3, 4, 5];
98
+ const matB = [0, 1, 2, 3, 4, 5];
99
+ const matC = [1, 2, 3, 4, 5, 6];
100
+ it('should return true for identical matrices', () => {
101
+ expect(mat2d.exactEquals(matA, matB)).toBe(true);
102
+ });
103
+ it('should return false for different matrices', () => {
104
+ expect(mat2d.exactEquals(matA, matC)).toBe(false);
105
+ });
106
+ });
107
+ describe('equals', () => {
108
+ const matA = [0, 1, 2, 3, 4, 5];
109
+ const matB = [0, 1, 2, 3, 4, 5];
110
+ const matC = [1, 2, 3, 4, 5, 6];
111
+ const matD = [1e-16, 1, 2, 3, 4, 5];
112
+ it('should return true for identical matrices', () => {
113
+ expect(mat2d.equals(matA, matB)).toBe(true);
114
+ });
115
+ it('should return false for different matrices', () => {
116
+ expect(mat2d.equals(matA, matC)).toBe(false);
117
+ });
118
+ it('should return true for close but not identical matrices', () => {
119
+ expect(mat2d.equals(matA, matD)).toBe(true);
120
+ });
121
+ });
122
+ });
123
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF0MmQudGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9tYXQyZC50ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUFBQSxxQ0FBZ0M7SUFFaEMsK0NBQWdDO0lBRWhDLFNBQVMsYUFBYSxDQUFDLENBQVUsRUFBRSxDQUFVO1FBQzVDLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQyxNQUFNLEVBQUU7WUFDcEUsT0FBTyxTQUFTLENBQUE7U0FDaEI7UUFFRCxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUNsQyxNQUFNLFdBQVcsR0FDaEIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUNyQixnQkFBTyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO1lBRXRELElBQUksQ0FBQyxXQUFXLEVBQUU7Z0JBQ2pCLE9BQU8sU0FBUyxDQUFBO2FBQ2hCO1NBQ0Q7UUFDRCxPQUFPLElBQUksQ0FBQTtJQUNaLENBQUM7SUFFRCxDQUFDO0lBQUMsTUFBYyxDQUFDLGtCQUFrQixDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQTtJQUVwRCxNQUFNLElBQUksR0FBVSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUE7SUFDdEMsTUFBTSxJQUFJLEdBQVUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFBO0lBRXpDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsR0FBRyxFQUFFO1FBQ3ZCLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO1FBQzdELE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFBO0lBQ3ZELENBQUMsQ0FBQyxDQUFBO0lBRUYsUUFBUSxDQUFDLGFBQWEsRUFBRSxHQUFHLEVBQUU7UUFDNUIsTUFBTSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUM1QyxDQUFDLENBQUMsQ0FBQTtJQUVGLFFBQVEsQ0FBQyxVQUFVLEVBQUUsR0FBRyxFQUFFO1FBQ3pCLE1BQU0sQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQTtJQUNyRSxDQUFDLENBQUMsQ0FBQTtJQUVGLFFBQVEsQ0FBQyxRQUFRLEVBQUUsR0FBRyxFQUFFO1FBQ3ZCLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsRUFBRSxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUN4RSxDQUFDLENBQUMsQ0FBQTtJQUVGLFFBQVEsQ0FBQyxPQUFPLEVBQUUsR0FBRyxFQUFFO1FBQ3RCLE1BQU0sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBQy9ELENBQUMsQ0FBQyxDQUFBO0lBRUYsUUFBUSxDQUFDLFdBQVcsRUFBRSxHQUFHLEVBQUU7UUFDMUIsTUFBTSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUE7SUFDcEUsQ0FBQyxDQUFDLENBQUE7SUFFRixRQUFRLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRTtRQUNyQixNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FDL0IsSUFBSSxDQUFDLElBQUksQ0FDUixJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDYixJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDZCxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDZCxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDZCxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDZCxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDZCxDQUFDLENBQ0YsQ0FDRCxDQUFBO0lBQ0YsQ0FBQyxDQUFDLENBQUE7SUFFRixRQUFRLENBQUMsS0FBSyxFQUFFLEdBQUcsRUFBRTtRQUNwQixNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUE7SUFDL0QsQ0FBQyxDQUFDLENBQUE7SUFFRixRQUFRLENBQUMsVUFBVSxFQUFFLEdBQUcsRUFBRTtRQUN6QixNQUFNLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7SUFDckUsQ0FBQyxDQUFDLENBQUE7SUFFRixRQUFRLENBQUMsZ0JBQWdCLEVBQUUsR0FBRyxFQUFFO1FBQy9CLE1BQU0sQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQTtJQUNwRSxDQUFDLENBQUMsQ0FBQTtJQUVGLFFBQVEsQ0FBQyxzQkFBc0IsRUFBRSxHQUFHLEVBQUU7UUFDckMsTUFBTSxDQUFDLEtBQUssQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDO1lBQzNELEdBQUcsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsRUFBRTtTQUN4QixDQUFDLENBQUE7SUFDSCxDQUFDLENBQUMsQ0FBQTtJQUVGLFFBQVEsQ0FBQyxhQUFhLEVBQUUsR0FBRyxFQUFFO1FBQzVCLE1BQU0sSUFBSSxHQUFVLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQTtRQUN0QyxNQUFNLElBQUksR0FBVSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUE7UUFDdEMsTUFBTSxJQUFJLEdBQVUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFBO1FBRXRDLEVBQUUsQ0FBQywyQ0FBMkMsRUFBRSxHQUFHLEVBQUU7WUFDcEQsTUFBTSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFBO1FBQ2pELENBQUMsQ0FBQyxDQUFBO1FBQ0YsRUFBRSxDQUFDLDRDQUE0QyxFQUFFLEdBQUcsRUFBRTtZQUNyRCxNQUFNLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUE7UUFDbEQsQ0FBQyxDQUFDLENBQUE7SUFDSCxDQUFDLENBQUMsQ0FBQTtJQUVGLFFBQVEsQ0FBQyxRQUFRLEVBQUUsR0FBRyxFQUFFO1FBQ3ZCLE1BQU0sSUFBSSxHQUFVLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQTtRQUN0QyxNQUFNLElBQUksR0FBVSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUE7UUFDdEMsTUFBTSxJQUFJLEdBQVUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFBO1FBQ3RDLE1BQU0sSUFBSSxHQUFVLENBQUMsS0FBSyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQTtRQUUxQyxFQUFFLENBQUMsMkNBQTJDLEVBQUUsR0FBRyxFQUFFO1lBQ3BELE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQTtRQUM1QyxDQUFDLENBQUMsQ0FBQTtRQUNGLEVBQUUsQ0FBQyw0Q0FBNEMsRUFBRSxHQUFHLEVBQUU7WUFDckQsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFBO1FBQzdDLENBQUMsQ0FBQyxDQUFBO1FBQ0YsRUFBRSxDQUFDLHlEQUF5RCxFQUFFLEdBQUcsRUFBRTtZQUNsRSxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUE7UUFDNUMsQ0FBQyxDQUFDLENBQUE7SUFDSCxDQUFDLENBQUMsQ0FBQSJ9
package/lib/mat3.d.ts ADDED
@@ -0,0 +1,118 @@
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
+ /**
17
+ * 3x3 Matrix
18
+ * @module mat3
19
+ */
20
+ /**
21
+ * Copies the upper-left 3x3 values into the given mat3.
22
+ */
23
+ export declare function fromMat4(a: Mat4): Mat3;
24
+ /**
25
+ * The identity matrix of mat3
26
+ */
27
+ export declare const identity: readonly number[];
28
+ export declare const zero: Mat3;
29
+ /**
30
+ * Transpose the values of a mat3
31
+ */
32
+ export declare function transpose(a: Mat3): Mat3;
33
+ /**
34
+ * Inverts a mat3
35
+ */
36
+ export declare function invert(a: Mat3): Mat3 | null;
37
+ /**
38
+ * Calculates the adjugate of a mat3
39
+ */
40
+ export declare function adjoint(a: Mat3): Mat3;
41
+ /**
42
+ * Calculates the determinant of a mat3
43
+ */
44
+ export declare function determinant(a: Mat3): number;
45
+ /**
46
+ * Multiplies two mat3's
47
+ */
48
+ export declare function multiply(a: Mat3, b: Mat3): Mat3;
49
+ /**
50
+ * Translate a mat3 by the given vector
51
+ */
52
+ export declare function translate(a: Mat3, v: Vec3): Mat3;
53
+ /**
54
+ * Rotates a mat3 by the given angle
55
+ */
56
+ export declare function rotate(a: Mat3, rad: number): Mat3;
57
+ /**
58
+ * Scales the mat3 by the dimensions in the given vec2
59
+ **/
60
+ export declare function scale(a: Mat3, v: Vec2): Mat3;
61
+ /**
62
+ * Creates a matrix from a vector translation
63
+ */
64
+ export declare function fromTranslation(v: Vec2): Mat3;
65
+ /**
66
+ * Creates a matrix from a given angle
67
+ */
68
+ export declare function fromRotation(rad: number): Mat3;
69
+ /**
70
+ * Creates a matrix from a vector scaling
71
+ */
72
+ export declare function fromScaling(v: Vec2): Mat3;
73
+ /**
74
+ * Copies the values from a mat2d into a mat3
75
+ **/
76
+ export declare function fromMat2d(a: Mat3): Mat3;
77
+ /**
78
+ * Calculates a 3x3 matrix from the given quaternion
79
+ *
80
+ */
81
+ export declare function fromQuat(q: Quat): Mat3;
82
+ /**
83
+ * Calculates a 3x3 normal matrix (transpose inverse) from the 4x4 matrix
84
+ *
85
+ */
86
+ export declare function normalFromMat4(a: Mat4): Mat3 | null;
87
+ /**
88
+ * Generates a 2D projection matrix with the given bounds
89
+ */
90
+ export declare function projection(width: number, height: number): Mat3;
91
+ /**
92
+ * Returns Frobenius norm of a mat3
93
+ */
94
+ export declare function frob(a: Mat3): number;
95
+ /**
96
+ * Adds two mat3's
97
+ */
98
+ export declare function add(a: Mat3, b: Mat3): Mat3;
99
+ /**
100
+ * Subtracts matrix b from matrix a
101
+ */
102
+ export declare function subtract(a: Mat3, b: Mat3): Mat3;
103
+ /**
104
+ * Multiply each element of the matrix by a scalar.
105
+ */
106
+ export declare function multiplyScalar(a: Mat3, s: number): Mat3;
107
+ /**
108
+ * Adds two mat3's after multiplying each element of the second operand by a scalar value.
109
+ */
110
+ export declare function multiplyScalarAndAdd(a: Mat3, b: Mat3, scale: number): Mat3;
111
+ /**
112
+ * Returns whether or not the matrices have exactly the same elements in the same position (when compared with ===)
113
+ */
114
+ export declare function exactEquals(a: Mat3, b: Mat3): boolean;
115
+ /**
116
+ * Returns whether or not the matrices have approximately the same elements in the same position.
117
+ */
118
+ export declare function equals(a: Mat3, b: Mat3): boolean;