|
@@ -1,83 +0,0 @@
|
|
|
-/**
|
|
|
- * @author vHawk / https://github.com/vHawk/
|
|
|
- */
|
|
|
-
|
|
|
-export default class FrustumBoundingBox {
|
|
|
-
|
|
|
- constructor() {
|
|
|
-
|
|
|
- this.min = {
|
|
|
- x: 0,
|
|
|
- y: 0,
|
|
|
- z: 0
|
|
|
- };
|
|
|
- this.max = {
|
|
|
- x: 0,
|
|
|
- y: 0,
|
|
|
- z: 0
|
|
|
- };
|
|
|
-
|
|
|
- }
|
|
|
-
|
|
|
- fromFrustum( frustum ) {
|
|
|
-
|
|
|
- const vertices = [];
|
|
|
-
|
|
|
- for ( let i = 0; i < 4; i ++ ) {
|
|
|
-
|
|
|
- vertices.push( frustum.vertices.near[ i ] );
|
|
|
- vertices.push( frustum.vertices.far[ i ] );
|
|
|
-
|
|
|
- }
|
|
|
-
|
|
|
- this.min = {
|
|
|
- x: vertices[ 0 ].x,
|
|
|
- y: vertices[ 0 ].y,
|
|
|
- z: vertices[ 0 ].z
|
|
|
- };
|
|
|
- this.max = {
|
|
|
- x: vertices[ 0 ].x,
|
|
|
- y: vertices[ 0 ].y,
|
|
|
- z: vertices[ 0 ].z
|
|
|
- };
|
|
|
-
|
|
|
- for ( let i = 1; i < 8; i ++ ) {
|
|
|
-
|
|
|
- this.min.x = Math.min( this.min.x, vertices[ i ].x );
|
|
|
- this.min.y = Math.min( this.min.y, vertices[ i ].y );
|
|
|
- this.min.z = Math.min( this.min.z, vertices[ i ].z );
|
|
|
- this.max.x = Math.max( this.max.x, vertices[ i ].x );
|
|
|
- this.max.y = Math.max( this.max.y, vertices[ i ].y );
|
|
|
- this.max.z = Math.max( this.max.z, vertices[ i ].z );
|
|
|
-
|
|
|
- }
|
|
|
-
|
|
|
- return this;
|
|
|
-
|
|
|
- }
|
|
|
-
|
|
|
- getSize() {
|
|
|
-
|
|
|
- this.size = {
|
|
|
- x: this.max.x - this.min.x,
|
|
|
- y: this.max.y - this.min.y,
|
|
|
- z: this.max.z - this.min.z
|
|
|
- };
|
|
|
-
|
|
|
- return this.size;
|
|
|
-
|
|
|
- }
|
|
|
-
|
|
|
- getCenter( margin ) {
|
|
|
-
|
|
|
- this.center = {
|
|
|
- x: ( this.max.x + this.min.x ) / 2,
|
|
|
- y: ( this.max.y + this.min.y ) / 2,
|
|
|
- z: this.max.z + margin
|
|
|
- };
|
|
|
-
|
|
|
- return this.center;
|
|
|
-
|
|
|
- }
|
|
|
-
|
|
|
-}
|