@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.
- package/dist/implementation/Box.d.ts +24 -24
- package/dist/implementation/Box.js +200 -200
- package/dist/implementation/Box.js.map +1 -1
- package/dist/implementation/Plane.d.ts +27 -27
- package/dist/implementation/Plane.js +102 -102
- package/dist/implementation/Plane.js.map +1 -1
- package/dist/implementation/Sphere.d.ts +19 -19
- package/dist/implementation/Sphere.js +95 -95
- package/dist/implementation/Sphere.js.map +1 -1
- package/dist/implementation/Spherical.d.ts +17 -17
- package/dist/implementation/Spherical.js +51 -51
- package/dist/implementation/Spherical.js.map +1 -1
- package/dist/implementation/Triangle.d.ts +12 -12
- package/dist/implementation/Triangle.js +50 -50
- package/dist/index.d.ts +7 -7
- package/dist/index.js +13 -13
- package/package.json +5 -5
|
@@ -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":"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"}
|
|
@@ -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":";;;AACA,yCAAqC;AAErC,MAAa,MAAM;IAClB,2BAA2B;IAE3B,YACS,UAAgB,gBAAI,CAAC,MAAM,EAAE,EAC7B,UAAkB,CAAC;QADnB,YAAO,GAAP,OAAO,CAAsB;QAC7B,YAAO,GAAP,OAAO,CAAY;IACzB,CAAC;IAEJ,8BAA8B;IAE9B,+BAA+B;IAE/B,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,MAAM;QAChB,OAAO,IAAI,CAAC,OAAO,CAAC;IACrB,CAAC;IAED,IAAW,MAAM,CAAC,KAAa;QAC9B,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;IACtB,CAAC;IAED,kCAAkC;IAElC,6BAA6B;IAEtB,WAAW,CAAC,MAAY;QAC9B,IAAI,CAAC,OAAO,GAAG,gBAAI,CAAC,aAAa,CAAC,gBAAI,CAAC,MAAM,EAAE,EAAE,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QACvE,MAAM,QAAQ,GACb,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;YACrB,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;YACrB,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QACvB,MAAM,QAAQ,GACb,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;YACrB,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;YACrB,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QACvB,MAAM,QAAQ,GACb,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;YACrB,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;YACrB,MAAM,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC;QACzB,MAAM,cAAc,GAAG,IAAI,CAAC,IAAI,CAC/B,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC,CACtC,CAAC;QACF,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,GAAG,cAAc,CAAC;QAC3C,OAAO,IAAI,CAAC;IACb,CAAC;IAEM,KAAK;QACX,OAAO,IAAI,MAAM,CAAC,gBAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IAC3D,CAAC;IAEM,aAAa,CAAC,KAAW;QAC/B,MAAM,UAAU,GAAG,gBAAI,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QAC7D,OAAO,UAAU,IAAI,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;IAClD,CAAC;IAEM,UAAU,CAAC,KAAW;QAC5B,MAAM,SAAS,GAAG,gBAAI,CAAC,GAAG,CAAC,gBAAI,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QAC9D,MAAM,QAAQ,GAAG,gBAAI,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;QAC/C,IAAI,QAAQ,GAAG,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE;
|
|
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;
|
|
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"}
|