Browse Source

slight speedup in Matrix4.determinant by cutting down object lookups

astrodud 14 years ago
parent
commit
f3fd1bcfe6
1 changed files with 34 additions and 29 deletions
  1. 34 29
      src/core/Matrix4.js

+ 34 - 29
src/core/Matrix4.js

@@ -194,38 +194,43 @@ THREE.Matrix4.prototype = {
 
 
 	determinant: function () {
 	determinant: function () {
 
 
+		var n11 = this.n11, n12 = this.n12, n13 = this.n13, n14 = this.n14,
+		n21 = this.n21, n22 = this.n22, n23 = this.n23, n24 = this.n24,
+		n31 = this.n31, n32 = this.n32, n33 = this.n33, n34 = this.n34,
+		n41 = this.n41, n42 = this.n42, n43 = this.n43, n44 = this.n44;
+
 		//TODO: make this more efficient
 		//TODO: make this more efficient
 		//( based on http://www.euclideanspace.com/maths/algebra/matrix/functions/inverse/fourD/index.htm )
 		//( based on http://www.euclideanspace.com/maths/algebra/matrix/functions/inverse/fourD/index.htm )
 		return (
 		return (
-			this.n14 * this.n23 * this.n32 * this.n41-
-			this.n13 * this.n24 * this.n32 * this.n41-
-			this.n14 * this.n22 * this.n33 * this.n41+
-			this.n12 * this.n24 * this.n33 * this.n41+
-
-			this.n13 * this.n22 * this.n34 * this.n41-
-			this.n12 * this.n23 * this.n34 * this.n41-
-			this.n14 * this.n23 * this.n31 * this.n42+
-			this.n13 * this.n24 * this.n31 * this.n42+
-
-			this.n14 * this.n21 * this.n33 * this.n42-
-			this.n11 * this.n24 * this.n33 * this.n42-
-			this.n13 * this.n21 * this.n34 * this.n42+
-			this.n11 * this.n23 * this.n34 * this.n42+
-
-			this.n14 * this.n22 * this.n31 * this.n43-
-			this.n12 * this.n24 * this.n31 * this.n43-
-			this.n14 * this.n21 * this.n32 * this.n43+
-			this.n11 * this.n24 * this.n32 * this.n43+
-
-			this.n12 * this.n21 * this.n34 * this.n43-
-			this.n11 * this.n22 * this.n34 * this.n43-
-			this.n13 * this.n22 * this.n31 * this.n44+
-			this.n12 * this.n23 * this.n31 * this.n44+
-
-			this.n13 * this.n21 * this.n32 * this.n44-
-			this.n11 * this.n23 * this.n32 * this.n44-
-			this.n12 * this.n21 * this.n33 * this.n44+
-			this.n11 * this.n22 * this.n33 * this.n44 );
+			n14 * n23 * n32 * n41-
+			n13 * n24 * n32 * n41-
+			n14 * n22 * n33 * n41+
+			n12 * n24 * n33 * n41+
+
+			n13 * n22 * n34 * n41-
+			n12 * n23 * n34 * n41-
+			n14 * n23 * n31 * n42+
+			n13 * n24 * n31 * n42+
+
+			n14 * n21 * n33 * n42-
+			n11 * n24 * n33 * n42-
+			n13 * n21 * n34 * n42+
+			n11 * n23 * n34 * n42+
+
+			n14 * n22 * n31 * n43-
+			n12 * n24 * n31 * n43-
+			n14 * n21 * n32 * n43+
+			n11 * n24 * n32 * n43+
+
+			n12 * n21 * n34 * n43-
+			n11 * n22 * n34 * n43-
+			n13 * n22 * n31 * n44+
+			n12 * n23 * n31 * n44+
+
+			n13 * n21 * n32 * n44-
+			n11 * n23 * n32 * n44-
+			n12 * n21 * n33 * n44+
+			n11 * n22 * n33 * n44 );
 
 
 	},
 	},