linearly 0.36.0 → 0.37.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/esm/mat2.d.ts +1 -1
- package/lib/esm/mat2.d.ts.map +1 -1
- package/lib/esm/mat2.js +3 -2
- package/lib/esm/mat2d.d.ts.map +1 -1
- package/lib/esm/mat2d.js +4 -5
- package/lib/esm/mat3.d.ts.map +1 -1
- package/lib/esm/mat3.js +16 -15
- package/lib/esm/mat4.d.ts.map +1 -1
- package/lib/esm/mat4.js +18 -17
- package/lib/esm/quat.js +3 -3
- package/lib/esm/scalar.d.ts +6 -35
- package/lib/esm/scalar.d.ts.map +1 -1
- package/lib/esm/scalar.js +11 -53
- package/package.json +9 -4
- package/lib/cjs/common.d.ts +0 -16
- package/lib/cjs/common.d.ts.map +0 -1
- package/lib/cjs/common.js +0 -70
- package/lib/cjs/index.d.ts +0 -10
- package/lib/cjs/index.d.ts.map +0 -1
- package/lib/cjs/index.js +0 -22
- package/lib/cjs/mat2.d.ts +0 -272
- package/lib/cjs/mat2.d.ts.map +0 -1
- package/lib/cjs/mat2.js +0 -473
- package/lib/cjs/mat2d.d.ts +0 -329
- package/lib/cjs/mat2d.d.ts.map +0 -1
- package/lib/cjs/mat2d.js +0 -641
- package/lib/cjs/mat3.d.ts +0 -295
- package/lib/cjs/mat3.d.ts.map +0 -1
- package/lib/cjs/mat3.js +0 -670
- package/lib/cjs/mat4.d.ts +0 -532
- package/lib/cjs/mat4.d.ts.map +0 -1
- package/lib/cjs/mat4.js +0 -1576
- package/lib/cjs/quat.d.ts +0 -334
- package/lib/cjs/quat.d.ts.map +0 -1
- package/lib/cjs/quat.js +0 -802
- package/lib/cjs/scalar.d.ts +0 -501
- package/lib/cjs/scalar.d.ts.map +0 -1
- package/lib/cjs/scalar.js +0 -728
- package/lib/cjs/vec2.d.ts +0 -664
- package/lib/cjs/vec2.d.ts.map +0 -1
- package/lib/cjs/vec2.js +0 -1247
- package/lib/cjs/vec3.d.ts +0 -660
- package/lib/cjs/vec3.d.ts.map +0 -1
- package/lib/cjs/vec3.js +0 -1329
- package/lib/cjs/vec4.d.ts +0 -552
- package/lib/cjs/vec4.d.ts.map +0 -1
- package/lib/cjs/vec4.js +0 -1200
package/lib/cjs/mat2.js
DELETED
|
@@ -1,473 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
-
var ownKeys = function(o) {
|
|
20
|
-
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
-
var ar = [];
|
|
22
|
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
-
return ar;
|
|
24
|
-
};
|
|
25
|
-
return ownKeys(o);
|
|
26
|
-
};
|
|
27
|
-
return function (mod) {
|
|
28
|
-
if (mod && mod.__esModule) return mod;
|
|
29
|
-
var result = {};
|
|
30
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
-
__setModuleDefault(result, mod);
|
|
32
|
-
return result;
|
|
33
|
-
};
|
|
34
|
-
})();
|
|
35
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
-
exports.mat2 = void 0;
|
|
37
|
-
const Common = __importStar(require("./common"));
|
|
38
|
-
const vec2_1 = require("./vec2");
|
|
39
|
-
/**
|
|
40
|
-
* Functions for {@link mat2}, 2D transformation matrix excluding translation.
|
|
41
|
-
* @category Modules
|
|
42
|
-
*/
|
|
43
|
-
var mat2;
|
|
44
|
-
(function (mat2) {
|
|
45
|
-
/**
|
|
46
|
-
* Creates a new matrix from given elements
|
|
47
|
-
* @category Generators
|
|
48
|
-
*/
|
|
49
|
-
function of(m00, m01, m10, m11) {
|
|
50
|
-
return [m00, m01, m10, m11];
|
|
51
|
-
}
|
|
52
|
-
mat2.of = of;
|
|
53
|
-
/**
|
|
54
|
-
* Creates a mutable clone of given mat2
|
|
55
|
-
* @category Generators
|
|
56
|
-
*/
|
|
57
|
-
function clone(a) {
|
|
58
|
-
return [...a];
|
|
59
|
-
}
|
|
60
|
-
mat2.clone = clone;
|
|
61
|
-
/**
|
|
62
|
-
* The identity matrix of mat2.
|
|
63
|
-
* ```ts
|
|
64
|
-
* [1, 0,
|
|
65
|
-
* 0, 1]
|
|
66
|
-
* ```
|
|
67
|
-
* @category Constants
|
|
68
|
-
*
|
|
69
|
-
* @shorthands
|
|
70
|
-
* - {@link id}
|
|
71
|
-
* - {@link ident}
|
|
72
|
-
*/
|
|
73
|
-
mat2.identity = Object.freeze([1, 0, 0, 1]);
|
|
74
|
-
/**
|
|
75
|
-
* Alias for {@link identity}
|
|
76
|
-
* @category Shorthands
|
|
77
|
-
*/
|
|
78
|
-
mat2.I = mat2.identity;
|
|
79
|
-
/**
|
|
80
|
-
* Alias for {@link identity}
|
|
81
|
-
* @category Shorthands
|
|
82
|
-
*/
|
|
83
|
-
mat2.id = mat2.identity;
|
|
84
|
-
/**
|
|
85
|
-
* Alias for {@link identity}
|
|
86
|
-
* @category Shorthands
|
|
87
|
-
*/
|
|
88
|
-
mat2.ident = mat2.identity;
|
|
89
|
-
/**
|
|
90
|
-
* The mat2 filled with zeros.
|
|
91
|
-
* @category Constants
|
|
92
|
-
*/
|
|
93
|
-
mat2.zero = Object.freeze([0, 0, 0, 0]);
|
|
94
|
-
/**
|
|
95
|
-
* Transpose the values of a mat2
|
|
96
|
-
*/
|
|
97
|
-
function transpose(a) {
|
|
98
|
-
// prettier-ignore
|
|
99
|
-
return [
|
|
100
|
-
a[0], a[2],
|
|
101
|
-
a[1], a[3],
|
|
102
|
-
];
|
|
103
|
-
}
|
|
104
|
-
mat2.transpose = transpose;
|
|
105
|
-
/**
|
|
106
|
-
* Inverts a mat2
|
|
107
|
-
*
|
|
108
|
-
* @shorthands
|
|
109
|
-
* - {@link inv}
|
|
110
|
-
*/
|
|
111
|
-
function invert(a) {
|
|
112
|
-
const [a0, a1, a2, a3] = a;
|
|
113
|
-
// Calculate the determinant
|
|
114
|
-
const det = a0 * a3 - a2 * a1;
|
|
115
|
-
if (!det) {
|
|
116
|
-
return null;
|
|
117
|
-
}
|
|
118
|
-
const detinv = 1 / det;
|
|
119
|
-
// prettier-ignore
|
|
120
|
-
return [
|
|
121
|
-
a3 * detinv, -a1 * detinv,
|
|
122
|
-
-a2 * detinv, a0 * detinv
|
|
123
|
-
];
|
|
124
|
-
}
|
|
125
|
-
mat2.invert = invert;
|
|
126
|
-
/**
|
|
127
|
-
* Alias for {@link invert}
|
|
128
|
-
*/
|
|
129
|
-
mat2.inv = invert;
|
|
130
|
-
/**
|
|
131
|
-
* Calculates the adjugate of a mat2
|
|
132
|
-
*/
|
|
133
|
-
function adjoint(a) {
|
|
134
|
-
// Caching this value is necessary if out == a
|
|
135
|
-
const a0 = a[0];
|
|
136
|
-
return [a[3], -a[1], -a[2], a0];
|
|
137
|
-
}
|
|
138
|
-
mat2.adjoint = adjoint;
|
|
139
|
-
/**
|
|
140
|
-
* Calculates the determinant of a mat2
|
|
141
|
-
* @returns determinant of a
|
|
142
|
-
*
|
|
143
|
-
* @shorthands
|
|
144
|
-
* - {@link det}
|
|
145
|
-
*/
|
|
146
|
-
function determinant(a) {
|
|
147
|
-
return a[0] * a[3] - a[2] * a[1];
|
|
148
|
-
}
|
|
149
|
-
mat2.determinant = determinant;
|
|
150
|
-
/**
|
|
151
|
-
* Alias for {@link determinant}
|
|
152
|
-
* @category Shorthands
|
|
153
|
-
*/
|
|
154
|
-
mat2.det = determinant;
|
|
155
|
-
/**
|
|
156
|
-
* Multiplies given mat2's
|
|
157
|
-
*
|
|
158
|
-
* @shorthands
|
|
159
|
-
* - {@link mul}
|
|
160
|
-
*/
|
|
161
|
-
function multiply(...ms) {
|
|
162
|
-
if (ms.length === 0) {
|
|
163
|
-
return mat2.identity;
|
|
164
|
-
}
|
|
165
|
-
else if (ms.length === 1) {
|
|
166
|
-
return ms[0];
|
|
167
|
-
}
|
|
168
|
-
else if (ms.length > 2) {
|
|
169
|
-
const [a, b, ...rest] = ms;
|
|
170
|
-
return multiply(multiply(a, b), ...rest);
|
|
171
|
-
}
|
|
172
|
-
const [a0, a1, a2, a3] = ms[0];
|
|
173
|
-
const [b0, b1, b2, b3] = ms[1];
|
|
174
|
-
return [
|
|
175
|
-
a0 * b0 + a2 * b1,
|
|
176
|
-
a1 * b0 + a3 * b1,
|
|
177
|
-
a0 * b2 + a2 * b3,
|
|
178
|
-
a1 * b2 + a3 * b3,
|
|
179
|
-
];
|
|
180
|
-
}
|
|
181
|
-
mat2.multiply = multiply;
|
|
182
|
-
/**
|
|
183
|
-
* Alias for {@link multiply}
|
|
184
|
-
* @category Shorthands
|
|
185
|
-
*/
|
|
186
|
-
mat2.mul = multiply;
|
|
187
|
-
/**
|
|
188
|
-
* Rotates a mat2 by the given angle
|
|
189
|
-
*
|
|
190
|
-
* @param a the matrix to rotate
|
|
191
|
-
* @param deg the angle to rotate the matrix by, in degrees
|
|
192
|
-
*/
|
|
193
|
-
function rotate(a, deg) {
|
|
194
|
-
const [a0, a1, a2, a3] = a;
|
|
195
|
-
const s = Math.sin(deg * Common.DEG2RAD);
|
|
196
|
-
const c = Math.cos(deg * Common.DEG2RAD);
|
|
197
|
-
return [
|
|
198
|
-
a0 * c + a2 * s,
|
|
199
|
-
a1 * c + a3 * s,
|
|
200
|
-
a0 * -s + a2 * c,
|
|
201
|
-
a1 * -s + a3 * c,
|
|
202
|
-
];
|
|
203
|
-
}
|
|
204
|
-
mat2.rotate = rotate;
|
|
205
|
-
/**
|
|
206
|
-
* Scales the mat2 by the dimensions in the given vec2
|
|
207
|
-
**/
|
|
208
|
-
function scale(a, b) {
|
|
209
|
-
const [a0, a1, a2, a3] = a;
|
|
210
|
-
const [v0, v1] = typeof b === 'number' ? [b, b] : b;
|
|
211
|
-
return [a0 * v0, a1 * v0, a2 * v1, a3 * v1];
|
|
212
|
-
}
|
|
213
|
-
mat2.scale = scale;
|
|
214
|
-
/**
|
|
215
|
-
* Apply skew to the mat2d by the given angles
|
|
216
|
-
* https://developer.mozilla.org/en-US/docs/Web/CSS/transform-function/skew
|
|
217
|
-
* @param m the matrix to skew
|
|
218
|
-
* @param deg the angles to skew the matrix by, in degrees
|
|
219
|
-
*/
|
|
220
|
-
function skew(m, deg) {
|
|
221
|
-
return multiply(m, fromSkew(deg));
|
|
222
|
-
}
|
|
223
|
-
mat2.skew = skew;
|
|
224
|
-
/**
|
|
225
|
-
* Creates a matrix from a given angle.
|
|
226
|
-
* @param deg The angle to rotate the matrix by, in degrees
|
|
227
|
-
* @category Generators
|
|
228
|
-
*
|
|
229
|
-
* @shorthands
|
|
230
|
-
* - {@link rotation}
|
|
231
|
-
*/
|
|
232
|
-
function fromRotation(deg) {
|
|
233
|
-
const s = Math.sin(deg * Common.DEG2RAD);
|
|
234
|
-
const c = Math.cos(deg * Common.DEG2RAD);
|
|
235
|
-
return [c, s, -s, c];
|
|
236
|
-
}
|
|
237
|
-
mat2.fromRotation = fromRotation;
|
|
238
|
-
/**
|
|
239
|
-
* Alias for {@link fromRotation}
|
|
240
|
-
* @category Shorthands
|
|
241
|
-
*/
|
|
242
|
-
mat2.rotation = fromRotation;
|
|
243
|
-
/**
|
|
244
|
-
* Creates a matrix from a vector scaling
|
|
245
|
-
* @category Generators
|
|
246
|
-
*
|
|
247
|
-
* @shorthands
|
|
248
|
-
* - {@link scaling}
|
|
249
|
-
*
|
|
250
|
-
*/
|
|
251
|
-
function fromScaling(v) {
|
|
252
|
-
return [v[0], 0, 0, v[1]];
|
|
253
|
-
}
|
|
254
|
-
mat2.fromScaling = fromScaling;
|
|
255
|
-
/**
|
|
256
|
-
* Alias for {@link fromScaling}
|
|
257
|
-
* @category Shorthands
|
|
258
|
-
*/
|
|
259
|
-
mat2.scaling = fromScaling;
|
|
260
|
-
/**
|
|
261
|
-
* Creates a matrix from a vector skew
|
|
262
|
-
* https://developer.mozilla.org/en-US/docs/Web/CSS/transform-function/skew
|
|
263
|
-
* @category Generators
|
|
264
|
-
*
|
|
265
|
-
* @shorthands
|
|
266
|
-
* - {@link skewing}
|
|
267
|
-
*/
|
|
268
|
-
function fromSkew(deg) {
|
|
269
|
-
const x = Math.tan(deg[0] * Common.DEG2RAD);
|
|
270
|
-
const y = Math.tan(deg[1] * Common.DEG2RAD);
|
|
271
|
-
// prettier-ignore
|
|
272
|
-
return [
|
|
273
|
-
1, y,
|
|
274
|
-
x, 1,
|
|
275
|
-
];
|
|
276
|
-
}
|
|
277
|
-
mat2.fromSkew = fromSkew;
|
|
278
|
-
/**
|
|
279
|
-
* Alias for {@link fromSkew}
|
|
280
|
-
* @category Shorthands
|
|
281
|
-
*/
|
|
282
|
-
mat2.skewing = fromSkew;
|
|
283
|
-
/**
|
|
284
|
-
* Creates a matrix from given rotation, and scaling. The order of the transformations is rotation, and scaling.
|
|
285
|
-
* @param r Rotation angle in degrees
|
|
286
|
-
* @param s Scaling vector
|
|
287
|
-
* @returns The matrix that represents the transformation
|
|
288
|
-
*/
|
|
289
|
-
function fromRotScale(r = null, s = null) {
|
|
290
|
-
r ??= 0;
|
|
291
|
-
s ??= vec2_1.vec2.one;
|
|
292
|
-
const C = Math.cos(r * Common.DEG2RAD);
|
|
293
|
-
const S = Math.sin(r * Common.DEG2RAD);
|
|
294
|
-
return [s[0] * C, s[0] * S, s[1] * -S, s[1] * C];
|
|
295
|
-
}
|
|
296
|
-
mat2.fromRotScale = fromRotScale;
|
|
297
|
-
/**
|
|
298
|
-
* Alias for {@link fromRotScale}
|
|
299
|
-
* @category Shorthands
|
|
300
|
-
*/
|
|
301
|
-
mat2.rs = fromRotScale;
|
|
302
|
-
/**
|
|
303
|
-
* Returns Frobenius norm of a mat2
|
|
304
|
-
*/
|
|
305
|
-
function frob(a) {
|
|
306
|
-
return Math.hypot(a[0], a[1], a[2], a[3]);
|
|
307
|
-
}
|
|
308
|
-
mat2.frob = frob;
|
|
309
|
-
/**
|
|
310
|
-
* Adds given mat2's
|
|
311
|
-
*/
|
|
312
|
-
function add(...ms) {
|
|
313
|
-
if (ms.length === 0) {
|
|
314
|
-
return mat2.zero;
|
|
315
|
-
}
|
|
316
|
-
else if (ms.length === 1) {
|
|
317
|
-
return ms[0];
|
|
318
|
-
}
|
|
319
|
-
else if (ms.length > 2) {
|
|
320
|
-
const [a, b, ...rest] = ms;
|
|
321
|
-
return add(add(a, b), ...rest);
|
|
322
|
-
}
|
|
323
|
-
const [a, b] = ms;
|
|
324
|
-
return [a[0] + b[0], a[1] + b[1], a[2] + b[2], a[3] + b[3]];
|
|
325
|
-
}
|
|
326
|
-
mat2.add = add;
|
|
327
|
-
/**
|
|
328
|
-
* Subtracts matrix b from matrix a
|
|
329
|
-
*
|
|
330
|
-
* @shorthands
|
|
331
|
-
* - {@link sub}
|
|
332
|
-
*/
|
|
333
|
-
function subtract(...ms) {
|
|
334
|
-
if (ms.length === 0) {
|
|
335
|
-
return mat2.zero;
|
|
336
|
-
}
|
|
337
|
-
else if (ms.length === 1) {
|
|
338
|
-
return [-ms[0], -ms[1], -ms[2], -ms[3]];
|
|
339
|
-
}
|
|
340
|
-
else if (ms.length > 2) {
|
|
341
|
-
const [a, b, ...rest] = ms;
|
|
342
|
-
return subtract(subtract(a, b), ...rest);
|
|
343
|
-
}
|
|
344
|
-
const [a, b] = ms;
|
|
345
|
-
return [a[0] - b[0], a[1] - b[1], a[2] - b[2], a[3] - b[3]];
|
|
346
|
-
}
|
|
347
|
-
mat2.subtract = subtract;
|
|
348
|
-
/**
|
|
349
|
-
* Alias for {@link subtract}
|
|
350
|
-
* @category Shorthands
|
|
351
|
-
*/
|
|
352
|
-
mat2.sub = subtract;
|
|
353
|
-
/**
|
|
354
|
-
* Subtracts b from a
|
|
355
|
-
*/
|
|
356
|
-
function delta(a, b) {
|
|
357
|
-
return [b[0] - a[0], b[1] - a[1], b[2] - a[2], b[3] - a[3]];
|
|
358
|
-
}
|
|
359
|
-
mat2.delta = delta;
|
|
360
|
-
/**
|
|
361
|
-
* Copies the values from a {@link mat2d}, omitting the translation components
|
|
362
|
-
* @param m The matrix to copy from
|
|
363
|
-
* @returns A newly created matrix
|
|
364
|
-
* @category Generators
|
|
365
|
-
*/
|
|
366
|
-
function fromMat2d(m) {
|
|
367
|
-
return [m[0], m[1], m[2], m[3]];
|
|
368
|
-
}
|
|
369
|
-
mat2.fromMat2d = fromMat2d;
|
|
370
|
-
/**
|
|
371
|
-
* Multiplies each element of a mat2 by a scalar
|
|
372
|
-
*/
|
|
373
|
-
function multiplyScalar(a, s) {
|
|
374
|
-
// prettier-ignore
|
|
375
|
-
return [
|
|
376
|
-
a[0] * s, a[1] * s,
|
|
377
|
-
a[2] * s, a[3] * s,
|
|
378
|
-
];
|
|
379
|
-
}
|
|
380
|
-
mat2.multiplyScalar = multiplyScalar;
|
|
381
|
-
/**
|
|
382
|
-
* Adds given mat2's after multiplying each element of the second operand by a scalar value.
|
|
383
|
-
*/
|
|
384
|
-
function multiplyScalarAndAdd(a, b, scale) {
|
|
385
|
-
return [
|
|
386
|
-
a[0] + b[0] * scale,
|
|
387
|
-
a[1] + b[1] * scale,
|
|
388
|
-
a[2] + b[2] * scale,
|
|
389
|
-
a[3] + b[3] * scale,
|
|
390
|
-
];
|
|
391
|
-
}
|
|
392
|
-
mat2.multiplyScalarAndAdd = multiplyScalarAndAdd;
|
|
393
|
-
/**
|
|
394
|
-
* Constrain each element to lie between min and max
|
|
395
|
-
* @see https://thebookofshaders.com/glossary/?search=clamp
|
|
396
|
-
*/
|
|
397
|
-
function clamp(a, min, max) {
|
|
398
|
-
return [
|
|
399
|
-
Math.max(min, Math.min(max, a[0])),
|
|
400
|
-
Math.max(min, Math.min(max, a[1])),
|
|
401
|
-
Math.max(min, Math.min(max, a[2])),
|
|
402
|
-
Math.max(min, Math.min(max, a[3])),
|
|
403
|
-
];
|
|
404
|
-
}
|
|
405
|
-
mat2.clamp = clamp;
|
|
406
|
-
/**
|
|
407
|
-
* Clamps each element to [0, 1]
|
|
408
|
-
*/
|
|
409
|
-
function clamp01(a) {
|
|
410
|
-
return clamp(a, 0, 1);
|
|
411
|
-
}
|
|
412
|
-
mat2.clamp01 = clamp01;
|
|
413
|
-
/**
|
|
414
|
-
* Clamps each element to [-1, 1]
|
|
415
|
-
*/
|
|
416
|
-
function clamp11(a) {
|
|
417
|
-
return clamp(a, -1, 1);
|
|
418
|
-
}
|
|
419
|
-
mat2.clamp11 = clamp11;
|
|
420
|
-
/**
|
|
421
|
-
* Returns whether or not the matrices have exactly the same elements in the same position (when compared with `===`)
|
|
422
|
-
*
|
|
423
|
-
* @shorthands
|
|
424
|
-
* - {@link eq}
|
|
425
|
-
*/
|
|
426
|
-
function exactEquals(a, b) {
|
|
427
|
-
return a[0] === b[0] && a[1] === b[1] && a[2] === b[2] && a[3] === b[3];
|
|
428
|
-
}
|
|
429
|
-
mat2.exactEquals = exactEquals;
|
|
430
|
-
/**
|
|
431
|
-
* Alias for {@link exactEquals}
|
|
432
|
-
* @category Shorthands
|
|
433
|
-
*/
|
|
434
|
-
mat2.eq = exactEquals;
|
|
435
|
-
/**
|
|
436
|
-
* Returns whether or not the matrices have approximately the same elements in the same position.
|
|
437
|
-
*
|
|
438
|
-
* @shorthands
|
|
439
|
-
* - {@link approx}
|
|
440
|
-
* - {@link equals}
|
|
441
|
-
*/
|
|
442
|
-
function approxEquals(a, b) {
|
|
443
|
-
const [a0, a1, a2, a3] = a;
|
|
444
|
-
const [b0, b1, b2, b3] = b;
|
|
445
|
-
return (Math.abs(a0 - b0) <=
|
|
446
|
-
Common.EPSILON * Math.max(1, Math.abs(a0), Math.abs(b0)) &&
|
|
447
|
-
Math.abs(a1 - b1) <=
|
|
448
|
-
Common.EPSILON * Math.max(1, Math.abs(a1), Math.abs(b1)) &&
|
|
449
|
-
Math.abs(a2 - b2) <=
|
|
450
|
-
Common.EPSILON * Math.max(1, Math.abs(a2), Math.abs(b2)) &&
|
|
451
|
-
Math.abs(a3 - b3) <=
|
|
452
|
-
Common.EPSILON * Math.max(1, Math.abs(a3), Math.abs(b3)));
|
|
453
|
-
}
|
|
454
|
-
mat2.approxEquals = approxEquals;
|
|
455
|
-
/**
|
|
456
|
-
* Alias for {@link approxEquals}
|
|
457
|
-
* @category Shorthands
|
|
458
|
-
*/
|
|
459
|
-
mat2.approx = approxEquals;
|
|
460
|
-
/**
|
|
461
|
-
* Alias for {@link approxEquals}. This is provided for compatibility with gl-matrix.
|
|
462
|
-
* @category Shorthands
|
|
463
|
-
* @deprecated Use {@link approxEquals} instead
|
|
464
|
-
*/
|
|
465
|
-
mat2.equals = approxEquals;
|
|
466
|
-
/**
|
|
467
|
-
* Returns a string representation of a mat2
|
|
468
|
-
* @param m matrix to represent as a string
|
|
469
|
-
* @param fractionDigits number of digits to appear after the decimal point
|
|
470
|
-
*/
|
|
471
|
-
mat2.toString = Common.createMatToStringFunction(2, 2);
|
|
472
|
-
})(mat2 || (exports.mat2 = mat2 = {}));
|
|
473
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF0Mi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9tYXQyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLGlEQUFrQztBQUVsQyxpQ0FBMkI7QUFhM0I7OztHQUdHO0FBQ0gsSUFBaUIsSUFBSSxDQW1kcEI7QUFuZEQsV0FBaUIsSUFBSTtJQU9wQjs7O09BR0c7SUFDSCxTQUFnQixFQUFFLENBQUMsR0FBVyxFQUFFLEdBQVcsRUFBRSxHQUFXLEVBQUUsR0FBVztRQUNwRSxPQUFPLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUE7SUFDNUIsQ0FBQztJQUZlLE9BQUUsS0FFakIsQ0FBQTtJQUVEOzs7T0FHRztJQUNILFNBQWdCLEtBQUssQ0FBQyxDQUFPO1FBQzVCLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFBO0lBQ2QsQ0FBQztJQUZlLFVBQUssUUFFcEIsQ0FBQTtJQUVEOzs7Ozs7Ozs7OztPQVdHO0lBQ1UsYUFBUSxHQUFTLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBRXpEOzs7T0FHRztJQUNVLE1BQUMsR0FBRyxLQUFBLFFBQVEsQ0FBQTtJQUV6Qjs7O09BR0c7SUFDVSxPQUFFLEdBQUcsS0FBQSxRQUFRLENBQUE7SUFFMUI7OztPQUdHO0lBQ1UsVUFBSyxHQUFHLEtBQUEsUUFBUSxDQUFBO0lBRTdCOzs7T0FHRztJQUNVLFNBQUksR0FBUyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUVyRDs7T0FFRztJQUNILFNBQWdCLFNBQVMsQ0FBQyxDQUFPO1FBQ2hDLGtCQUFrQjtRQUNsQixPQUFPO1lBQ04sQ0FBQyxDQUFD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
|