Bläddra i källkod

Updated Matrix4.getMaxScaleOnAxis() with TypeArray.

Mr.doob 13 år sedan
förälder
incheckning
ecd40f7998
2 ändrade filer med 21 tillägg och 19 borttagningar
  1. 9 10
      src/core/Frustum.js
  2. 12 9
      src/core/Matrix4.js

+ 9 - 10
src/core/Frustum.js

@@ -20,13 +20,13 @@ THREE.Frustum = function ( ) {
 
 THREE.Frustum.prototype.setFromMatrix = function ( m ) {
 
-	var i, plane,
-	planes = this.planes;
-    var me = m.elements;
-    var me0 = me[0], me1 = me[1], me2 = me[2], me3 = me[3]; 
-    var me4 = me[4], me5 = me[5], me6 = me[6], me7 = me[7]; 
-    var me8 = me[8], me9 = me[9], me10 = me[10], me11 = me[11]; 
-    var me12 = me[12], me13 = me[13], me14 = me[14], me15 = me[15]; 
+	var i, plane, planes = this.planes;
+
+	var me = m.elements;
+	var me0 = me[0], me1 = me[1], me2 = me[2], me3 = me[3];
+	var me4 = me[4], me5 = me[5], me6 = me[6], me7 = me[7];
+	var me8 = me[8], me9 = me[9], me10 = me[10], me11 = me[11];
+	var me12 = me[12], me13 = me[13], me14 = me[14], me15 = me[15];
 
 	planes[ 0 ].set( me3 - me0, me7 - me4, me11 - me8, me15 - me12 );
 	planes[ 1 ].set( me3 + me0, me7 + me4, me11 + me8, me15 + me12 );
@@ -49,9 +49,8 @@ THREE.Frustum.prototype.contains = function ( object ) {
 	var distance,
 	planes = this.planes,
 	matrix = object.matrixWorld,
-    me = matrix.elements,
-	scale = THREE.Frustum.__v1.set( matrix.getColumnX().length(), matrix.getColumnY().length(), matrix.getColumnZ().length() ),
-	radius = - object.geometry.boundingSphere.radius * Math.max( scale.x, Math.max( scale.y, scale.z ) );
+	me = matrix.elements,
+	radius = - object.geometry.boundingSphere.radius * matrix.getMaxScaleOnAxis();
 
 	for ( var i = 0; i < 6; i ++ ) {
 

+ 12 - 9
src/core/Matrix4.js

@@ -826,7 +826,8 @@ THREE.Matrix4.prototype = {
 	},
 
 	scale: function ( v ) {
-        var te = this.elements;
+
+		var te = this.elements;
 		var x = v.x, y = v.y, z = v.z;
 
 		te[0] *= x; te[4] *= y; te[8] *= z;
@@ -837,16 +838,18 @@ THREE.Matrix4.prototype = {
 		return this;
 
 	},
-    
-    getMaxScaleOnAxis : function () {
 
-        var scaleXSq =  this.n11 * this.n11 + this.n21 * this.n21 + this.n31 * this.n31;
-        var scaleYSq =  this.n12 * this.n12 + this.n22 * this.n22 + this.n32 * this.n32;
-        var scaleZSq =  this.n13 * this.n13 + this.n23 * this.n23 + this.n33 * this.n33;
-        
-        return Math.sqrt(Math.max( scaleXSq , Math.max( scaleYSq , scaleZSq )));
+	getMaxScaleOnAxis: function () {
+
+		var te = this.elements;
 
-    },
+		var scaleXSq =  te[0] * te[0] + te[1] * te[1] + te[2] * te[2];
+		var scaleYSq =  te[4] * te[4] + te[5] * te[5] + te[6] * te[6];
+		var scaleZSq =  te[8] * te[8] + te[9] * te[9] + te[10] * te[10];
+
+		return Math.sqrt( Math.max( scaleXSq, Math.max( scaleYSq, scaleZSq ) ) );
+
+	},
 
 	//