From 55ad1f48a168c988d576f214099ac1100fd037da Mon Sep 17 00:00:00 2001 From: Alexander Rose Date: Fri, 15 Jan 2016 10:02:12 -0800 Subject: [PATCH] faster BufferGeometry.computeBoundingBox() this directly calculates the min and max of the bounding box instead of using the Box3 methods --- src/core/BufferGeometry.js | 24 ++++++++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/src/core/BufferGeometry.js b/src/core/BufferGeometry.js index 6c40b133fe..08bfb2fc65 100644 --- a/src/core/BufferGeometry.js +++ b/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 ) { -- GitLab