|
@@ -50,30 +50,26 @@ THREE.Matrix4.prototype = {
|
|
|
|
|
|
},
|
|
|
|
|
|
- transform: function ( v ) {
|
|
|
+ transformVector3: function ( v ) {
|
|
|
|
|
|
- var vx = v.x, vy = v.y, vz = v.z, vw = v.w || 1, vwi;
|
|
|
+ var vx = v.x, vy = v.y, vz = v.z;
|
|
|
|
|
|
- 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.x = this.n11 * vx + this.n12 * vy + this.n13 * vz + this.n14;
|
|
|
+ v.y = this.n21 * vx + this.n22 * vy + this.n23 * vz + this.n24;
|
|
|
+ v.z = this.n31 * vx + this.n32 * vy + this.n33 * vz + this.n34;
|
|
|
|
|
|
- vw = this.n41 * vx + this.n42 * vy + this.n43 * vz + this.n44 * vw;
|
|
|
+ v.multiplyScalar( 1 / ( this.n41 * vx + this.n42 * vy + this.n43 * vz + this.n44 ) );
|
|
|
|
|
|
- if ( v.w ) {
|
|
|
-
|
|
|
- v.w = vw;
|
|
|
+ },
|
|
|
|
|
|
- } else {
|
|
|
+ transformVector4: function ( v ) {
|
|
|
|
|
|
- vwi = 1 / vw;
|
|
|
- v.x *= vwi;
|
|
|
- v.y *= vwi;
|
|
|
- v.z *= vwi;
|
|
|
+ var vx = v.x, vy = v.y, vz = v.z, vw = v.w;
|
|
|
|
|
|
- }
|
|
|
-
|
|
|
- return v;
|
|
|
+ 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;
|
|
|
|
|
|
},
|
|
|
|
|
@@ -93,25 +89,35 @@ THREE.Matrix4.prototype = {
|
|
|
|
|
|
multiply: function ( a, b ) {
|
|
|
|
|
|
- this.n11 = a.n11 * b.n11 + a.n12 * b.n21 + a.n13 * b.n31 + a.n14 * b.n41;
|
|
|
- this.n12 = a.n11 * b.n12 + a.n12 * b.n22 + a.n13 * b.n32 + a.n14 * b.n42;
|
|
|
- this.n13 = a.n11 * b.n13 + a.n12 * b.n23 + a.n13 * b.n33 + a.n14 * b.n43;
|
|
|
- this.n14 = a.n11 * b.n14 + a.n12 * b.n24 + a.n13 * b.n34 + a.n14 * b.n44;
|
|
|
-
|
|
|
- this.n21 = a.n21 * b.n11 + a.n22 * b.n21 + a.n23 * b.n31 + a.n24 * b.n41;
|
|
|
- this.n22 = a.n21 * b.n12 + a.n22 * b.n22 + a.n23 * b.n32 + a.n24 * b.n42;
|
|
|
- this.n23 = a.n21 * b.n13 + a.n22 * b.n23 + a.n23 * b.n33 + a.n24 * b.n43;
|
|
|
- this.n24 = a.n21 * b.n14 + a.n22 * b.n24 + a.n23 * b.n34 + a.n24 * b.n44;
|
|
|
-
|
|
|
- this.n31 = a.n31 * b.n11 + a.n32 * b.n21 + a.n33 * b.n31 + a.n34 * b.n41;
|
|
|
- this.n32 = a.n31 * b.n12 + a.n32 * b.n22 + a.n33 * b.n32 + a.n34 * b.n42;
|
|
|
- this.n33 = a.n31 * b.n13 + a.n32 * b.n23 + a.n33 * b.n33 + a.n34 * b.n43;
|
|
|
- this.n34 = a.n31 * b.n14 + a.n32 * b.n24 + a.n33 * b.n34 + a.n34 * b.n44;
|
|
|
-
|
|
|
- this.n41 = a.n41 * b.n11 + a.n42 * b.n21 + a.n43 * b.n31 + a.n44 * b.n41;
|
|
|
- this.n42 = a.n41 * b.n12 + a.n42 * b.n22 + a.n43 * b.n32 + a.n44 * b.n42;
|
|
|
- this.n43 = a.n41 * b.n13 + a.n42 * b.n23 + a.n43 * b.n33 + a.n44 * b.n43;
|
|
|
- this.n44 = a.n41 * b.n14 + a.n42 * b.n24 + a.n43 * b.n34 + a.n44 * b.n44;
|
|
|
+ var a11 = a.n11, a12 = a.n12, a13 = a.n13, a14 = a.n14,
|
|
|
+ a21 = a.n21, a22 = a.n22, a23 = a.n23, a24 = a.n24,
|
|
|
+ a31 = a.n31, a32 = a.n32, a33 = a.n33, a34 = a.n34,
|
|
|
+ a41 = a.n41, a42 = a.n42, a43 = a.n43, a44 = a.n44,
|
|
|
+
|
|
|
+ b11 = b.n11, b12 = b.n12, b13 = b.n13, b14 = b.n14,
|
|
|
+ b21 = b.n21, b22 = b.n22, b23 = b.n23, b24 = b.n24,
|
|
|
+ b31 = b.n31, b32 = b.n32, b33 = b.n33, b34 = b.n34,
|
|
|
+ b41 = b.n41, b42 = b.n42, b43 = b.n43, b44 = b.n44;
|
|
|
+
|
|
|
+ this.n11 = a11 * b11 + a12 * b21 + a13 * b31 + a14 * b41;
|
|
|
+ this.n12 = a11 * b12 + a12 * b22 + a13 * b32 + a14 * b42;
|
|
|
+ this.n13 = a11 * b13 + a12 * b23 + a13 * b33 + a14 * b43;
|
|
|
+ this.n14 = a11 * b14 + a12 * b24 + a13 * b34 + a14 * b44;
|
|
|
+
|
|
|
+ this.n21 = a21 * b11 + a22 * b21 + a23 * b31 + a24 * b41;
|
|
|
+ this.n22 = a21 * b12 + a22 * b22 + a23 * b32 + a24 * b42;
|
|
|
+ this.n23 = a21 * b13 + a22 * b23 + a23 * b33 + a24 * b43;
|
|
|
+ this.n24 = a21 * b14 + a22 * b24 + a23 * b34 + a24 * b44;
|
|
|
+
|
|
|
+ this.n31 = a31 * b11 + a32 * b21 + a33 * b31 + a34 * b41;
|
|
|
+ this.n32 = a31 * b12 + a32 * b22 + a33 * b32 + a34 * b42;
|
|
|
+ this.n33 = a31 * b13 + a32 * b23 + a33 * b33 + a34 * b43;
|
|
|
+ this.n34 = a31 * b14 + a32 * b24 + a33 * b34 + a34 * b44;
|
|
|
+
|
|
|
+ this.n41 = a41 * b11 + a42 * b21 + a43 * b31 + a44 * b41;
|
|
|
+ this.n42 = a41 * b12 + a42 * b22 + a43 * b32 + a44 * b42;
|
|
|
+ this.n43 = a41 * b13 + a42 * b23 + a43 * b33 + a44 * b43;
|
|
|
+ this.n44 = a41 * b14 + a42 * b24 + a43 * b34 + a44 * b44;
|
|
|
|
|
|
},
|
|
|
|