|
@@ -102,60 +102,6 @@ THREE.Matrix4.prototype = {
|
|
|
|
|
|
},
|
|
|
|
|
|
- multiplyVector3: function ( v ) {
|
|
|
-
|
|
|
- var vx = v.x, vy = v.y, vz = v.z,
|
|
|
- d = 1 / ( this.n41 * vx + this.n42 * vy + this.n43 * vz + this.n44 );
|
|
|
-
|
|
|
- v.x = ( this.n11 * vx + this.n12 * vy + this.n13 * vz + this.n14 ) * d;
|
|
|
- v.y = ( this.n21 * vx + this.n22 * vy + this.n23 * vz + this.n24 ) * d;
|
|
|
- v.z = ( this.n31 * vx + this.n32 * vy + this.n33 * vz + this.n34 ) * d;
|
|
|
-
|
|
|
- return v;
|
|
|
-
|
|
|
- },
|
|
|
-
|
|
|
- multiplyVector4: function ( v ) {
|
|
|
-
|
|
|
- var vx = v.x, vy = v.y, vz = v.z, vw = v.w;
|
|
|
-
|
|
|
- v.x = this.n11 * vx + this.n12 * vy + this.n13 * vz + this.n14 * vw;
|
|
|
- v.y = this.n21 * vx + this.n22 * vy + this.n23 * vz + this.n24 * vw;
|
|
|
- v.z = this.n31 * vx + this.n32 * vy + this.n33 * vz + this.n34 * vw;
|
|
|
- v.w = this.n41 * vx + this.n42 * vy + this.n43 * vz + this.n44 * vw;
|
|
|
-
|
|
|
- return v;
|
|
|
-
|
|
|
- },
|
|
|
-
|
|
|
- rotateAxis: function ( v ) {
|
|
|
-
|
|
|
- var vx = v.x, vy = v.y, vz = v.z;
|
|
|
-
|
|
|
- v.x = vx * this.n11 + vy * this.n12 + vz * this.n13;
|
|
|
- v.y = vx * this.n21 + vy * this.n22 + vz * this.n23;
|
|
|
- v.z = vx * this.n31 + vy * this.n32 + vz * this.n33;
|
|
|
-
|
|
|
- v.normalize();
|
|
|
-
|
|
|
- return v;
|
|
|
-
|
|
|
- },
|
|
|
-
|
|
|
- crossVector: function ( a ) {
|
|
|
-
|
|
|
- var v = new THREE.Vector4();
|
|
|
-
|
|
|
- v.x = this.n11 * a.x + this.n12 * a.y + this.n13 * a.z + this.n14 * a.w;
|
|
|
- v.y = this.n21 * a.x + this.n22 * a.y + this.n23 * a.z + this.n24 * a.w;
|
|
|
- v.z = this.n31 * a.x + this.n32 * a.y + this.n33 * a.z + this.n34 * a.w;
|
|
|
-
|
|
|
- v.w = ( a.w ) ? this.n41 * a.x + this.n42 * a.y + this.n43 * a.z + this.n44 * a.w : 1;
|
|
|
-
|
|
|
- return v;
|
|
|
-
|
|
|
- },
|
|
|
-
|
|
|
multiply: function ( a, b ) {
|
|
|
|
|
|
var a11 = a.n11, a12 = a.n12, a13 = a.n13, a14 = a.n14,
|
|
@@ -192,6 +138,12 @@ THREE.Matrix4.prototype = {
|
|
|
|
|
|
},
|
|
|
|
|
|
+ multiplySelf: function ( m ) {
|
|
|
+
|
|
|
+ return this.multiply( this, m );
|
|
|
+
|
|
|
+ },
|
|
|
+
|
|
|
multiplyToArray: function ( a, b, r ) {
|
|
|
|
|
|
this.multiply( a, b );
|
|
@@ -205,14 +157,6 @@ THREE.Matrix4.prototype = {
|
|
|
|
|
|
},
|
|
|
|
|
|
- multiplySelf: function ( m ) {
|
|
|
-
|
|
|
- this.multiply( this, m );
|
|
|
-
|
|
|
- return this;
|
|
|
-
|
|
|
- },
|
|
|
-
|
|
|
multiplyScalar: function ( s ) {
|
|
|
|
|
|
this.n11 *= s; this.n12 *= s; this.n13 *= s; this.n14 *= s;
|
|
@@ -224,6 +168,60 @@ THREE.Matrix4.prototype = {
|
|
|
|
|
|
},
|
|
|
|
|
|
+ multiplyVector3: function ( v ) {
|
|
|
+
|
|
|
+ var vx = v.x, vy = v.y, vz = v.z,
|
|
|
+ d = 1 / ( this.n41 * vx + this.n42 * vy + this.n43 * vz + this.n44 );
|
|
|
+
|
|
|
+ v.x = ( this.n11 * vx + this.n12 * vy + this.n13 * vz + this.n14 ) * d;
|
|
|
+ v.y = ( this.n21 * vx + this.n22 * vy + this.n23 * vz + this.n24 ) * d;
|
|
|
+ v.z = ( this.n31 * vx + this.n32 * vy + this.n33 * vz + this.n34 ) * d;
|
|
|
+
|
|
|
+ return v;
|
|
|
+
|
|
|
+ },
|
|
|
+
|
|
|
+ multiplyVector4: function ( v ) {
|
|
|
+
|
|
|
+ var vx = v.x, vy = v.y, vz = v.z, vw = v.w;
|
|
|
+
|
|
|
+ v.x = this.n11 * vx + this.n12 * vy + this.n13 * vz + this.n14 * vw;
|
|
|
+ v.y = this.n21 * vx + this.n22 * vy + this.n23 * vz + this.n24 * vw;
|
|
|
+ v.z = this.n31 * vx + this.n32 * vy + this.n33 * vz + this.n34 * vw;
|
|
|
+ v.w = this.n41 * vx + this.n42 * vy + this.n43 * vz + this.n44 * vw;
|
|
|
+
|
|
|
+ return v;
|
|
|
+
|
|
|
+ },
|
|
|
+
|
|
|
+ rotateAxis: function ( v ) {
|
|
|
+
|
|
|
+ var vx = v.x, vy = v.y, vz = v.z;
|
|
|
+
|
|
|
+ v.x = vx * this.n11 + vy * this.n12 + vz * this.n13;
|
|
|
+ v.y = vx * this.n21 + vy * this.n22 + vz * this.n23;
|
|
|
+ v.z = vx * this.n31 + vy * this.n32 + vz * this.n33;
|
|
|
+
|
|
|
+ v.normalize();
|
|
|
+
|
|
|
+ return v;
|
|
|
+
|
|
|
+ },
|
|
|
+
|
|
|
+ crossVector: function ( a ) {
|
|
|
+
|
|
|
+ var v = new THREE.Vector4();
|
|
|
+
|
|
|
+ v.x = this.n11 * a.x + this.n12 * a.y + this.n13 * a.z + this.n14 * a.w;
|
|
|
+ v.y = this.n21 * a.x + this.n22 * a.y + this.n23 * a.z + this.n24 * a.w;
|
|
|
+ v.z = this.n31 * a.x + this.n32 * a.y + this.n33 * a.z + this.n34 * a.w;
|
|
|
+
|
|
|
+ v.w = ( a.w ) ? this.n41 * a.x + this.n42 * a.y + this.n43 * a.z + this.n44 * a.w : 1;
|
|
|
+
|
|
|
+ return v;
|
|
|
+
|
|
|
+ },
|
|
|
+
|
|
|
determinant: function () {
|
|
|
|
|
|
var n11 = this.n11, n12 = this.n12, n13 = this.n13, n14 = this.n14,
|
|
@@ -742,23 +740,31 @@ THREE.Matrix4.prototype = {
|
|
|
this.n24 = m.n24;
|
|
|
this.n34 = m.n34;
|
|
|
|
|
|
+ return this;
|
|
|
+
|
|
|
},
|
|
|
|
|
|
- extractRotation: function ( m, s ) {
|
|
|
+ extractRotation: function ( m ) {
|
|
|
|
|
|
- var invScaleX = 1 / s.x, invScaleY = 1 / s.y, invScaleZ = 1 / s.z;
|
|
|
+ var vector = THREE.Matrix4.__v1;
|
|
|
|
|
|
- this.n11 = m.n11 * invScaleX;
|
|
|
- this.n21 = m.n21 * invScaleX;
|
|
|
- this.n31 = m.n31 * invScaleX;
|
|
|
+ var scaleX = vector.set( m.n11, m.n21, m.n31 ).length();
|
|
|
+ var scaleY = vector.set( m.n12, m.n22, m.n32 ).length();
|
|
|
+ var scaleZ = vector.set( m.n13, m.n23, m.n33 ).length();
|
|
|
|
|
|
- this.n12 = m.n12 * invScaleY;
|
|
|
- this.n22 = m.n22 * invScaleY;
|
|
|
- this.n32 = m.n32 * invScaleY;
|
|
|
+ this.n11 = m.n11 / scaleX;
|
|
|
+ this.n21 = m.n21 / scaleX;
|
|
|
+ this.n31 = m.n31 / scaleX;
|
|
|
|
|
|
- this.n13 = m.n13 * invScaleZ;
|
|
|
- this.n23 = m.n23 * invScaleZ;
|
|
|
- this.n33 = m.n33 * invScaleZ;
|
|
|
+ this.n12 = m.n12 / scaleY;
|
|
|
+ this.n22 = m.n22 / scaleY;
|
|
|
+ this.n32 = m.n32 / scaleY;
|
|
|
+
|
|
|
+ this.n13 = m.n13 / scaleZ;
|
|
|
+ this.n23 = m.n23 / scaleZ;
|
|
|
+ this.n33 = m.n33 / scaleZ;
|
|
|
+
|
|
|
+ return this;
|
|
|
|
|
|
}
|
|
|
|