@woosh/meep-engine 2.109.15 → 2.109.16
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/package.json
CHANGED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Inverts a 4x4 matrix
|
|
3
|
+
* @see Adapted from glMatrix
|
|
4
|
+
* @param {Float32Array|number[]|mat4} out
|
|
5
|
+
* @param {Float32Array|number[]|mat4} input
|
|
6
|
+
* @returns {boolean}
|
|
7
|
+
*/
|
|
8
|
+
export function m4_invert(out: Float32Array | number[] | mat4, input: Float32Array | number[] | mat4): boolean;
|
|
9
|
+
//# sourceMappingURL=m4_invert.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"m4_invert.d.ts","sourceRoot":"","sources":["../../../../../../src/core/geom/3d/mat4/m4_invert.js"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,+BAJW,YAAY,GAAC,MAAM,EAAE,OAAK,SAC1B,YAAY,GAAC,MAAM,EAAE,OAAK,GACxB,OAAO,CA+DnB"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Inverts a 4x4 matrix
|
|
3
|
+
* @see Adapted from glMatrix
|
|
4
|
+
* @param {Float32Array|number[]|mat4} out
|
|
5
|
+
* @param {Float32Array|number[]|mat4} input
|
|
6
|
+
* @returns {boolean}
|
|
7
|
+
*/
|
|
8
|
+
export function m4_invert(out, input) {
|
|
9
|
+
|
|
10
|
+
const a00 = input[0],
|
|
11
|
+
a01 = input[1],
|
|
12
|
+
a02 = input[2],
|
|
13
|
+
a03 = input[3];
|
|
14
|
+
const a10 = input[4],
|
|
15
|
+
a11 = input[5],
|
|
16
|
+
a12 = input[6],
|
|
17
|
+
a13 = input[7];
|
|
18
|
+
const a20 = input[8],
|
|
19
|
+
a21 = input[9],
|
|
20
|
+
a22 = input[10],
|
|
21
|
+
a23 = input[11];
|
|
22
|
+
const a30 = input[12],
|
|
23
|
+
a31 = input[13],
|
|
24
|
+
a32 = input[14],
|
|
25
|
+
a33 = input[15];
|
|
26
|
+
|
|
27
|
+
const b00 = a00 * a11 - a01 * a10;
|
|
28
|
+
const b01 = a00 * a12 - a02 * a10;
|
|
29
|
+
const b02 = a00 * a13 - a03 * a10;
|
|
30
|
+
const b03 = a01 * a12 - a02 * a11;
|
|
31
|
+
const b04 = a01 * a13 - a03 * a11;
|
|
32
|
+
const b05 = a02 * a13 - a03 * a12;
|
|
33
|
+
const b06 = a20 * a31 - a21 * a30;
|
|
34
|
+
const b07 = a20 * a32 - a22 * a30;
|
|
35
|
+
const b08 = a20 * a33 - a23 * a30;
|
|
36
|
+
const b09 = a21 * a32 - a22 * a31;
|
|
37
|
+
const b10 = a21 * a33 - a23 * a31;
|
|
38
|
+
const b11 = a22 * a33 - a23 * a32;
|
|
39
|
+
|
|
40
|
+
// Calculate the determinant
|
|
41
|
+
const det =
|
|
42
|
+
b00 * b11 - b01 * b10 + b02 * b09 + b03 * b08 - b04 * b07 + b05 * b06;
|
|
43
|
+
|
|
44
|
+
if (!det) {
|
|
45
|
+
// determinant is 0, can't invert
|
|
46
|
+
return false;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
const inv_det = 1.0 / det;
|
|
50
|
+
|
|
51
|
+
out[0] = (a11 * b11 - a12 * b10 + a13 * b09) * inv_det;
|
|
52
|
+
out[1] = (a02 * b10 - a01 * b11 - a03 * b09) * inv_det;
|
|
53
|
+
out[2] = (a31 * b05 - a32 * b04 + a33 * b03) * inv_det;
|
|
54
|
+
out[3] = (a22 * b04 - a21 * b05 - a23 * b03) * inv_det;
|
|
55
|
+
out[4] = (a12 * b08 - a10 * b11 - a13 * b07) * inv_det;
|
|
56
|
+
out[5] = (a00 * b11 - a02 * b08 + a03 * b07) * inv_det;
|
|
57
|
+
out[6] = (a32 * b02 - a30 * b05 - a33 * b01) * inv_det;
|
|
58
|
+
out[7] = (a20 * b05 - a22 * b02 + a23 * b01) * inv_det;
|
|
59
|
+
out[8] = (a10 * b10 - a11 * b08 + a13 * b06) * inv_det;
|
|
60
|
+
out[9] = (a01 * b08 - a00 * b10 - a03 * b06) * inv_det;
|
|
61
|
+
out[10] = (a30 * b04 - a31 * b02 + a33 * b00) * inv_det;
|
|
62
|
+
out[11] = (a21 * b02 - a20 * b04 - a23 * b00) * inv_det;
|
|
63
|
+
out[12] = (a11 * b07 - a10 * b09 - a12 * b06) * inv_det;
|
|
64
|
+
out[13] = (a00 * b09 - a01 * b07 + a02 * b06) * inv_det;
|
|
65
|
+
out[14] = (a31 * b01 - a30 * b03 - a32 * b00) * inv_det;
|
|
66
|
+
out[15] = (a20 * b03 - a21 * b01 + a22 * b00) * inv_det;
|
|
67
|
+
|
|
68
|
+
return true;
|
|
69
|
+
}
|