Browse Source

faster BufferGeometry.computeBoundingBox()

this directly calculates the min and max of the bounding box instead of using the Box3 methods
Alexander Rose 9 years ago
parent
commit
55ad1f48a1
1 changed files with 22 additions and 2 deletions
  1. 22 2
      src/core/BufferGeometry.js

+ 22 - 2
src/core/BufferGeometry.js

@@ -563,13 +563,33 @@ THREE.BufferGeometry.prototype = {
 				var bb = this.boundingBox;
 				bb.makeEmpty();
 
+				var minX = +Infinity;
+				var minY = +Infinity;
+				var minZ = +Infinity;
+
+				var maxX = -Infinity;
+				var maxY = -Infinity;
+				var maxZ = -Infinity;
+
 				for ( var i = 0, il = positions.length; i < il; i += 3 ) {
 
-					vector.fromArray( positions, i );
-					bb.expandByPoint( vector );
+					var x = positions[ i     ];
+					var y = positions[ i + 1 ];
+					var z = positions[ i + 2 ];
+
+					minX = Math.min( minX, x );
+					minY = Math.min( minY, y );
+					minZ = Math.min( minZ, z );
+
+					maxX = Math.max( maxX, x );
+					maxY = Math.max( maxY, y );
+					maxZ = Math.max( maxZ, z );
 
 				}
 
+				this.boundingBox.min.set( minX, minY, minZ );
+				this.boundingBox.max.set( maxX, maxY, maxZ );
+
 			}
 
 			if ( positions === undefined || positions.length === 0 ) {