Browse Source

Merging with @bhouston branch.

Mr.doob 12 years ago
parent
commit
7d63a8111e
1 changed files with 51 additions and 92 deletions
  1. 51 92
      src/core/Box3.js

+ 51 - 92
src/core/Box3.js

@@ -4,18 +4,14 @@
 
 THREE.Box3 = function ( min, max ) {
 
-	if( min == undefined && max === undefined ) {
-
+	if( ! min && ! max ) {			
 		this.min = new THREE.Vector3();
 		this.max = new THREE.Vector3();
-		this.min.x = this.min.y = this.min.z = Infinity;
-		this.max.x = this.max.y = this.max.z = -Infinity;
-		console.log( this );
-
-	} else {
-
+		this.makeEmpty();
+	}
+	else {
 		this.min = min || new THREE.Vector3();
-		this.max = max || new THREE.Vector3().copy( this.min ); // This is done on purpose so you can make a box using a single point and then expand it.
+		this.max = max || new THREE.Vector3().copy( this.min );		// This is done on purpose so you can make a box using a single point and then expand it.
 	}
 };
 
@@ -29,58 +25,44 @@ THREE.Box3.prototype = {
 		this.max = max;
 
 		return this;
-
 	},
 
 	setFromPoints: function ( points ) {
 
-		if ( points.length > 0 ) {
-
-			var p = points[ 0 ];
+		if( points.length > 0 ) {
 
+			var p = points[0];
 			this.min.copy( p );
 			this.max.copy( p );
 
-			for ( var i = 1, il = points.length; i < il; i ++ ) {
+			for( var i = 1, numPoints = points.length; i < numPoints; i ++ ) {
 
-				p = points[ i ];
+				p = points[ v ];
 
 				if ( p.x < this.min.x ) {
-
 					this.min.x = p.x;
-
-				} else if ( p.x > this.max.x ) {
-
+				}
+				else if ( p.x > this.max.x ) {
 					this.max.x = p.x;
-
 				}
 
 				if ( p.y < this.min.y ) {
-
 					this.min.y = p.y;
-
-				} else if ( p.y > this.max.y ) {
-
+				}
+				else if ( p.y > this.max.y ) {
 					this.max.y = p.y;
-
 				}
 
 				if ( p.z < this.min.z ) {
-
 					this.min.z = p.z;
-
-				} else if ( p.z > this.max.z ) {
-
+				}
+				else if ( p.z > this.max.z ) {
 					this.max.z = p.z;
-
 				}
-
 			}
-
-		} else {
-
+		}
+		else {
 			this.makeEmpty();
-
 		}
 
 		return this;
@@ -89,12 +71,10 @@ THREE.Box3.prototype = {
 	setFromCenterAndSize: function ( center, size ) {
 
 		var halfSize = THREE.Box3.__v1.copy( size ).multiplyScalar( 0.5 );
-
 		this.min.copy( center ).subSelf( halfSize );
 		this.max.copy( center ).addSelf( halfSize );
 
-		return this;
-
+		return box;	
 	},
 
 	copy: function ( box ) {
@@ -103,7 +83,6 @@ THREE.Box3.prototype = {
 		this.max.copy( box.max );
 
 		return this;
-
 	},
 
 	makeEmpty: function () {
@@ -112,41 +91,41 @@ THREE.Box3.prototype = {
 		this.max.x = this.max.y = this.max.z = -Infinity;
 
 		return this;
-
 	},
 
 	empty: function () {
 
 		// this is a more robust check for empty than ( volume <= 0 ) because volume can get positive with two negative axes
-		return ( this.max.x < this.min.x ) || ( this.max.y < this.min.y ) || ( this.max.z < this.min.z );
-
+		return 
+			( this.max.x < this.min.x ) ||
+			( this.max.y < this.min.y ) ||
+			( this.max.z < this.min.z );
 	},
 
 	volume: function () {
 
-		return ( this.max.x - this.min.x ) * ( this.max.y - this.min.y ) * ( this.max.z - this.min.z );
-
+		return 
+			( this.max.x - this.min.x ) *
+			( this.max.y - this.min.y ) *
+			( this.max.z - this.min.z );
 	},
 
 	center: function () {
 
 		return new THREE.Vector3().add( this.min, this.max ).multiplyScalar( 0.5 );
-
 	},
 
 	size: function () {
 
 		return new THREE.Vector3().sub( this.max, this.min );
-
 	},
 
 	expandByPoint: function ( point ) {
 
-		this.min.minSelf( point );
+		this.min.minSelf( point );		
 		this.max.maxSelf( point );
 
 		return this;
-
 	},
 
 	expandByVector: function ( vector ) {
@@ -155,93 +134,76 @@ THREE.Box3.prototype = {
 		this.max.addSelf( vector );
 
 		return this;
-
 	},
 
 	expandByScalar: function ( scalar ) {
 
 		this.min.addScalar( -scalar );
 		this.max.addScalar( scalar );
-
+		
 		return this;
-
 	},
 
 	containsPoint: function ( point ) {
-
-		if ( ( this.min.x <= point.x ) && ( point.x <= this.max.x ) &&
+		if( 
+			( this.min.x <= point.x ) && ( point.x <= this.max.x ) &&
 			( this.min.y <= point.y ) && ( point.y <= this.max.y ) &&
-			( this.min.z <= point.z ) && ( point.z <= this.max.z ) ) {
-
+			( this.min.z <= point.z ) && ( point.z <= this.max.z )
+			) {
 			return true;
-
 		}
-
 		return false;
-
 	},
 
 	containsBox: function ( box ) {
-
-		if ( ( this.min.x <= box.min.x ) && ( box.max.x <= this.max.x ) &&
+		if( 
+			( this.min.x <= box.min.x ) && ( box.max.x <= this.max.x ) &&
 			( this.min.y <= box.min.y ) && ( box.max.y <= this.max.y ) &&
-			( this.min.z <= box.min.z ) && ( box.max.z <= this.max.z ) ) {
-
+			( this.min.z <= box.min.z ) && ( box.max.z <= this.max.z )
+			) {
 			return true;
-
 		}
-
 		return false;
-
 	},
 
 	getParameter: function ( point ) {
-
 		// This can potentially have a divide by zero if the box
 		// has a size dimension of 0.
 		return new THREE.Vector3(
 			( point.x - this.min.x ) / ( this.max.x - this.min.x ),
 			( point.y - this.min.y ) / ( this.max.y - this.min.y ),
 			( point.z - this.min.z ) / ( this.max.z - this.min.z )
-		);
-
-	},
-
-	isIntersection: function ( box ) {
-
-		// using 6 splitting planes to rule out intersections.
-
-		if ( ( this.max.x < box.min.x ) || ( box.min.x > this.max.x ) ||
-			( this.max.y < box.min.y ) || ( box.min.y > this.max.y ) ||
-			( this.max.z < box.min.z ) || ( box.min.z > this.max.z ) ) {
-
-			return false;
-
-		}
-
-		return true;
-
+			);
 	},
 
 	clampPoint: function ( point ) {
 
 		return new THREE.Vector3().copy( point ).clampSelf( this.min, this.max );
-
 	},
 
 	distanceToPoint: function ( point ) {
 
 		return this.clampPoint( point ).subSelf( point ).length();
+	},
 
+	isIntersection: function ( box ) {
+		// using 6 splitting planes to rule out intersections.
+		if( 
+			( this.max.x < box.min.x ) || ( box.min.x > this.max.x ) ||
+			( this.max.y < box.min.y ) || ( box.min.y > this.max.y ) ||
+			( this.max.z < box.min.z ) || ( box.min.z > this.max.z )
+			) {
+			return false;
+		}
+		return true;
 	},
 
 	intersect: function ( box ) {
 
 		this.min.maxSelf( box.min );
 		this.max.minSelf( box.max );
-
+		
 		return this;
-
 	},
 
 	union: function ( box ) {
@@ -250,7 +212,6 @@ THREE.Box3.prototype = {
 		this.max.maxSelf( box.max );
 
 		return this;
-
 	},
 
 	translate: function ( offset ) {
@@ -259,7 +220,6 @@ THREE.Box3.prototype = {
 		this.max.addSelf( offset );
 
 		return this;
-
 	},
 
 	scale: function ( factor ) {
@@ -268,7 +228,6 @@ THREE.Box3.prototype = {
 		this.expandByVector( sizeDeltaHalf );
 
 		return this;
-
 	},
 
 	equals: function ( box ) {
@@ -282,7 +241,7 @@ THREE.Box3.prototype = {
 		return new THREE.Box3().copy( this );
 
 	}
-
+	
 };
 
-THREE.Box3.__v1 = new THREE.Vector3();
+THREE.Box3.__v1 = new THREE.Vector3();