@shapediver/viewer.shared.math 3.16.8 → 3.16.10

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.
@@ -1,103 +1,103 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Plane = void 0;
4
- const gl_matrix_1 = require("gl-matrix");
5
- class Plane {
6
- constructor(_vector_u = gl_matrix_1.vec3.fromValues(0, 1, 0), _vector_v = gl_matrix_1.vec3.fromValues(0, 0, 1), _constant = 0) {
7
- this._vector_u = _vector_u;
8
- this._vector_v = _vector_v;
9
- this._constant = _constant;
10
- this._normal = gl_matrix_1.vec3.fromValues(1, 0, 0);
11
- this._normal = gl_matrix_1.vec3.normalize(gl_matrix_1.vec3.create(), gl_matrix_1.vec3.cross(gl_matrix_1.vec3.create(), this._vector_u, this._vector_v));
12
- }
13
- get constant() {
14
- return this._constant;
15
- }
16
- set constant(value) {
17
- this._constant = value;
18
- }
19
- get normal() {
20
- return this._normal;
21
- }
22
- set normal(value) {
23
- this._normal = value;
24
- }
25
- get vector_u() {
26
- return this._vector_u;
27
- }
28
- set vector_u(value) {
29
- this._vector_u = value;
30
- }
31
- get vector_v() {
32
- return this._vector_v;
33
- }
34
- set vector_v(value) {
35
- this._vector_v = value;
36
- }
37
- applyMatrix(matrix) {
38
- const upperLeft = gl_matrix_1.mat3.fromMat4(gl_matrix_1.mat3.create(), matrix);
39
- let inverse = gl_matrix_1.mat3.invert(gl_matrix_1.mat3.create(), upperLeft);
40
- if (!inverse)
41
- inverse = gl_matrix_1.mat3.create();
42
- const normalMatrix = gl_matrix_1.mat3.transpose(gl_matrix_1.mat3.create(), inverse);
43
- const p = gl_matrix_1.vec3.transformMat4(gl_matrix_1.vec3.create(), gl_matrix_1.vec3.multiply(gl_matrix_1.vec3.create(), gl_matrix_1.vec3.clone(this.normal), gl_matrix_1.vec3.fromValues(this._constant, this._constant, this._constant)), matrix);
44
- this._normal = gl_matrix_1.vec3.normalize(gl_matrix_1.vec3.create(), gl_matrix_1.vec3.transformMat3(gl_matrix_1.vec3.create(), this._normal, normalMatrix));
45
- this._vector_u = gl_matrix_1.vec3.normalize(gl_matrix_1.vec3.create(), gl_matrix_1.vec3.transformMat3(gl_matrix_1.vec3.create(), this._vector_u, upperLeft));
46
- this._vector_v = gl_matrix_1.vec3.normalize(gl_matrix_1.vec3.create(), gl_matrix_1.vec3.transformMat3(gl_matrix_1.vec3.create(), this._vector_v, upperLeft));
47
- this.constant = -gl_matrix_1.vec3.dot(p, this._normal);
48
- return this;
49
- }
50
- clampPoint(point) {
51
- const d = -this.distanceToPoint(point);
52
- return gl_matrix_1.vec3.add(gl_matrix_1.vec3.create(), gl_matrix_1.vec3.multiply(gl_matrix_1.vec3.create(), this.normal, gl_matrix_1.vec3.fromValues(d, d, d)), point);
53
- }
54
- clone() {
55
- return new Plane(gl_matrix_1.vec3.clone(this._vector_u), gl_matrix_1.vec3.clone(this._vector_v), this._constant);
56
- }
57
- containsPoint(point) {
58
- return this.distanceToPoint(point) === 0;
59
- }
60
- convertFromLSToWS(point) {
61
- const origin = gl_matrix_1.vec3.scale(gl_matrix_1.vec3.create(), this._normal, -this._constant);
62
- return gl_matrix_1.vec3.add(gl_matrix_1.vec3.create(), gl_matrix_1.vec3.add(gl_matrix_1.vec3.create(), gl_matrix_1.vec3.add(gl_matrix_1.vec3.create(), origin, gl_matrix_1.vec3.scale(gl_matrix_1.vec3.create(), this._vector_u, point[0])), gl_matrix_1.vec3.scale(gl_matrix_1.vec3.create(), this._vector_v, point[1])), gl_matrix_1.vec3.scale(gl_matrix_1.vec3.create(), this._normal, point[2]));
63
- }
64
- convertFromWSToLS(point, project = true) {
65
- const origin = gl_matrix_1.vec3.scale(gl_matrix_1.vec3.create(), this._normal, -this._constant);
66
- const d = gl_matrix_1.vec3.subtract(gl_matrix_1.vec3.create(), point, origin);
67
- return gl_matrix_1.vec3.fromValues(gl_matrix_1.vec3.dot(d, this._vector_u), gl_matrix_1.vec3.dot(d, this._vector_v), project ? 0 : gl_matrix_1.vec3.dot(d, this._normal));
68
- }
69
- distanceToPoint(point) {
70
- return gl_matrix_1.vec3.dot(this.normal, point) + this.constant;
71
- }
72
- intersect(origin, direction) {
73
- const denominator = gl_matrix_1.vec3.dot(this.normal, direction);
74
- if (denominator === 0) {
75
- // line is coplanar, return origin
76
- if (this.distanceToPoint(origin) === 0)
77
- return 0;
78
- return null;
79
- }
80
- const t = -(gl_matrix_1.vec3.dot(origin, this.normal) + this.constant) / denominator;
81
- if (t < 0)
82
- return null;
83
- return t;
84
- }
85
- reset() {
86
- this._normal = gl_matrix_1.vec3.fromValues(1, 0, 0);
87
- this._vector_u = gl_matrix_1.vec3.fromValues(0, 1, 0);
88
- this._vector_v = gl_matrix_1.vec3.fromValues(0, 0, 1);
89
- this._constant = 0;
90
- }
91
- setFromNormalAndCoplanarPoint(normal, point) {
92
- gl_matrix_1.vec3.copy(this._normal, normal);
93
- const up = Math.abs(normal[1]) < 0.9
94
- ? gl_matrix_1.vec3.fromValues(0, 1, 0)
95
- : gl_matrix_1.vec3.fromValues(1, 0, 0);
96
- this._vector_u = gl_matrix_1.vec3.normalize(gl_matrix_1.vec3.create(), gl_matrix_1.vec3.cross(gl_matrix_1.vec3.create(), up, normal));
97
- this._vector_v = gl_matrix_1.vec3.normalize(gl_matrix_1.vec3.create(), gl_matrix_1.vec3.cross(gl_matrix_1.vec3.create(), normal, this._vector_u));
98
- this.constant = -gl_matrix_1.vec3.dot(point, this._normal);
99
- return this;
100
- }
101
- }
102
- exports.Plane = Plane;
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Plane = void 0;
4
+ const gl_matrix_1 = require("gl-matrix");
5
+ class Plane {
6
+ constructor(_vector_u = gl_matrix_1.vec3.fromValues(0, 1, 0), _vector_v = gl_matrix_1.vec3.fromValues(0, 0, 1), _constant = 0) {
7
+ this._vector_u = _vector_u;
8
+ this._vector_v = _vector_v;
9
+ this._constant = _constant;
10
+ this._normal = gl_matrix_1.vec3.fromValues(1, 0, 0);
11
+ this._normal = gl_matrix_1.vec3.normalize(gl_matrix_1.vec3.create(), gl_matrix_1.vec3.cross(gl_matrix_1.vec3.create(), this._vector_u, this._vector_v));
12
+ }
13
+ get constant() {
14
+ return this._constant;
15
+ }
16
+ set constant(value) {
17
+ this._constant = value;
18
+ }
19
+ get normal() {
20
+ return this._normal;
21
+ }
22
+ set normal(value) {
23
+ this._normal = value;
24
+ }
25
+ get vector_u() {
26
+ return this._vector_u;
27
+ }
28
+ set vector_u(value) {
29
+ this._vector_u = value;
30
+ }
31
+ get vector_v() {
32
+ return this._vector_v;
33
+ }
34
+ set vector_v(value) {
35
+ this._vector_v = value;
36
+ }
37
+ applyMatrix(matrix) {
38
+ const upperLeft = gl_matrix_1.mat3.fromMat4(gl_matrix_1.mat3.create(), matrix);
39
+ let inverse = gl_matrix_1.mat3.invert(gl_matrix_1.mat3.create(), upperLeft);
40
+ if (!inverse)
41
+ inverse = gl_matrix_1.mat3.create();
42
+ const normalMatrix = gl_matrix_1.mat3.transpose(gl_matrix_1.mat3.create(), inverse);
43
+ const p = gl_matrix_1.vec3.transformMat4(gl_matrix_1.vec3.create(), gl_matrix_1.vec3.multiply(gl_matrix_1.vec3.create(), gl_matrix_1.vec3.clone(this.normal), gl_matrix_1.vec3.fromValues(this._constant, this._constant, this._constant)), matrix);
44
+ this._normal = gl_matrix_1.vec3.normalize(gl_matrix_1.vec3.create(), gl_matrix_1.vec3.transformMat3(gl_matrix_1.vec3.create(), this._normal, normalMatrix));
45
+ this._vector_u = gl_matrix_1.vec3.normalize(gl_matrix_1.vec3.create(), gl_matrix_1.vec3.transformMat3(gl_matrix_1.vec3.create(), this._vector_u, upperLeft));
46
+ this._vector_v = gl_matrix_1.vec3.normalize(gl_matrix_1.vec3.create(), gl_matrix_1.vec3.transformMat3(gl_matrix_1.vec3.create(), this._vector_v, upperLeft));
47
+ this.constant = -gl_matrix_1.vec3.dot(p, this._normal);
48
+ return this;
49
+ }
50
+ clampPoint(point) {
51
+ const d = -this.distanceToPoint(point);
52
+ return gl_matrix_1.vec3.add(gl_matrix_1.vec3.create(), gl_matrix_1.vec3.multiply(gl_matrix_1.vec3.create(), this.normal, gl_matrix_1.vec3.fromValues(d, d, d)), point);
53
+ }
54
+ clone() {
55
+ return new Plane(gl_matrix_1.vec3.clone(this._vector_u), gl_matrix_1.vec3.clone(this._vector_v), this._constant);
56
+ }
57
+ containsPoint(point) {
58
+ return this.distanceToPoint(point) === 0;
59
+ }
60
+ convertFromLSToWS(point) {
61
+ const origin = gl_matrix_1.vec3.scale(gl_matrix_1.vec3.create(), this._normal, -this._constant);
62
+ return gl_matrix_1.vec3.add(gl_matrix_1.vec3.create(), gl_matrix_1.vec3.add(gl_matrix_1.vec3.create(), gl_matrix_1.vec3.add(gl_matrix_1.vec3.create(), origin, gl_matrix_1.vec3.scale(gl_matrix_1.vec3.create(), this._vector_u, point[0])), gl_matrix_1.vec3.scale(gl_matrix_1.vec3.create(), this._vector_v, point[1])), gl_matrix_1.vec3.scale(gl_matrix_1.vec3.create(), this._normal, point[2]));
63
+ }
64
+ convertFromWSToLS(point, project = true) {
65
+ const origin = gl_matrix_1.vec3.scale(gl_matrix_1.vec3.create(), this._normal, -this._constant);
66
+ const d = gl_matrix_1.vec3.subtract(gl_matrix_1.vec3.create(), point, origin);
67
+ return gl_matrix_1.vec3.fromValues(gl_matrix_1.vec3.dot(d, this._vector_u), gl_matrix_1.vec3.dot(d, this._vector_v), project ? 0 : gl_matrix_1.vec3.dot(d, this._normal));
68
+ }
69
+ distanceToPoint(point) {
70
+ return gl_matrix_1.vec3.dot(this.normal, point) + this.constant;
71
+ }
72
+ intersect(origin, direction) {
73
+ const denominator = gl_matrix_1.vec3.dot(this.normal, direction);
74
+ if (denominator === 0) {
75
+ // line is coplanar, return origin
76
+ if (this.distanceToPoint(origin) === 0)
77
+ return 0;
78
+ return null;
79
+ }
80
+ const t = -(gl_matrix_1.vec3.dot(origin, this.normal) + this.constant) / denominator;
81
+ if (t < 0)
82
+ return null;
83
+ return t;
84
+ }
85
+ reset() {
86
+ this._normal = gl_matrix_1.vec3.fromValues(1, 0, 0);
87
+ this._vector_u = gl_matrix_1.vec3.fromValues(0, 1, 0);
88
+ this._vector_v = gl_matrix_1.vec3.fromValues(0, 0, 1);
89
+ this._constant = 0;
90
+ }
91
+ setFromNormalAndCoplanarPoint(normal, point) {
92
+ gl_matrix_1.vec3.copy(this._normal, normal);
93
+ const up = Math.abs(normal[1]) < 0.9
94
+ ? gl_matrix_1.vec3.fromValues(0, 1, 0)
95
+ : gl_matrix_1.vec3.fromValues(1, 0, 0);
96
+ this._vector_u = gl_matrix_1.vec3.normalize(gl_matrix_1.vec3.create(), gl_matrix_1.vec3.cross(gl_matrix_1.vec3.create(), up, normal));
97
+ this._vector_v = gl_matrix_1.vec3.normalize(gl_matrix_1.vec3.create(), gl_matrix_1.vec3.cross(gl_matrix_1.vec3.create(), normal, this._vector_u));
98
+ this.constant = -gl_matrix_1.vec3.dot(point, this._normal);
99
+ return this;
100
+ }
101
+ }
102
+ exports.Plane = Plane;
103
103
  //# sourceMappingURL=Plane.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Plane.js","sourceRoot":"","sources":["../../src/implementation/Plane.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Plane.js","sourceRoot":"","sources":["../../src/implementation/Plane.ts"],"names":[],"mappings":";;;AAAA,yCAA2C;AAI3C,MAAa,KAAK;IAEjB,YACS,YAAkB,gBAAI,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAC1C,YAAkB,gBAAI,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAC1C,YAAoB,CAAC;QAFrB,cAAS,GAAT,SAAS,CAAiC;QAC1C,cAAS,GAAT,SAAS,CAAiC;QAC1C,cAAS,GAAT,SAAS,CAAY;QAJtB,YAAO,GAAS,gBAAI,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAMhD,IAAI,CAAC,OAAO,GAAG,gBAAI,CAAC,SAAS,CAC5B,gBAAI,CAAC,MAAM,EAAE,EACb,gBAAI,CAAC,KAAK,CAAC,gBAAI,CAAC,MAAM,EAAE,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,CACzD,CAAC;IACH,CAAC;IAED,IAAW,QAAQ;QAClB,OAAO,IAAI,CAAC,SAAS,CAAC;IACvB,CAAC;IAED,IAAW,QAAQ,CAAC,KAAa;QAChC,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;IACxB,CAAC;IAED,IAAW,MAAM;QAChB,OAAO,IAAI,CAAC,OAAO,CAAC;IACrB,CAAC;IAED,IAAW,MAAM,CAAC,KAAW;QAC5B,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;IACtB,CAAC;IAED,IAAW,QAAQ;QAClB,OAAO,IAAI,CAAC,SAAS,CAAC;IACvB,CAAC;IAED,IAAW,QAAQ,CAAC,KAAW;QAC9B,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;IACxB,CAAC;IAED,IAAW,QAAQ;QAClB,OAAO,IAAI,CAAC,SAAS,CAAC;IACvB,CAAC;IAED,IAAW,QAAQ,CAAC,KAAW;QAC9B,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;IACxB,CAAC;IAEM,WAAW,CAAC,MAAY;QAC9B,MAAM,SAAS,GAAG,gBAAI,CAAC,QAAQ,CAAC,gBAAI,CAAC,MAAM,EAAE,EAAE,MAAM,CAAC,CAAC;QACvD,IAAI,OAAO,GAAG,gBAAI,CAAC,MAAM,CAAC,gBAAI,CAAC,MAAM,EAAE,EAAE,SAAS,CAAC,CAAC;QACpD,IAAI,CAAC,OAAO;YAAE,OAAO,GAAG,gBAAI,CAAC,MAAM,EAAE,CAAC;QACtC,MAAM,YAAY,GAAG,gBAAI,CAAC,SAAS,CAAC,gBAAI,CAAC,MAAM,EAAE,EAAE,OAAO,CAAC,CAAC;QAC5D,MAAM,CAAC,GAAG,gBAAI,CAAC,aAAa,CAC3B,gBAAI,CAAC,MAAM,EAAE,EACb,gBAAI,CAAC,QAAQ,CACZ,gBAAI,CAAC,MAAM,EAAE,EACb,gBAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,EACvB,gBAAI,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,CAC/D,EACD,MAAM,CACN,CAAC;QACF,IAAI,CAAC,OAAO,GAAG,gBAAI,CAAC,SAAS,CAC5B,gBAAI,CAAC,MAAM,EAAE,EACb,gBAAI,CAAC,aAAa,CAAC,gBAAI,CAAC,MAAM,EAAE,EAAE,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,CAC7D,CAAC;QACF,IAAI,CAAC,SAAS,GAAG,gBAAI,CAAC,SAAS,CAC9B,gBAAI,CAAC,MAAM,EAAE,EACb,gBAAI,CAAC,aAAa,CAAC,gBAAI,CAAC,MAAM,EAAE,EAAE,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC,CAC5D,CAAC;QACF,IAAI,CAAC,SAAS,GAAG,gBAAI,CAAC,SAAS,CAC9B,gBAAI,CAAC,MAAM,EAAE,EACb,gBAAI,CAAC,aAAa,CAAC,gBAAI,CAAC,MAAM,EAAE,EAAE,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC,CAC5D,CAAC;QACF,IAAI,CAAC,QAAQ,GAAG,CAAC,gBAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QAC3C,OAAO,IAAI,CAAC;IACb,CAAC;IAEM,UAAU,CAAC,KAAW;QAC5B,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;QACvC,OAAO,gBAAI,CAAC,GAAG,CACd,gBAAI,CAAC,MAAM,EAAE,EACb,gBAAI,CAAC,QAAQ,CAAC,gBAAI,CAAC,MAAM,EAAE,EAAE,IAAI,CAAC,MAAM,EAAE,gBAAI,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EACnE,KAAK,CACL,CAAC;IACH,CAAC;IAEM,KAAK;QACX,OAAO,IAAI,KAAK,CACf,gBAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,EAC1B,gBAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,EAC1B,IAAI,CAAC,SAAS,CACd,CAAC;IACH,CAAC;IAEM,aAAa,CAAC,KAAW;QAC/B,OAAO,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAC1C,CAAC;IAEM,iBAAiB,CAAC,KAAW;QACnC,MAAM,MAAM,GAAG,gBAAI,CAAC,KAAK,CAAC,gBAAI,CAAC,MAAM,EAAE,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACxE,OAAO,gBAAI,CAAC,GAAG,CACd,gBAAI,CAAC,MAAM,EAAE,EACb,gBAAI,CAAC,GAAG,CACP,gBAAI,CAAC,MAAM,EAAE,EACb,gBAAI,CAAC,GAAG,CACP,gBAAI,CAAC,MAAM,EAAE,EACb,MAAM,EACN,gBAAI,CAAC,KAAK,CAAC,gBAAI,CAAC,MAAM,EAAE,EAAE,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CACnD,EACD,gBAAI,CAAC,KAAK,CAAC,gBAAI,CAAC,MAAM,EAAE,EAAE,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CACnD,EACD,gBAAI,CAAC,KAAK,CAAC,gBAAI,CAAC,MAAM,EAAE,EAAE,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CACjD,CAAC;IACH,CAAC;IAEM,iBAAiB,CAAC,KAAW,EAAE,UAAmB,IAAI;QAC5D,MAAM,MAAM,GAAG,gBAAI,CAAC,KAAK,CAAC,gBAAI,CAAC,MAAM,EAAE,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACxE,MAAM,CAAC,GAAG,gBAAI,CAAC,QAAQ,CAAC,gBAAI,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;QACtD,OAAO,gBAAI,CAAC,UAAU,CACrB,gBAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,EAC3B,gBAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,EAC3B,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,CACvC,CAAC;IACH,CAAC;IAEM,eAAe,CAAC,KAAW;QACjC,OAAO,gBAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC;IACrD,CAAC;IAEM,SAAS,CAAC,MAAY,EAAE,SAAe;QAC7C,MAAM,WAAW,GAAG,gBAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;QACrD,IAAI,WAAW,KAAK,CAAC,EAAE,CAAC;YACvB,kCAAkC;YAClC,IAAI,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,KAAK,CAAC;gBAAE,OAAO,CAAC,CAAC;YACjD,OAAO,IAAI,CAAC;QACb,CAAC;QACD,MAAM,CAAC,GACN,CAAC,CAAC,gBAAI,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,WAAW,CAAC;QAChE,IAAI,CAAC,GAAG,CAAC;YAAE,OAAO,IAAI,CAAC;QAEvB,OAAO,CAAC,CAAC;IACV,CAAC;IAEM,KAAK;QACX,IAAI,CAAC,OAAO,GAAG,gBAAI,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QACxC,IAAI,CAAC,SAAS,GAAG,gBAAI,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAC1C,IAAI,CAAC,SAAS,GAAG,gBAAI,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAC1C,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;IACpB,CAAC;IAEM,6BAA6B,CAAC,MAAY,EAAE,KAAW;QAC7D,gBAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAChC,MAAM,EAAE,GACP,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG;YACxB,CAAC,CAAC,gBAAI,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;YAC1B,CAAC,CAAC,gBAAI,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAC7B,IAAI,CAAC,SAAS,GAAG,gBAAI,CAAC,SAAS,CAC9B,gBAAI,CAAC,MAAM,EAAE,EACb,gBAAI,CAAC,KAAK,CAAC,gBAAI,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,CACrC,CAAC;QACF,IAAI,CAAC,SAAS,GAAG,gBAAI,CAAC,SAAS,CAC9B,gBAAI,CAAC,MAAM,EAAE,EACb,gBAAI,CAAC,KAAK,CAAC,gBAAI,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,CACjD,CAAC;QACF,IAAI,CAAC,QAAQ,GAAG,CAAC,gBAAI,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QAC/C,OAAO,IAAI,CAAC;IACb,CAAC;CACD;AArKD,sBAqKC"}
@@ -1,20 +1,20 @@
1
- import { IBox, ISphere } from "@shapediver/viewer.shared.types";
2
- import { mat4, vec3 } from "gl-matrix";
3
- export declare class Sphere implements ISphere {
4
- private _center;
5
- private _radius;
6
- constructor(_center?: vec3, _radius?: number);
7
- get center(): vec3;
8
- set center(value: vec3);
9
- get radius(): number;
10
- set radius(value: number);
11
- applyMatrix(matrix: mat4): Sphere;
12
- clone(): ISphere;
13
- containsPoint(point: vec3): boolean;
14
- clampPoint(point: vec3): vec3;
15
- intersect(origin: vec3, direction: vec3): number | null;
16
- intersects(origin: vec3, direction: vec3): boolean;
17
- setFromBox(box: IBox): ISphere;
18
- reset(): void;
19
- }
1
+ import { IBox, ISphere } from "@shapediver/viewer.shared.types";
2
+ import { mat4, vec3 } from "gl-matrix";
3
+ export declare class Sphere implements ISphere {
4
+ private _center;
5
+ private _radius;
6
+ constructor(_center?: vec3, _radius?: number);
7
+ get center(): vec3;
8
+ set center(value: vec3);
9
+ get radius(): number;
10
+ set radius(value: number);
11
+ applyMatrix(matrix: mat4): Sphere;
12
+ clone(): ISphere;
13
+ containsPoint(point: vec3): boolean;
14
+ clampPoint(point: vec3): vec3;
15
+ intersect(origin: vec3, direction: vec3): number | null;
16
+ intersects(origin: vec3, direction: vec3): boolean;
17
+ setFromBox(box: IBox): ISphere;
18
+ reset(): void;
19
+ }
20
20
  //# sourceMappingURL=Sphere.d.ts.map
@@ -1,96 +1,96 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Sphere = void 0;
4
- const gl_matrix_1 = require("gl-matrix");
5
- class Sphere {
6
- // #region Constructors (1)
7
- constructor(_center = gl_matrix_1.vec3.create(), _radius = 0) {
8
- this._center = _center;
9
- this._radius = _radius;
10
- }
11
- // #endregion Constructors (1)
12
- // #region Public Accessors (4)
13
- get center() {
14
- return this._center;
15
- }
16
- set center(value) {
17
- this._center = value;
18
- }
19
- get radius() {
20
- return this._radius;
21
- }
22
- set radius(value) {
23
- this._radius = value;
24
- }
25
- // #endregion Public Accessors (4)
26
- // #region Public Methods (4)
27
- applyMatrix(matrix) {
28
- this._center = gl_matrix_1.vec3.transformMat4(gl_matrix_1.vec3.create(), this._center, matrix);
29
- const scaleXSq = matrix[0] * matrix[0] +
30
- matrix[1] * matrix[1] +
31
- matrix[2] * matrix[2];
32
- const scaleYSq = matrix[4] * matrix[4] +
33
- matrix[5] * matrix[5] +
34
- matrix[6] * matrix[6];
35
- const scaleZSq = matrix[8] * matrix[8] +
36
- matrix[9] * matrix[9] +
37
- matrix[10] * matrix[10];
38
- const maxScaleOnAxis = Math.sqrt(Math.max(scaleXSq, scaleYSq, scaleZSq));
39
- this.radius = this.radius * maxScaleOnAxis;
40
- return this;
41
- }
42
- clone() {
43
- return new Sphere(gl_matrix_1.vec3.clone(this._center), this._radius);
44
- }
45
- containsPoint(point) {
46
- const distanceSq = gl_matrix_1.vec3.squaredDistance(this._center, point);
47
- return distanceSq <= this._radius * this._radius;
48
- }
49
- clampPoint(point) {
50
- const direction = gl_matrix_1.vec3.sub(gl_matrix_1.vec3.create(), point, this.center);
51
- const lengthSq = gl_matrix_1.vec3.squaredLength(direction);
52
- if (lengthSq > this.radius * this.radius) {
53
- gl_matrix_1.vec3.normalize(direction, direction);
54
- gl_matrix_1.vec3.scale(direction, direction, this.radius);
55
- gl_matrix_1.vec3.add(point, this.center, direction);
56
- }
57
- return point;
58
- }
59
- intersect(origin, direction) {
60
- // vector from ray origin to sphere center
61
- const rayToSphere = gl_matrix_1.vec3.sub(gl_matrix_1.vec3.create(), this.center, origin);
62
- // project rayToSphere onto direction
63
- const projection = gl_matrix_1.vec3.dot(rayToSphere, direction);
64
- // distance from sphere center to projection
65
- const distanceToProjection = gl_matrix_1.vec3.squaredDistance(rayToSphere, gl_matrix_1.vec3.multiply(gl_matrix_1.vec3.create(), direction, gl_matrix_1.vec3.fromValues(projection, projection, projection)));
66
- // check if the distance to projection is less than the radius
67
- if (distanceToProjection <= this.radius * this.radius) {
68
- // calculate the distance from the origin to the intersection point
69
- const distanceToIntersection = Math.sqrt(this.radius * this.radius - distanceToProjection);
70
- return projection - distanceToIntersection;
71
- }
72
- // if there is no intersection, return null
73
- return null;
74
- }
75
- intersects(origin, direction) {
76
- // vector from ray origin to sphere center
77
- const rayToSphere = gl_matrix_1.vec3.sub(gl_matrix_1.vec3.create(), this.center, origin);
78
- // project rayToSphere onto direction
79
- const projection = gl_matrix_1.vec3.dot(rayToSphere, direction);
80
- // distance from sphere center to projection
81
- const distanceToProjection = gl_matrix_1.vec3.squaredDistance(rayToSphere, gl_matrix_1.vec3.multiply(gl_matrix_1.vec3.create(), direction, gl_matrix_1.vec3.fromValues(projection, projection, projection)));
82
- return distanceToProjection <= this.radius * this.radius;
83
- }
84
- setFromBox(box) {
85
- gl_matrix_1.vec3.add(this.center, box.min, box.max);
86
- gl_matrix_1.vec3.scale(this.center, this.center, 0.5);
87
- this.radius = gl_matrix_1.vec3.dist(box.min, box.max) * 0.5;
88
- return this;
89
- }
90
- reset() {
91
- this._center = gl_matrix_1.vec3.create();
92
- this._radius = 0;
93
- }
94
- }
95
- exports.Sphere = Sphere;
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Sphere = void 0;
4
+ const gl_matrix_1 = require("gl-matrix");
5
+ class Sphere {
6
+ // #region Constructors (1)
7
+ constructor(_center = gl_matrix_1.vec3.create(), _radius = 0) {
8
+ this._center = _center;
9
+ this._radius = _radius;
10
+ }
11
+ // #endregion Constructors (1)
12
+ // #region Public Accessors (4)
13
+ get center() {
14
+ return this._center;
15
+ }
16
+ set center(value) {
17
+ this._center = value;
18
+ }
19
+ get radius() {
20
+ return this._radius;
21
+ }
22
+ set radius(value) {
23
+ this._radius = value;
24
+ }
25
+ // #endregion Public Accessors (4)
26
+ // #region Public Methods (4)
27
+ applyMatrix(matrix) {
28
+ this._center = gl_matrix_1.vec3.transformMat4(gl_matrix_1.vec3.create(), this._center, matrix);
29
+ const scaleXSq = matrix[0] * matrix[0] +
30
+ matrix[1] * matrix[1] +
31
+ matrix[2] * matrix[2];
32
+ const scaleYSq = matrix[4] * matrix[4] +
33
+ matrix[5] * matrix[5] +
34
+ matrix[6] * matrix[6];
35
+ const scaleZSq = matrix[8] * matrix[8] +
36
+ matrix[9] * matrix[9] +
37
+ matrix[10] * matrix[10];
38
+ const maxScaleOnAxis = Math.sqrt(Math.max(scaleXSq, scaleYSq, scaleZSq));
39
+ this.radius = this.radius * maxScaleOnAxis;
40
+ return this;
41
+ }
42
+ clone() {
43
+ return new Sphere(gl_matrix_1.vec3.clone(this._center), this._radius);
44
+ }
45
+ containsPoint(point) {
46
+ const distanceSq = gl_matrix_1.vec3.squaredDistance(this._center, point);
47
+ return distanceSq <= this._radius * this._radius;
48
+ }
49
+ clampPoint(point) {
50
+ const direction = gl_matrix_1.vec3.sub(gl_matrix_1.vec3.create(), point, this.center);
51
+ const lengthSq = gl_matrix_1.vec3.squaredLength(direction);
52
+ if (lengthSq > this.radius * this.radius) {
53
+ gl_matrix_1.vec3.normalize(direction, direction);
54
+ gl_matrix_1.vec3.scale(direction, direction, this.radius);
55
+ gl_matrix_1.vec3.add(point, this.center, direction);
56
+ }
57
+ return point;
58
+ }
59
+ intersect(origin, direction) {
60
+ // vector from ray origin to sphere center
61
+ const rayToSphere = gl_matrix_1.vec3.sub(gl_matrix_1.vec3.create(), this.center, origin);
62
+ // project rayToSphere onto direction
63
+ const projection = gl_matrix_1.vec3.dot(rayToSphere, direction);
64
+ // distance from sphere center to projection
65
+ const distanceToProjection = gl_matrix_1.vec3.squaredDistance(rayToSphere, gl_matrix_1.vec3.multiply(gl_matrix_1.vec3.create(), direction, gl_matrix_1.vec3.fromValues(projection, projection, projection)));
66
+ // check if the distance to projection is less than the radius
67
+ if (distanceToProjection <= this.radius * this.radius) {
68
+ // calculate the distance from the origin to the intersection point
69
+ const distanceToIntersection = Math.sqrt(this.radius * this.radius - distanceToProjection);
70
+ return projection - distanceToIntersection;
71
+ }
72
+ // if there is no intersection, return null
73
+ return null;
74
+ }
75
+ intersects(origin, direction) {
76
+ // vector from ray origin to sphere center
77
+ const rayToSphere = gl_matrix_1.vec3.sub(gl_matrix_1.vec3.create(), this.center, origin);
78
+ // project rayToSphere onto direction
79
+ const projection = gl_matrix_1.vec3.dot(rayToSphere, direction);
80
+ // distance from sphere center to projection
81
+ const distanceToProjection = gl_matrix_1.vec3.squaredDistance(rayToSphere, gl_matrix_1.vec3.multiply(gl_matrix_1.vec3.create(), direction, gl_matrix_1.vec3.fromValues(projection, projection, projection)));
82
+ return distanceToProjection <= this.radius * this.radius;
83
+ }
84
+ setFromBox(box) {
85
+ gl_matrix_1.vec3.add(this.center, box.min, box.max);
86
+ gl_matrix_1.vec3.scale(this.center, this.center, 0.5);
87
+ this.radius = gl_matrix_1.vec3.dist(box.min, box.max) * 0.5;
88
+ return this;
89
+ }
90
+ reset() {
91
+ this._center = gl_matrix_1.vec3.create();
92
+ this._radius = 0;
93
+ }
94
+ }
95
+ exports.Sphere = Sphere;
96
96
  //# sourceMappingURL=Sphere.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Sphere.js","sourceRoot":"","sources":["../../src/implementation/Sphere.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Sphere.js","sourceRoot":"","sources":["../../src/implementation/Sphere.ts"],"names":[],"mappings":"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"}
@@ -1,18 +1,18 @@
1
- import { ISpherical } from "@shapediver/viewer.shared.types";
2
- import { vec3 } from "gl-matrix";
3
- export declare class Spherical implements ISpherical {
4
- private _radius;
5
- private _phi;
6
- private _theta;
7
- constructor(_radius?: number, _phi?: number, _theta?: number);
8
- get radius(): number;
9
- set radius(value: number);
10
- get phi(): number;
11
- set phi(value: number);
12
- get theta(): number;
13
- set theta(value: number);
14
- makeSafe(): this;
15
- fromVec3(p: vec3): ISpherical;
16
- toVec3(): vec3;
17
- }
1
+ import { ISpherical } from "@shapediver/viewer.shared.types";
2
+ import { vec3 } from "gl-matrix";
3
+ export declare class Spherical implements ISpherical {
4
+ private _radius;
5
+ private _phi;
6
+ private _theta;
7
+ constructor(_radius?: number, _phi?: number, _theta?: number);
8
+ get radius(): number;
9
+ set radius(value: number);
10
+ get phi(): number;
11
+ set phi(value: number);
12
+ get theta(): number;
13
+ set theta(value: number);
14
+ makeSafe(): this;
15
+ fromVec3(p: vec3): ISpherical;
16
+ toVec3(): vec3;
17
+ }
18
18
  //# sourceMappingURL=Spherical.d.ts.map
@@ -1,52 +1,52 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Spherical = void 0;
4
- const gl_matrix_1 = require("gl-matrix");
5
- class Spherical {
6
- constructor(_radius = 1, _phi = 0, _theta = 0) {
7
- this._radius = _radius;
8
- this._phi = _phi;
9
- this._theta = _theta;
10
- }
11
- get radius() {
12
- return this._radius;
13
- }
14
- set radius(value) {
15
- this._radius = value;
16
- }
17
- get phi() {
18
- return this._phi;
19
- }
20
- set phi(value) {
21
- this._phi = value;
22
- }
23
- get theta() {
24
- return this._theta;
25
- }
26
- set theta(value) {
27
- this._theta = value;
28
- }
29
- makeSafe() {
30
- const EPS = 0.000001;
31
- this.phi = Math.max(EPS, Math.min(Math.PI - EPS, this.phi));
32
- return this;
33
- }
34
- fromVec3(p) {
35
- this.radius = Math.sqrt(p[0] * p[0] + p[1] * p[1] + p[2] * p[2]);
36
- if (this.radius === 0) {
37
- this.theta = 0;
38
- this.phi = 0;
39
- }
40
- else {
41
- this.theta = Math.atan2(p[0], p[2]);
42
- this.phi = Math.acos(Math.max(-1, Math.min(1, p[1] / this.radius)));
43
- }
44
- return this;
45
- }
46
- toVec3() {
47
- const sinPhiRadius = Math.sin(this.phi) * this.radius;
48
- return gl_matrix_1.vec3.fromValues(sinPhiRadius * Math.sin(this.theta), Math.cos(this.phi) * this.radius, sinPhiRadius * Math.cos(this.theta));
49
- }
50
- }
51
- exports.Spherical = Spherical;
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Spherical = void 0;
4
+ const gl_matrix_1 = require("gl-matrix");
5
+ class Spherical {
6
+ constructor(_radius = 1, _phi = 0, _theta = 0) {
7
+ this._radius = _radius;
8
+ this._phi = _phi;
9
+ this._theta = _theta;
10
+ }
11
+ get radius() {
12
+ return this._radius;
13
+ }
14
+ set radius(value) {
15
+ this._radius = value;
16
+ }
17
+ get phi() {
18
+ return this._phi;
19
+ }
20
+ set phi(value) {
21
+ this._phi = value;
22
+ }
23
+ get theta() {
24
+ return this._theta;
25
+ }
26
+ set theta(value) {
27
+ this._theta = value;
28
+ }
29
+ makeSafe() {
30
+ const EPS = 0.000001;
31
+ this.phi = Math.max(EPS, Math.min(Math.PI - EPS, this.phi));
32
+ return this;
33
+ }
34
+ fromVec3(p) {
35
+ this.radius = Math.sqrt(p[0] * p[0] + p[1] * p[1] + p[2] * p[2]);
36
+ if (this.radius === 0) {
37
+ this.theta = 0;
38
+ this.phi = 0;
39
+ }
40
+ else {
41
+ this.theta = Math.atan2(p[0], p[2]);
42
+ this.phi = Math.acos(Math.max(-1, Math.min(1, p[1] / this.radius)));
43
+ }
44
+ return this;
45
+ }
46
+ toVec3() {
47
+ const sinPhiRadius = Math.sin(this.phi) * this.radius;
48
+ return gl_matrix_1.vec3.fromValues(sinPhiRadius * Math.sin(this.theta), Math.cos(this.phi) * this.radius, sinPhiRadius * Math.cos(this.theta));
49
+ }
50
+ }
51
+ exports.Spherical = Spherical;
52
52
  //# sourceMappingURL=Spherical.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Spherical.js","sourceRoot":"","sources":["../../src/implementation/Spherical.ts"],"names":[],"mappings":";;;AACA,yCAA+B;AAE/B,MAAa,SAAS;IACrB,YACS,UAAkB,CAAC,EACnB,OAAe,CAAC,EAChB,SAAiB,CAAC;QAFlB,YAAO,GAAP,OAAO,CAAY;QACnB,SAAI,GAAJ,IAAI,CAAY;QAChB,WAAM,GAAN,MAAM,CAAY;IACxB,CAAC;IAEJ,IAAW,MAAM;QAChB,OAAO,IAAI,CAAC,OAAO,CAAC;IACrB,CAAC;IAED,IAAW,MAAM,CAAC,KAAa;QAC9B,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;IACtB,CAAC;IAED,IAAW,GAAG;QACb,OAAO,IAAI,CAAC,IAAI,CAAC;IAClB,CAAC;IAED,IAAW,GAAG,CAAC,KAAa;QAC3B,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC;IACnB,CAAC;IAED,IAAW,KAAK;QACf,OAAO,IAAI,CAAC,MAAM,CAAC;IACpB,CAAC;IAED,IAAW,KAAK,CAAC,KAAa;QAC7B,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;IACrB,CAAC;IAEM,QAAQ;QACd,MAAM,GAAG,GAAG,QAAQ,CAAC;QACrB,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;QAC5D,OAAO,IAAI,CAAC;IACb,CAAC;IAEM,QAAQ,CAAC,CAAO;QACtB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAEjE,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;YACtB,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;YACf,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC;SACb;aAAM;YACN,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACpC,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;SACpE;QACD,OAAO,IAAI,CAAC;IACb,CAAC;IAEM,MAAM;QACZ,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC;QACtD,OAAO,gBAAI,CAAC,UAAU,CACrB,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,EACnC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,EAChC,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CACnC,CAAC;IACH,CAAC;CACD;AA1DD,8BA0DC"}
1
+ {"version":3,"file":"Spherical.js","sourceRoot":"","sources":["../../src/implementation/Spherical.ts"],"names":[],"mappings":";;;AACA,yCAA+B;AAE/B,MAAa,SAAS;IACrB,YACS,UAAkB,CAAC,EACnB,OAAe,CAAC,EAChB,SAAiB,CAAC;QAFlB,YAAO,GAAP,OAAO,CAAY;QACnB,SAAI,GAAJ,IAAI,CAAY;QAChB,WAAM,GAAN,MAAM,CAAY;IACxB,CAAC;IAEJ,IAAW,MAAM;QAChB,OAAO,IAAI,CAAC,OAAO,CAAC;IACrB,CAAC;IAED,IAAW,MAAM,CAAC,KAAa;QAC9B,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;IACtB,CAAC;IAED,IAAW,GAAG;QACb,OAAO,IAAI,CAAC,IAAI,CAAC;IAClB,CAAC;IAED,IAAW,GAAG,CAAC,KAAa;QAC3B,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC;IACnB,CAAC;IAED,IAAW,KAAK;QACf,OAAO,IAAI,CAAC,MAAM,CAAC;IACpB,CAAC;IAED,IAAW,KAAK,CAAC,KAAa;QAC7B,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;IACrB,CAAC;IAEM,QAAQ;QACd,MAAM,GAAG,GAAG,QAAQ,CAAC;QACrB,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;QAC5D,OAAO,IAAI,CAAC;IACb,CAAC;IAEM,QAAQ,CAAC,CAAO;QACtB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAEjE,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvB,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;YACf,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC;QACd,CAAC;aAAM,CAAC;YACP,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACpC,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACrE,CAAC;QACD,OAAO,IAAI,CAAC;IACb,CAAC;IAEM,MAAM;QACZ,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC;QACtD,OAAO,gBAAI,CAAC,UAAU,CACrB,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,EACnC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,EAChC,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CACnC,CAAC;IACH,CAAC;CACD;AA1DD,8BA0DC"}