Ver código fonte

adopt setFromMatrixColumn instead of manual lower-level functions.

Ben Houston 9 anos atrás
pai
commit
3817e67188
2 arquivos alterados com 11 adições e 16 exclusões
  1. 7 10
      src/math/Matrix4.js
  2. 4 6
      src/math/Vector3.js

+ 7 - 10
src/math/Matrix4.js

@@ -91,11 +91,9 @@ THREE.Matrix4.prototype = {
 
 	extractBasis: function ( xAxis, yAxis, zAxis ) {
 
-		var te = this.elements;
-
-		xAxis.set( te[ 0 ], te[ 1 ], te[ 2 ] );
-		yAxis.set( te[ 4 ], te[ 5 ], te[ 6 ] );
-		zAxis.set( te[ 8 ], te[ 9 ], te[ 10 ] );
+		xAxis.setFromMatrixColumn( 0, this );
+		yAxis.setFromMatrixColumn( 1, this );
+		zAxis.setFromMatrixColumn( 2, this );
 
 		return this;
 
@@ -125,9 +123,9 @@ THREE.Matrix4.prototype = {
 			var te = this.elements;
 			var me = m.elements;
 
-			var scaleX = 1 / v1.set( me[ 0 ], me[ 1 ], me[ 2 ] ).length();
-			var scaleY = 1 / v1.set( me[ 4 ], me[ 5 ], me[ 6 ] ).length();
-			var scaleZ = 1 / v1.set( me[ 8 ], me[ 9 ], me[ 10 ] ).length();
+			var scaleX = 1 / v1.setFromMatrixColumn( 0, m ).length();
+			var scaleY = 1 / v1.setFromMatrixColumn( 1, m ).length();
+			var scaleZ = 1 / v1.setFromMatrixColumn( 2, m ).length();
 
 			te[ 0 ] = me[ 0 ] * scaleX;
 			te[ 1 ] = me[ 1 ] * scaleX;
@@ -591,8 +589,7 @@ THREE.Matrix4.prototype = {
 			if ( v1 === undefined ) v1 = new THREE.Vector3();
 			console.warn( 'THREE.Matrix4: .getPosition() has been removed. Use Vector3.setFromMatrixPosition( matrix ) instead.' );
 
-			var te = this.elements;
-			return v1.set( te[ 12 ], te[ 13 ], te[ 14 ] );
+			return v1.setFromMatrixColumn( 3, this );
 
 		};
 

+ 4 - 6
src/math/Vector3.js

@@ -706,9 +706,7 @@ THREE.Vector3.prototype = {
 
 	setFromMatrixPosition: function ( m ) {
 
-		this.x = m.elements[ 12 ];
-		this.y = m.elements[ 13 ];
-		this.z = m.elements[ 14 ];
+		this.setFromMatrixColumn( 3, m );
 
 		return this;
 
@@ -716,9 +714,9 @@ THREE.Vector3.prototype = {
 
 	setFromMatrixScale: function ( m ) {
 
-		var sx = this.set( m.elements[ 0 ], m.elements[ 1 ], m.elements[ 2 ] ).length();
-		var sy = this.set( m.elements[ 4 ], m.elements[ 5 ], m.elements[ 6 ] ).length();
-		var sz = this.set( m.elements[ 8 ], m.elements[ 9 ], m.elements[ 10 ] ).length();
+		var sx = this.setFromMatrixColumn( 0, m ).length();
+		var sy = this.setFromMatrixColumn( 1, m ).length();
+		var sz = this.setFromMatrixColumn( 2, m ).length();
 
 		this.x = sx;
 		this.y = sy;