From ecd40f7998d1126cc3ad7f582b05c228514f82aa Mon Sep 17 00:00:00 2001 From: "Mr.doob" Date: Sat, 14 Apr 2012 03:47:04 +0200 Subject: [PATCH] Updated Matrix4.getMaxScaleOnAxis() with TypeArray. --- src/core/Frustum.js | 19 +++++++++---------- src/core/Matrix4.js | 21 ++++++++++++--------- 2 files changed, 21 insertions(+), 19 deletions(-) diff --git a/src/core/Frustum.js b/src/core/Frustum.js index 0ad71e352d..263c089aa4 100644 --- a/src/core/Frustum.js +++ b/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 ++ ) { diff --git a/src/core/Matrix4.js b/src/core/Matrix4.js index e6854bad6d..1563413090 100644 --- a/src/core/Matrix4.js +++ b/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 ) ) ); + + }, // -- GitLab