@shapediver/viewer.shared.math 1.15.7 → 2.0.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.
Files changed (74) hide show
  1. package/dist/{Box.d.ts → implementation/Box.d.ts} +8 -7
  2. package/dist/implementation/Box.d.ts.map +1 -0
  3. package/dist/{Box.js → implementation/Box.js} +10 -2
  4. package/dist/implementation/Box.js.map +1 -0
  5. package/dist/{Plane.d.ts → implementation/Plane.d.ts} +6 -5
  6. package/dist/implementation/Plane.d.ts.map +1 -0
  7. package/dist/{Plane.js → implementation/Plane.js} +4 -0
  8. package/dist/implementation/Plane.js.map +1 -0
  9. package/dist/{Sphere.d.ts → implementation/Sphere.d.ts} +6 -5
  10. package/dist/implementation/Sphere.d.ts.map +1 -0
  11. package/dist/{Sphere.js → implementation/Sphere.js} +4 -0
  12. package/dist/implementation/Sphere.js.map +1 -0
  13. package/dist/{Spherical.d.ts → implementation/Spherical.d.ts} +4 -3
  14. package/dist/implementation/Spherical.d.ts.map +1 -0
  15. package/dist/{Spherical.js → implementation/Spherical.js} +1 -0
  16. package/dist/implementation/Spherical.js.map +1 -0
  17. package/dist/implementation/Triangle.d.ts +13 -0
  18. package/dist/implementation/Triangle.d.ts.map +1 -0
  19. package/dist/{Triangle.js → implementation/Triangle.js} +5 -0
  20. package/dist/implementation/Triangle.js.map +1 -0
  21. package/dist/index.d.ts +12 -6
  22. package/dist/index.d.ts.map +1 -1
  23. package/dist/index.js +5 -5
  24. package/dist/index.js.map +1 -1
  25. package/dist/interfaces/IBox.d.ts +17 -0
  26. package/dist/interfaces/IBox.d.ts.map +1 -0
  27. package/dist/interfaces/IBox.js +3 -0
  28. package/dist/interfaces/IBox.js.map +1 -0
  29. package/dist/{IGeometry.d.ts → interfaces/IGeometry.d.ts} +1 -0
  30. package/dist/interfaces/IGeometry.d.ts.map +1 -0
  31. package/dist/{IGeometry.js → interfaces/IGeometry.js} +0 -0
  32. package/dist/{IGeometry.js.map → interfaces/IGeometry.js.map} +1 -1
  33. package/dist/interfaces/IPlane.d.ts +14 -0
  34. package/dist/interfaces/IPlane.d.ts.map +1 -0
  35. package/dist/interfaces/IPlane.js +3 -0
  36. package/dist/interfaces/IPlane.js.map +1 -0
  37. package/dist/interfaces/ISphere.d.ts +13 -0
  38. package/dist/interfaces/ISphere.d.ts.map +1 -0
  39. package/dist/interfaces/ISphere.js +3 -0
  40. package/dist/interfaces/ISphere.js.map +1 -0
  41. package/dist/interfaces/ISpherical.d.ts +10 -0
  42. package/dist/interfaces/ISpherical.d.ts.map +1 -0
  43. package/dist/interfaces/ISpherical.js +3 -0
  44. package/dist/interfaces/ISpherical.js.map +1 -0
  45. package/dist/interfaces/ITriangle.d.ts +8 -0
  46. package/dist/interfaces/ITriangle.d.ts.map +1 -0
  47. package/dist/interfaces/ITriangle.js +3 -0
  48. package/dist/interfaces/ITriangle.js.map +1 -0
  49. package/package.json +11 -8
  50. package/src/implementation/Box.ts +183 -0
  51. package/src/implementation/Plane.ts +86 -0
  52. package/src/implementation/Sphere.ts +72 -0
  53. package/src/implementation/Spherical.ts +61 -0
  54. package/src/implementation/Triangle.ts +51 -0
  55. package/src/index.ts +16 -0
  56. package/src/interfaces/IBox.ts +26 -0
  57. package/src/interfaces/IGeometry.ts +7 -0
  58. package/src/interfaces/IPlane.ts +23 -0
  59. package/src/interfaces/ISphere.ts +22 -0
  60. package/src/interfaces/ISpherical.ts +19 -0
  61. package/src/interfaces/ITriangle.ts +12 -0
  62. package/tsconfig.json +17 -0
  63. package/dist/Box.d.ts.map +0 -1
  64. package/dist/Box.js.map +0 -1
  65. package/dist/IGeometry.d.ts.map +0 -1
  66. package/dist/Plane.d.ts.map +0 -1
  67. package/dist/Plane.js.map +0 -1
  68. package/dist/Sphere.d.ts.map +0 -1
  69. package/dist/Sphere.js.map +0 -1
  70. package/dist/Spherical.d.ts.map +0 -1
  71. package/dist/Spherical.js.map +0 -1
  72. package/dist/Triangle.d.ts +0 -12
  73. package/dist/Triangle.d.ts.map +0 -1
  74. package/dist/Triangle.js.map +0 -1
@@ -0,0 +1,183 @@
1
+ import { mat4, vec3 } from 'gl-matrix'
2
+ import { Sphere } from '..';
3
+ import { IBox } from '../interfaces/IBox';
4
+ import { ISphere } from '../interfaces/ISphere';
5
+
6
+
7
+ export class Box implements IBox {
8
+ // #region Properties (2)
9
+
10
+ private _boundingSphere: ISphere = new Sphere();
11
+ private _boundingSphereState: { min: vec3, max: vec3 } = {
12
+ min: vec3.create(), max: vec3.create()
13
+ }
14
+
15
+ // #endregion Properties (2)
16
+
17
+ // #region Constructors (1)
18
+ constructor(
19
+ private _min: vec3 = vec3.fromValues(Infinity, Infinity, Infinity),
20
+ private _max: vec3 = vec3.fromValues(-Infinity, -Infinity, -Infinity)
21
+ ) { }
22
+
23
+ // #endregion Constructors (1)
24
+
25
+ // #region Public Accessors (5)
26
+
27
+ public intersect(origin: vec3, direction: vec3): number | null {
28
+ let tmin, tmax, txmin, txmax, tymin, tymax, tzmin, tzmax;
29
+
30
+ const invdirx = 1 / direction[0],
31
+ invdiry = 1 / direction[1],
32
+ invdirz = 1 / direction[2];
33
+
34
+ txmin = invdirx >= 0 ? (this.min[0] - origin[0]) * invdirx : (this.max[0] - origin[0]) * invdirx;
35
+ txmax = invdirx >= 0 ? (this.max[0] - origin[0]) * invdirx : (this.min[0] - origin[0]) * invdirx;
36
+ tmin = txmin;
37
+ tmax = txmax;
38
+
39
+ tymin = invdiry >= 0 ? (this.min[1] - origin[1]) * invdiry : (this.max[1] - origin[1]) * invdiry;
40
+ tymax = invdiry >= 0 ? (this.max[1] - origin[1]) * invdiry : (this.min[1] - origin[1]) * invdiry;
41
+
42
+ if ((tmin > tymax) || (tymin > tmax)) return null;
43
+
44
+ // These lines also handle the case where tmin or tmax is NaN
45
+ // (result of 0 * Infinity). x !== x returns true if x is NaN
46
+
47
+ if (tymin > tmin || tmin !== tmin) tmin = tymin;
48
+ if (tymax < tmax || tmax !== tmax) tmax = tymax;
49
+
50
+ tzmin = invdirz >= 0 ? (this.min[2] - origin[2]) * invdirz : (this.max[2] - origin[2]) * invdirz;
51
+ tzmax = invdirz >= 0 ? (this.max[2] - origin[2]) * invdirz : (this.min[2] - origin[2]) * invdirz;
52
+
53
+ if ((tmin > tzmax) || (tzmin > tmax)) return null;
54
+ if (tzmin > tmin || tmin !== tmin) tmin = tzmin;
55
+ if (tzmax < tmax || tmax !== tmax) tmax = tzmax;
56
+
57
+ //return point closest to the ray (positive side)
58
+ if (tmax < 0) return null;
59
+ return tmin >= 0 ? tmin : tmax;
60
+ };
61
+
62
+
63
+ public get boundingSphere(): ISphere {
64
+ if (!(this._boundingSphereState.min[0] === this.min[0] && this._boundingSphereState.min[1] === this.min[1] && this._boundingSphereState.min[2] === this.min[2] &&
65
+ this._boundingSphereState.max[0] === this.max[0] && this._boundingSphereState.max[1] === this.max[1] && this._boundingSphereState.max[2] === this.max[2])) {
66
+ this._boundingSphere.setFromBox(this);
67
+ this._boundingSphereState = {
68
+ min: vec3.clone(this.min),
69
+ max: vec3.clone(this.max)
70
+ };
71
+ }
72
+ return this._boundingSphere;
73
+ }
74
+
75
+ public get max(): vec3 {
76
+ return this._max;
77
+ }
78
+
79
+ public set max(value: vec3) {
80
+ this._max = value;
81
+ }
82
+
83
+ public get min(): vec3 {
84
+ return this._min;
85
+ }
86
+
87
+ public set min(value: vec3) {
88
+ this._min = value;
89
+ }
90
+
91
+ // #endregion Public Accessors (5)
92
+
93
+ // #region Public Methods (5)
94
+
95
+ public applyMatrix(matrix: mat4): Box {
96
+ const points: vec3[] = [];
97
+ points.push(vec3.transformMat4(vec3.create(), vec3.fromValues(this.min[0], this.min[1], this.min[2]), matrix));
98
+ points.push(vec3.transformMat4(vec3.create(), vec3.fromValues(this.min[0], this.min[1], this.max[2]), matrix));
99
+ points.push(vec3.transformMat4(vec3.create(), vec3.fromValues(this.min[0], this.max[1], this.min[2]), matrix));
100
+ points.push(vec3.transformMat4(vec3.create(), vec3.fromValues(this.min[0], this.max[1], this.max[2]), matrix));
101
+ points.push(vec3.transformMat4(vec3.create(), vec3.fromValues(this.max[0], this.min[1], this.min[2]), matrix));
102
+ points.push(vec3.transformMat4(vec3.create(), vec3.fromValues(this.max[0], this.min[1], this.max[2]), matrix));
103
+ points.push(vec3.transformMat4(vec3.create(), vec3.fromValues(this.max[0], this.max[1], this.min[2]), matrix));
104
+ points.push(vec3.transformMat4(vec3.create(), vec3.fromValues(this.max[0], this.max[1], this.max[2]), matrix));
105
+
106
+ this.min = vec3.fromValues(Infinity, Infinity, Infinity);
107
+ this.max = vec3.fromValues(-Infinity, -Infinity, -Infinity);
108
+
109
+ for ( let i = 0, il = points.length; i < il; i ++ ) {
110
+ this.min = vec3.fromValues(Math.min(this.min[0], points[i][0]), Math.min(this.min[1], points[i][1]), Math.min(this.min[2], points[i][2]));
111
+ this.max = vec3.fromValues(Math.max(this.max[0], points[i][0]), Math.max(this.max[1], points[i][1]), Math.max(this.max[2], points[i][2]));
112
+ }
113
+ return this;
114
+ }
115
+
116
+ public clone(): IBox {
117
+ return new Box(vec3.clone(this.min), vec3.clone(this.max))
118
+ }
119
+
120
+ public containsPoint(point: vec3): boolean {
121
+ return point[0] < this.min[0] || point[0] > this.max[0] ||
122
+ point[1] < this.min[1] || point[1] > this.max[1] ||
123
+ point[2] < this.min[2] || point[2] > this.max[2] ? false : true;
124
+ }
125
+
126
+ public clampPoint(point: vec3): vec3 {
127
+ point[0] = Math.max(this.min[0], Math.min(this.max[0], point[0]));
128
+ point[1] = Math.max(this.min[1], Math.min(this.max[1], point[1]));
129
+ point[2] = Math.max(this.min[2], Math.min(this.max[2], point[2]));
130
+ return point;
131
+ }
132
+
133
+ public setFromAttributeArray(array: Int8Array | Uint8Array | Int16Array | Uint16Array | Uint32Array | Float32Array): IBox {
134
+ let minX = Infinity, minY = Infinity, minZ = Infinity;
135
+ let maxX = -Infinity, maxY = -Infinity, maxZ = -Infinity;
136
+
137
+ for (let i = 0; i < array.length; i += 3) {
138
+ const x = array[i];
139
+ const y = array[i + 1];
140
+ const z = array[i + 2];
141
+
142
+ if (x < minX) minX = x;
143
+ if (y < minY) minY = y;
144
+ if (z < minZ) minZ = z;
145
+
146
+ if (x > maxX) maxX = x;
147
+ if (y > maxY) maxY = y;
148
+ if (z > maxZ) maxZ = z;
149
+ }
150
+
151
+ this.min = vec3.fromValues(minX, minY, minZ);
152
+ this.max = vec3.fromValues(maxX, maxY, maxZ);
153
+ return this;
154
+ }
155
+
156
+ public union(box: IBox): IBox {
157
+ if (box.min[0] < this.min[0]) this.min[0] = box.min[0];
158
+ if (box.min[1] < this.min[1]) this.min[1] = box.min[1];
159
+ if (box.min[2] < this.min[2]) this.min[2] = box.min[2];
160
+
161
+ if (box.max[0] > this.max[0]) this.max[0] = box.max[0];
162
+ if (box.max[1] > this.max[1]) this.max[1] = box.max[1];
163
+ if (box.max[2] > this.max[2]) this.max[2] = box.max[2];
164
+ return this;
165
+ }
166
+
167
+ public isEmpty(): boolean {
168
+ return this.min[0] === Infinity && this.min[1] === Infinity && this.min[2] === Infinity &&
169
+ this.max[0] === -Infinity && this.max[1] === -Infinity && this.max[2] === -Infinity;
170
+ }
171
+
172
+ public reset(): void {
173
+ this._boundingSphere = new Sphere();
174
+ this._boundingSphereState = {
175
+ min: vec3.create(), max: vec3.create()
176
+ }
177
+
178
+ this._min = vec3.fromValues(Infinity, Infinity, Infinity);
179
+ this._max = vec3.fromValues(-Infinity, -Infinity, -Infinity);
180
+ }
181
+
182
+ // #endregion Public Methods (5)
183
+ }
@@ -0,0 +1,86 @@
1
+ import { mat3, mat4, vec3 } from 'gl-matrix'
2
+ import { IPlane } from '../interfaces/IPlane';
3
+
4
+
5
+ export class Plane implements IPlane {
6
+
7
+ // #region Constructors (1)
8
+
9
+ constructor(private _normal: vec3 = vec3.fromValues(1,0,0), private _constant: number = 0) {}
10
+
11
+ // #endregion Constructors (1)
12
+
13
+ // #region Public Accessors (4)
14
+
15
+ public get constant(): number {
16
+ return this._constant;
17
+ }
18
+
19
+ public set constant(value: number) {
20
+ this._constant = value;
21
+ }
22
+
23
+ public get normal(): vec3 {
24
+ return this._normal;
25
+ }
26
+
27
+ public set normal(value: vec3) {
28
+ this._normal = value;
29
+ }
30
+
31
+ // #endregion Public Accessors (4)
32
+
33
+ // #region Public Methods (7)
34
+
35
+ public applyMatrix(matrix: mat4): IPlane {
36
+ const normalMatrix = mat3.transpose(mat3.create(), mat3.invert(mat3.create(), mat3.fromMat4(mat3.create(), matrix)))
37
+ const p = vec3.transformMat4(vec3.create(), vec3.multiply(vec3.create(), vec3.clone(this.normal), vec3.fromValues(this._constant, this._constant, this._constant)), matrix)
38
+ this._normal = vec3.normalize(vec3.create(), vec3.transformMat3(vec3.create(), this._normal, normalMatrix));
39
+ this.constant = -vec3.dot(p, this._normal);
40
+ return this;
41
+ }
42
+
43
+ public clampPoint(point: vec3): vec3 {
44
+ const d = -this.distanceToPoint(point);
45
+ return vec3.add(vec3.create(), vec3.multiply(vec3.create(), this.normal, vec3.fromValues(d, d, d)), point);
46
+ }
47
+
48
+ public clone(): IPlane {
49
+ return new Plane(this._normal, this._constant);
50
+ }
51
+
52
+ public containsPoint(point: vec3): boolean {
53
+ return this.distanceToPoint(point) === 0;
54
+ }
55
+
56
+ public distanceToPoint(point: vec3): number {
57
+ return vec3.dot(this.normal, point) + this.constant;
58
+ }
59
+
60
+ public intersect(origin: vec3, direction: vec3): number | null {
61
+ const denominator = vec3.dot(this.normal, direction);
62
+ if (denominator === 0) {
63
+ // line is coplanar, return origin
64
+ if (this.distanceToPoint( origin ) === 0) return 0;
65
+ // Null is preferable to undefined since undefined means.... it is undefined
66
+ return null;
67
+ }
68
+ const t = - (vec3.dot(origin, this.normal) + this.constant) / denominator;
69
+ if ( t < 0 ) return null;
70
+
71
+ return t; //vec3.add(vec3.create(), vec3.multiply(vec3.create(), direction, vec3.fromValues(t,t,t)), origin);
72
+ }
73
+
74
+ public setFromNormalAndCoplanarPoint(normal: vec3, point: vec3): IPlane {
75
+ vec3.copy(this.normal, normal);
76
+ this.constant = -vec3.dot(point, this.normal);
77
+ return this;
78
+ }
79
+
80
+ public reset() {
81
+ this._normal = vec3.fromValues(1,0,0);
82
+ this._constant = 0;
83
+ }
84
+
85
+ // #endregion Public Methods (7)
86
+ }
@@ -0,0 +1,72 @@
1
+ import { mat4, vec3 } from 'gl-matrix'
2
+ import { IBox } from '../interfaces/IBox';
3
+ import { ISphere } from '../interfaces/ISphere';
4
+
5
+ export class Sphere implements ISphere {
6
+ // #region Constructors (1)
7
+
8
+ constructor(
9
+ private _center: vec3 = vec3.create(),
10
+ private _radius: number = 0
11
+ ) { }
12
+
13
+ // #endregion Constructors (1)
14
+
15
+ // #region Public Accessors (4)
16
+
17
+ public get center(): vec3 {
18
+ return this._center;
19
+ }
20
+
21
+ public set center(value: vec3) {
22
+ this._center = value;
23
+ }
24
+
25
+ public get radius(): number {
26
+ return this._radius;
27
+ }
28
+
29
+ public set radius(value: number) {
30
+ this._radius = value;
31
+ }
32
+
33
+ // #endregion Public Accessors (4)
34
+
35
+ // #region Public Methods (4)
36
+
37
+ public applyMatrix(matrix: mat4): Sphere {
38
+ this._center = vec3.transformMat4(vec3.create(), this._center, matrix);
39
+ const scaleXSq = matrix[0] * matrix[0] + matrix[1] * matrix[1] + matrix[2] * matrix[2];
40
+ const scaleYSq = matrix[4] * matrix[4] + matrix[5] * matrix[5] + matrix[6] * matrix[6];
41
+ const scaleZSq = matrix[8] * matrix[8] + matrix[9] * matrix[9] + matrix[10] * matrix[10];
42
+ const maxScaleOnAxis = Math.sqrt(Math.max(scaleXSq, scaleYSq, scaleZSq));
43
+ this.radius = this.radius * maxScaleOnAxis;
44
+ return this;
45
+ }
46
+
47
+ public clone(): ISphere {
48
+ return new Sphere(vec3.clone(this._center), this._radius);
49
+ }
50
+
51
+ public containsPoint(point: vec3): boolean {
52
+ return (vec3.squaredDistance(point, this.center) <= (this.radius * this.radius));
53
+ }
54
+
55
+ public clampPoint(point: vec3): vec3 {
56
+ return point;
57
+ }
58
+
59
+ public setFromBox(box: IBox): ISphere {
60
+ vec3.add(this.center, box.min, box.max);
61
+ vec3.scale(this.center, this.center, 0.5);
62
+ this.radius = vec3.dist(box.min, box.max) * 0.5;
63
+ return this;
64
+ }
65
+
66
+ public reset() {
67
+ this._center = vec3.create();
68
+ this._radius = 0;
69
+ }
70
+
71
+ // #endregion Public Methods (4)
72
+ }
@@ -0,0 +1,61 @@
1
+ import { vec3 } from 'gl-matrix'
2
+ import { ISpherical } from '../interfaces/ISpherical';
3
+
4
+ export class Spherical implements ISpherical {
5
+ constructor(
6
+ private _radius: number = 1,
7
+ private _phi: number = 0,
8
+ private _theta: number = 0,
9
+ ) { }
10
+
11
+
12
+ public get radius(): number {
13
+ return this._radius;
14
+ }
15
+
16
+ public set radius(value: number) {
17
+ this._radius = value;
18
+ }
19
+
20
+
21
+ public get phi(): number {
22
+ return this._phi;
23
+ }
24
+
25
+ public set phi(value: number) {
26
+ this._phi = value;
27
+ }
28
+
29
+
30
+ public get theta(): number {
31
+ return this._theta;
32
+ }
33
+
34
+ public set theta(value: number) {
35
+ this._theta = value;
36
+ }
37
+
38
+ public makeSafe() {
39
+ const EPS = 0.000001;
40
+ this.phi = Math.max( EPS, Math.min( Math.PI - EPS, this.phi ));
41
+ return this;
42
+ }
43
+
44
+ public fromVec3(p: vec3): ISpherical {
45
+ this.radius = Math.sqrt(p[0] * p[0] + p[1] * p[1] + p[2] * p[2]);
46
+
47
+ if (this.radius === 0) {
48
+ this.theta = 0;
49
+ this.phi = 0;
50
+ } else {
51
+ this.theta = Math.atan2(p[0], p[2]);
52
+ this.phi = Math.acos(Math.max(-1, Math.min(1, p[1] / this.radius)));
53
+ }
54
+ return this;
55
+ }
56
+
57
+ public toVec3(): vec3 {
58
+ const sinPhiRadius = Math.sin( this.phi ) * this.radius;
59
+ return vec3.fromValues(sinPhiRadius * Math.sin( this.theta ), Math.cos( this.phi ) * this.radius, sinPhiRadius * Math.cos( this.theta ));
60
+ }
61
+ }
@@ -0,0 +1,51 @@
1
+ import { mat4, vec3 } from 'gl-matrix'
2
+ import { ITriangle } from '../interfaces/ITriangle';
3
+
4
+
5
+ export class Triangle implements ITriangle {
6
+ constructor(
7
+ private _v0: vec3 = vec3.create(),
8
+ private _v1: vec3 = vec3.create(),
9
+ private _v2: vec3 = vec3.create(),
10
+ ) { }
11
+
12
+ applyMatrix(matrix: mat4): ITriangle {
13
+ vec3.transformMat4(this._v0, this._v0, matrix);
14
+ vec3.transformMat4(this._v1, this._v1, matrix);
15
+ vec3.transformMat4(this._v2, this._v2, matrix);
16
+ return this;
17
+ }
18
+
19
+ clone(): ITriangle {
20
+ return new Triangle(vec3.clone(this._v0), vec3.clone(this._v1), vec3.clone(this._v2));
21
+ }
22
+
23
+ // Möller–Trumbore intersection algorithm
24
+ intersect(origin: vec3, direction: vec3): vec3 | null {
25
+ const EPSILON = 0.0000001;
26
+ const edge1 = vec3.sub(vec3.create(), this._v1, this._v0);
27
+ const edge2 = vec3.sub(vec3.create(), this._v2, this._v0);
28
+ const h = vec3.cross(vec3.create(), direction, edge2)
29
+ const a = vec3.dot(edge1, h);
30
+ if (a > -EPSILON && a < EPSILON)
31
+ return null; // This ray is parallel to this triangle.
32
+ const f = 1.0 / a;
33
+ const s = vec3.sub(vec3.create(), origin, this._v0);
34
+ const u = f * vec3.dot(s, h);
35
+ if (u < 0.0 || u > 1.0)
36
+ return null;
37
+ const q = vec3.cross(vec3.create(), s, edge1);
38
+ const v = f * vec3.dot(direction, q);
39
+ if (v < 0.0 || u + v > 1.0)
40
+ return null;
41
+ // At this stage we can compute t to find out where the intersection point is on the line.
42
+ const t = f * vec3.dot(edge2, q);
43
+ return t > EPSILON ? vec3.add(vec3.create(), vec3.multiply(vec3.create(), direction, vec3.fromValues(t, t, t)), origin):null;
44
+ }
45
+
46
+ reset() {
47
+ this._v0 = vec3.create();
48
+ this._v1 = vec3.create();
49
+ this._v2 = vec3.create();
50
+ }
51
+ }
package/src/index.ts ADDED
@@ -0,0 +1,16 @@
1
+ import { Box } from './implementation/Box'
2
+ import { Plane } from './implementation/Plane'
3
+ import { Sphere } from './implementation/Sphere'
4
+ import { Spherical } from './implementation/Spherical'
5
+ import { Triangle } from './implementation/Triangle'
6
+ import { IBox } from './interfaces/IBox'
7
+ import { IGeometry } from './interfaces/IGeometry'
8
+ import { IPlane } from './interfaces/IPlane'
9
+ import { ISphere } from './interfaces/ISphere'
10
+ import { ISpherical } from './interfaces/ISpherical'
11
+ import { ITriangle } from './interfaces/ITriangle'
12
+
13
+ export {
14
+ IBox, ISphere, ISpherical, IPlane, ITriangle, IGeometry,
15
+ Box, Sphere, Spherical, Plane, Triangle
16
+ }
@@ -0,0 +1,26 @@
1
+ import { mat4, vec3 } from "gl-matrix";
2
+ import { IGeometry } from "./IGeometry";
3
+ import { ISphere } from "./ISphere";
4
+
5
+ export interface IBox extends IGeometry {
6
+ // #region Properties (3)
7
+
8
+ boundingSphere: ISphere;
9
+ max: vec3;
10
+ min: vec3;
11
+
12
+ // #endregion Properties (3)
13
+
14
+ // #region Public Methods (7)
15
+
16
+ applyMatrix(matrix: mat4): IBox;
17
+ clampPoint(point: vec3): vec3;
18
+ clone(): IBox;
19
+ containsPoint(point: vec3): boolean;
20
+ intersect(origin: vec3, direction: vec3): number | null;
21
+ isEmpty(): boolean;
22
+ setFromAttributeArray(array: Int8Array | Uint8Array | Int16Array | Uint16Array | Uint32Array | Float32Array): IBox;
23
+ union(box: IBox): IBox;
24
+
25
+ // #endregion Public Methods (7)
26
+ }
@@ -0,0 +1,7 @@
1
+ import { mat4, vec3 } from 'gl-matrix'
2
+
3
+ export interface IGeometry {
4
+ applyMatrix(matrix: mat4): IGeometry;
5
+ clone(): IGeometry;
6
+ reset(): void;
7
+ }
@@ -0,0 +1,23 @@
1
+ import { mat4, vec3 } from "gl-matrix";
2
+ import { IGeometry } from "./IGeometry";
3
+
4
+ export interface IPlane extends IGeometry {
5
+ // #region Properties (2)
6
+
7
+ constant: number;
8
+ normal: vec3;
9
+
10
+ // #endregion Properties (2)
11
+
12
+ // #region Public Methods (6)
13
+
14
+ applyMatrix(matrix: mat4): IPlane;
15
+ clampPoint(point: vec3): vec3;
16
+ clone(): IPlane;
17
+ containsPoint(point: vec3): boolean;
18
+ distanceToPoint(point: vec3): number;
19
+ intersect(origin: vec3, direction: vec3): number | null;
20
+ setFromNormalAndCoplanarPoint(normal: vec3, point: vec3): IPlane;
21
+
22
+ // #endregion Public Methods (6)
23
+ }
@@ -0,0 +1,22 @@
1
+ import { mat4, vec3 } from "gl-matrix";
2
+ import { IBox } from "./IBox";
3
+ import { IGeometry } from "./IGeometry";
4
+
5
+ export interface ISphere extends IGeometry {
6
+ // #region Properties (2)
7
+
8
+ center: vec3;
9
+ radius: number;
10
+
11
+ // #endregion Properties (2)
12
+
13
+ // #region Public Methods (4)
14
+
15
+ applyMatrix(matrix: mat4): ISphere;
16
+ clampPoint(point: vec3): vec3;
17
+ clone(): ISphere;
18
+ containsPoint(point: vec3): boolean;
19
+ setFromBox(box: IBox): ISphere;
20
+
21
+ // #endregion Public Methods (4)
22
+ }
@@ -0,0 +1,19 @@
1
+ import { vec3 } from "gl-matrix";
2
+
3
+ export interface ISpherical {
4
+ // #region Properties (3)
5
+
6
+ phi: number;
7
+ radius: number;
8
+ theta: number;
9
+
10
+ // #endregion Properties (3)
11
+
12
+ // #region Public Methods (3)
13
+
14
+ fromVec3(p: vec3): ISpherical;
15
+ makeSafe(): ISpherical;
16
+ toVec3(): vec3;
17
+
18
+ // #endregion Public Methods (3)
19
+ }
@@ -0,0 +1,12 @@
1
+ import { mat4, vec3 } from "gl-matrix";
2
+ import { IGeometry } from "./IGeometry";
3
+
4
+ export interface ITriangle extends IGeometry {
5
+ // #region Public Methods (2)
6
+
7
+ applyMatrix(matrix: mat4): IGeometry;
8
+ clone(): ITriangle;
9
+ intersect(origin: vec3, direction: vec3): vec3 | null;
10
+
11
+ // #endregion Public Methods (2)
12
+ }
package/tsconfig.json ADDED
@@ -0,0 +1,17 @@
1
+ {
2
+ "extends": "../../tsconfig.json",
3
+ "include": [
4
+ "./**/*.ts"
5
+ ],
6
+ "compilerOptions": {
7
+ "rootDir": "src",
8
+ "outDir": "dist"
9
+ },
10
+ "exclude": [
11
+ "__tests__",
12
+ "node_modules",
13
+ "dist",
14
+ "dist-dev",
15
+ "dist-prod"
16
+ ]
17
+ }
package/dist/Box.d.ts.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"Box.d.ts","sourceRoot":"","sources":["../src/Box.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAEtC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AACvC,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA;AAEjC,qBAAa,GAAI,YAAW,SAAS;IAY7B,OAAO,CAAC,IAAI;IACZ,OAAO,CAAC,IAAI;IAVhB,OAAO,CAAC,eAAe,CAAwB;IAC/C,OAAO,CAAC,oBAAoB,CAE3B;gBAMW,IAAI,GAAE,IAAoD,EAC1D,IAAI,GAAE,IAAuD;IAOlE,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,GAAG,MAAM,GAAG,IAAI;IAoC9D,IAAW,cAAc,IAAI,MAAM,CAUlC;IAED,IAAW,GAAG,IAAI,IAAI,CAErB;IAED,IAAW,GAAG,CAAC,KAAK,EAAE,IAAI,EAEzB;IAED,IAAW,GAAG,IAAI,IAAI,CAErB;IAED,IAAW,GAAG,CAAC,KAAK,EAAE,IAAI,EAEzB;IAMM,WAAW,CAAC,MAAM,EAAE,IAAI,GAAG,GAAG;IAqB9B,KAAK,IAAI,GAAG;IAIZ,aAAa,CAAC,KAAK,EAAE,IAAI,GAAG,OAAO;IAMnC,UAAU,CAAC,KAAK,EAAE,IAAI,GAAG,IAAI;IAO7B,qBAAqB,CAAC,KAAK,EAAE,SAAS,GAAG,UAAU,GAAG,UAAU,GAAG,WAAW,GAAG,WAAW,GAAG,YAAY,GAAG,GAAG;IAuBjH,KAAK,CAAC,GAAG,EAAE,GAAG,GAAG,GAAG;IAWpB,OAAO,IAAI,OAAO;CAM5B"}
package/dist/Box.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"Box.js","sourceRoot":"","sources":["../src/Box.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"IGeometry.d.ts","sourceRoot":"","sources":["../src/IGeometry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAQ,MAAM,WAAW,CAAA;AAEtC,MAAM,WAAW,SAAS;IACtB,WAAW,CAAC,MAAM,EAAE,IAAI,GAAG,SAAS,CAAC;IACrC,KAAK,IAAI,SAAS,CAAC;CACtB"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"Plane.d.ts","sourceRoot":"","sources":["../src/Plane.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,IAAI,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAE5C,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAEvC,qBAAa,KAAM,YAAW,SAAS;IAIvB,OAAO,CAAC,OAAO;IAAiC,OAAO,CAAC,SAAS;gBAAzD,OAAO,GAAE,IAA6B,EAAU,SAAS,GAAE,MAAU;IAMzF,IAAW,QAAQ,IAAI,MAAM,CAE/B;IAEE,IAAW,QAAQ,CAAC,KAAK,EAAE,MAAM,EAEnC;IAEE,IAAW,MAAM,IAAI,IAAI,CAE3B;IAEE,IAAW,MAAM,CAAC,KAAK,EAAE,IAAI,EAE/B;IAMS,WAAW,CAAC,MAAM,EAAE,IAAI,GAAG,SAAS;IAQpC,UAAU,CAAC,KAAK,EAAE,IAAI,GAAG,IAAI;IAK7B,KAAK,IAAI,SAAS;IAIlB,aAAa,CAAC,KAAK,EAAE,IAAI,GAAG,OAAO;IAInC,eAAe,CAAC,KAAK,EAAE,IAAI,GAAG,MAAM;IAIpC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,GAAG,MAAM,GAAG,IAAI;IAcvD,6BAA6B,CAAC,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,GAAG,KAAK;CAOzE"}
package/dist/Plane.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"Plane.js","sourceRoot":"","sources":["../src/Plane.ts"],"names":[],"mappings":";;;AAAA,yCAA4C;AAI5C,MAAa,KAAK;IAEd,2BAA2B;IAE3B,YAAoB,UAAgB,gBAAI,CAAC,UAAU,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC,EAAU,YAAoB,CAAC;QAArE,YAAO,GAAP,OAAO,CAA+B;QAAU,cAAS,GAAT,SAAS,CAAY;IAAG,CAAC;IAE7F,8BAA8B;IAE9B,+BAA+B;IAE/B,IAAW,QAAQ;QACrB,OAAO,IAAI,CAAC,SAAS,CAAC;IACvB,CAAC;IAEE,IAAW,QAAQ,CAAC,KAAa;QACnC,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;IACxB,CAAC;IAEE,IAAW,MAAM;QACnB,OAAO,IAAI,CAAC,OAAO,CAAC;IACrB,CAAC;IAEE,IAAW,MAAM,CAAC,KAAW;QAC/B,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;IACtB,CAAC;IAEE,kCAAkC;IAElC,6BAA6B;IAEtB,WAAW,CAAC,MAAY;QAC3B,MAAM,YAAY,GAAG,gBAAI,CAAC,SAAS,CAAC,gBAAI,CAAC,MAAM,EAAE,EAAE,gBAAI,CAAC,MAAM,CAAC,gBAAI,CAAC,MAAM,EAAE,EAAE,gBAAI,CAAC,QAAQ,CAAC,gBAAI,CAAC,MAAM,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,CAAA;QACpH,MAAM,CAAC,GAAG,gBAAI,CAAC,aAAa,CAAC,gBAAI,CAAC,MAAM,EAAE,EAAE,gBAAI,CAAC,QAAQ,CAAC,gBAAI,CAAC,MAAM,EAAE,EAAE,gBAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,gBAAI,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,MAAM,CAAC,CAAA;QAC3K,IAAI,CAAC,OAAO,GAAG,gBAAI,CAAC,SAAS,CAAC,gBAAI,CAAC,MAAM,EAAE,EAAE,gBAAI,CAAC,aAAa,CAAC,gBAAI,CAAC,MAAM,EAAE,EAAE,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC;QAClH,IAAI,CAAC,QAAQ,GAAG,CAAC,gBAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QAC3C,OAAO,IAAI,CAAC;IACV,CAAC;IAEM,UAAU,CAAC,KAAW;QACzB,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;QACvC,OAAO,gBAAI,CAAC,GAAG,CAAC,gBAAI,CAAC,MAAM,EAAE,EAAE,gBAAI,CAAC,QAAQ,CAAC,gBAAI,CAAC,MAAM,EAAE,EAAE,IAAI,CAAC,MAAM,EAAE,gBAAI,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IAC/G,CAAC;IAEM,KAAK;QACR,OAAO,IAAI,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;IACnD,CAAC;IAEM,aAAa,CAAC,KAAW;QAC3B,OAAO,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAC9C,CAAC;IAEM,eAAe,CAAC,KAAW;QAC9B,OAAO,gBAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC;IACxD,CAAC;IAEM,SAAS,CAAC,MAAY,EAAE,SAAe;QAChD,MAAM,WAAW,GAAG,gBAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;QACrD,IAAI,WAAW,KAAK,CAAC,EAAE;YACtB,kCAAkC;YAClC,IAAI,IAAI,CAAC,eAAe,CAAE,MAAM,CAAE,KAAK,CAAC;gBAAE,OAAO,CAAC,CAAC;YACnD,4EAA4E;YAC5E,OAAO,IAAI,CAAC;SACZ;QACD,MAAM,CAAC,GAAG,CAAE,CAAC,gBAAI,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,WAAW,CAAC;QAC1E,IAAK,CAAC,GAAG,CAAC;YAAG,OAAO,IAAI,CAAC;QAEnB,OAAO,CAAC,CAAC,CAAC,mGAAmG;IACjH,CAAC;IAEM,6BAA6B,CAAC,MAAY,EAAE,KAAW;QAC1D,gBAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACrC,IAAI,CAAC,QAAQ,GAAG,CAAC,gBAAI,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QAC9C,OAAO,IAAI,CAAC;IACV,CAAC;CAGJ;AA5ED,sBA4EC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"Sphere.d.ts","sourceRoot":"","sources":["../src/Sphere.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAEtC,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAA;AAC3B,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAEvC,qBAAa,MAAO,YAAW,SAAS;IAIhC,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,OAAO;gBADP,OAAO,GAAE,IAAoB,EAC7B,OAAO,GAAE,MAAU;IAO/B,IAAW,MAAM,IAAI,IAAI,CAExB;IAED,IAAW,MAAM,CAAC,KAAK,EAAE,IAAI,EAE5B;IAED,IAAW,MAAM,IAAI,MAAM,CAE1B;IAED,IAAW,MAAM,CAAC,KAAK,EAAE,MAAM,EAE9B;IAMM,WAAW,CAAC,MAAM,EAAE,IAAI,GAAG,MAAM;IAUjC,KAAK,IAAI,MAAM;IAIf,aAAa,CAAC,KAAK,EAAE,IAAI,GAAG,OAAO;IAInC,UAAU,CAAC,KAAK,EAAE,IAAI,GAAG,IAAI;IAI7B,UAAU,CAAC,GAAG,EAAE,GAAG,GAAG,MAAM;CAQtC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"Sphere.js","sourceRoot":"","sources":["../src/Sphere.ts"],"names":[],"mappings":";;;AAAA,yCAAsC;AAKtC,MAAa,MAAM;IACf,2BAA2B;IAE3B,YACY,UAAgB,gBAAI,CAAC,MAAM,EAAE,EAC7B,UAAkB,CAAC;QADnB,YAAO,GAAP,OAAO,CAAsB;QAC7B,YAAO,GAAP,OAAO,CAAY;IAC3B,CAAC;IAEL,8BAA8B;IAE9B,+BAA+B;IAE/B,IAAW,MAAM;QACb,OAAO,IAAI,CAAC,OAAO,CAAC;IACxB,CAAC;IAED,IAAW,MAAM,CAAC,KAAW;QACzB,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;IACzB,CAAC;IAED,IAAW,MAAM;QACb,OAAO,IAAI,CAAC,OAAO,CAAC;IACxB,CAAC;IAED,IAAW,MAAM,CAAC,KAAa;QAC3B,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;IACzB,CAAC;IAED,kCAAkC;IAElC,6BAA6B;IAEtB,WAAW,CAAC,MAAY;QAC3B,IAAI,CAAC,OAAO,GAAG,gBAAI,CAAC,aAAa,CAAC,gBAAI,CAAC,MAAM,EAAE,EAAE,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QACvE,MAAM,QAAQ,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QACvF,MAAM,QAAQ,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QACvF,MAAM,QAAQ,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC;QACzF,MAAM,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC;QACzE,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,GAAG,cAAc,CAAC;QAC3C,OAAO,IAAI,CAAC;IAChB,CAAC;IAEM,KAAK;QACR,OAAO,IAAI,MAAM,CAAC,gBAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IAC9D,CAAC;IAEM,aAAa,CAAC,KAAW;QAC5B,OAAO,CAAC,gBAAI,CAAC,eAAe,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;IACrF,CAAC;IAEM,UAAU,CAAC,KAAW;QACzB,OAAO,KAAK,CAAC;IACjB,CAAC;IAEM,UAAU,CAAC,GAAQ;QACtB,gBAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;QACxC,gBAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QAC1C,IAAI,CAAC,MAAM,GAAG,gBAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;QAChD,OAAO,IAAI,CAAC;IAChB,CAAC;CAGJ;AA9DD,wBA8DC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"Spherical.d.ts","sourceRoot":"","sources":["../src/Spherical.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAEhC,qBAAa,SAAS;IAEd,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,IAAI;IACZ,OAAO,CAAC,MAAM;gBAFN,OAAO,GAAE,MAAU,EACnB,IAAI,GAAE,MAAU,EAChB,MAAM,GAAE,MAAU;IAI9B,IAAW,MAAM,IAAI,MAAM,CAE1B;IAED,IAAW,MAAM,CAAC,KAAK,EAAE,MAAM,EAE9B;IAGD,IAAW,GAAG,IAAI,MAAM,CAEvB;IAED,IAAW,GAAG,CAAC,KAAK,EAAE,MAAM,EAE3B;IAGD,IAAW,KAAK,IAAI,MAAM,CAEzB;IAED,IAAW,KAAK,CAAC,KAAK,EAAE,MAAM,EAE7B;IAEM,QAAQ;IAKR,QAAQ,CAAC,CAAC,EAAE,IAAI,GAAG,SAAS;IAa5B,MAAM,IAAI,IAAI;CAIxB"}