@woosh/meep-engine 2.109.14 → 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 +1 -1
- package/src/core/geom/3d/Ray3.d.ts +13 -6
- package/src/core/geom/3d/Ray3.d.ts.map +1 -1
- package/src/core/geom/3d/Ray3.js +40 -12
- package/src/core/geom/3d/mat4/m4_invert.d.ts +9 -0
- package/src/core/geom/3d/mat4/m4_invert.d.ts.map +1 -0
- package/src/core/geom/3d/mat4/m4_invert.js +69 -0
package/package.json
CHANGED
|
@@ -1,23 +1,21 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* 3D ray
|
|
3
|
+
* Oprimized representation for faster memory access
|
|
3
4
|
*/
|
|
4
5
|
export class Ray3 extends Float32Array {
|
|
5
6
|
constructor();
|
|
6
7
|
set tMax(arg: any);
|
|
7
8
|
get tMax(): any;
|
|
8
9
|
6: any;
|
|
9
|
-
/**
|
|
10
|
-
*
|
|
11
|
-
* @param {number[]|Float32Array} v
|
|
12
|
-
*/
|
|
13
|
-
set direction(arg: number[] | Float32Array);
|
|
14
|
-
get direction(): number[] | Float32Array;
|
|
15
10
|
/**
|
|
16
11
|
*
|
|
17
12
|
* @param {number[]|Float32Array} v
|
|
18
13
|
*/
|
|
19
14
|
set origin(arg: number[] | Float32Array);
|
|
20
15
|
get origin(): number[] | Float32Array;
|
|
16
|
+
get origin_x(): number;
|
|
17
|
+
get origin_y(): number;
|
|
18
|
+
get origin_z(): number;
|
|
21
19
|
/**
|
|
22
20
|
*
|
|
23
21
|
* @param {number} x
|
|
@@ -28,6 +26,15 @@ export class Ray3 extends Float32Array {
|
|
|
28
26
|
0: number;
|
|
29
27
|
1: number;
|
|
30
28
|
2: number;
|
|
29
|
+
/**
|
|
30
|
+
*
|
|
31
|
+
* @param {number[]|Float32Array} v
|
|
32
|
+
*/
|
|
33
|
+
set direction(arg: number[] | Float32Array);
|
|
34
|
+
get direction(): number[] | Float32Array;
|
|
35
|
+
get direction_x(): number;
|
|
36
|
+
get direction_y(): number;
|
|
37
|
+
get direction_z(): number;
|
|
31
38
|
/**
|
|
32
39
|
*
|
|
33
40
|
* @param {number} x
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Ray3.d.ts","sourceRoot":"","sources":["../../../../../src/core/geom/3d/Ray3.js"],"names":[],"mappings":"AASA
|
|
1
|
+
{"version":3,"file":"Ray3.d.ts","sourceRoot":"","sources":["../../../../../src/core/geom/3d/Ray3.js"],"names":[],"mappings":"AASA;;;GAGG;AACH;IACI,cAKC;IAMD,mBAEC;IAND,gBAEC;IAGG,OAAW;IAOf;;;OAGG;IACH,yCAEC;IAVD,sCAEC;IAUD,uBAEC;IAED,uBAEC;IAED,uBAEC;IAGD;;;;;OAKG;IACH,aAJW,MAAM,KACN,MAAM,KACN,MAAM,QAUhB;IAHG,UAAW;IACX,UAAW;IACX,UAAW;IAQf;;;OAGG;IACH,4CAEC;IAVD,yCAEC;IAWD,0BAEC;IAED,0BAEC;IAED,0BAEC;IAED;;;;;OAKG;IACH,gBAJW,MAAM,KACN,MAAM,KACN,MAAM,QAUhB;IAHG,UAAW;IACX,UAAW;IACX,UAAW;IAGf,2BAEC;IAED;;;;;;;OAOG;IACH,qBANW,MAAM,KACN,MAAM,KACN,MAAM,aACN,MAAM,EAAE,GAAC,YAAY,OAAK,sBAC1B,MAAM,EAAE,GAAC,YAAY,OAAK,QA6BpC;IAED;;;OAGG;IACH,uBAFW,MAAM,QAMhB;IAED;;;OAGG;IACH,iBAFW,MAAM,EAAE,UAAM,YAAY,QAepC;IAED;;;OAGG;IACH,SAFa,IAAI,CAQhB;IAED;;;OAGG;IACH,YAFW,IAAI,QAId;IAED,eAEC;IAED;;;;OAIG;IACH,cAHW,IAAI,GACF,OAAO,CAInB;CACJ"}
|
package/src/core/geom/3d/Ray3.js
CHANGED
|
@@ -9,6 +9,7 @@ import { ray3_interval_array_apply_matrix4 } from "./ray/ray3_interval_array_app
|
|
|
9
9
|
|
|
10
10
|
/**
|
|
11
11
|
* 3D ray
|
|
12
|
+
* Oprimized representation for faster memory access
|
|
12
13
|
*/
|
|
13
14
|
export class Ray3 extends Float32Array {
|
|
14
15
|
constructor() {
|
|
@@ -26,18 +27,6 @@ export class Ray3 extends Float32Array {
|
|
|
26
27
|
this[6] = v;
|
|
27
28
|
}
|
|
28
29
|
|
|
29
|
-
get direction() {
|
|
30
|
-
return new Float32Array(this.buffer, this.byteOffset + 3 * 4, 3);
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
/**
|
|
34
|
-
*
|
|
35
|
-
* @param {number[]|Float32Array} v
|
|
36
|
-
*/
|
|
37
|
-
set direction(v) {
|
|
38
|
-
array_copy(v, 0, this, 3, 3);
|
|
39
|
-
}
|
|
40
|
-
|
|
41
30
|
get origin() {
|
|
42
31
|
return new Float32Array(this.buffer, this.byteOffset, 3);
|
|
43
32
|
}
|
|
@@ -50,6 +39,19 @@ export class Ray3 extends Float32Array {
|
|
|
50
39
|
array_copy(v, 0, this, 0, 3);
|
|
51
40
|
}
|
|
52
41
|
|
|
42
|
+
get origin_x() {
|
|
43
|
+
return this[0];
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
get origin_y() {
|
|
47
|
+
return this[1];
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
get origin_z() {
|
|
51
|
+
return this[2];
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
|
|
53
55
|
/**
|
|
54
56
|
*
|
|
55
57
|
* @param {number} x
|
|
@@ -66,6 +68,32 @@ export class Ray3 extends Float32Array {
|
|
|
66
68
|
this[2] = z;
|
|
67
69
|
}
|
|
68
70
|
|
|
71
|
+
|
|
72
|
+
get direction() {
|
|
73
|
+
return new Float32Array(this.buffer, this.byteOffset + 3 * 4, 3);
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
/**
|
|
77
|
+
*
|
|
78
|
+
* @param {number[]|Float32Array} v
|
|
79
|
+
*/
|
|
80
|
+
set direction(v) {
|
|
81
|
+
array_copy(v, 0, this, 3, 3);
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
|
|
85
|
+
get direction_x() {
|
|
86
|
+
return this[3];
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
get direction_y() {
|
|
90
|
+
return this[4];
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
get direction_z() {
|
|
94
|
+
return this[5];
|
|
95
|
+
}
|
|
96
|
+
|
|
69
97
|
/**
|
|
70
98
|
*
|
|
71
99
|
* @param {number} x
|
|
@@ -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
|
+
}
|