提交 ecd40f79 编写于 作者: M Mr.doob

Updated Matrix4.getMaxScaleOnAxis() with TypeArray.

上级 12e000a1
......@@ -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 ++ ) {
......
......@@ -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 ) ) );
},
//
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册