Browse Source

Optimize Frustum.intersectsBox

zhaoy 7 years ago
parent
commit
1defbe9347
1 changed files with 8 additions and 16 deletions
  1. 8 16
      src/math/Frustum.js

+ 8 - 16
src/math/Frustum.js

@@ -140,8 +140,7 @@ Object.assign( Frustum.prototype, {
 
 
 	intersectsBox: function () {
 	intersectsBox: function () {
 
 
-		var p1 = new Vector3(),
-			p2 = new Vector3();
+		var p = new Vector3();
 
 
 		return function intersectsBox( box ) {
 		return function intersectsBox( box ) {
 
 
@@ -150,20 +149,13 @@ Object.assign( Frustum.prototype, {
 			for ( var i = 0; i < 6; i ++ ) {
 			for ( var i = 0; i < 6; i ++ ) {
 
 
 				var plane = planes[ i ];
 				var plane = planes[ i ];
-
-				p1.x = plane.normal.x > 0 ? box.min.x : box.max.x;
-				p2.x = plane.normal.x > 0 ? box.max.x : box.min.x;
-				p1.y = plane.normal.y > 0 ? box.min.y : box.max.y;
-				p2.y = plane.normal.y > 0 ? box.max.y : box.min.y;
-				p1.z = plane.normal.z > 0 ? box.min.z : box.max.z;
-				p2.z = plane.normal.z > 0 ? box.max.z : box.min.z;
-
-				var d1 = plane.distanceToPoint( p1 );
-				var d2 = plane.distanceToPoint( p2 );
-
-				// if both outside plane, no intersection
-
-				if ( d1 < 0 && d2 < 0 ) {
+				
+				//corner at max distance
+				p.x = plane.normal.x > 0 ? box.max.x : box.min.x;
+				p.y = plane.normal.y > 0 ? box.max.y : box.min.y;
+				p.z = plane.normal.z > 0 ? box.max.z : box.min.z;
+				
+				if(plane.distanceToPoint( p ) < 0){
 
 
 					return false;
 					return false;