|
@@ -211,6 +211,50 @@ test( "getInverse", function() {
|
|
|
}
|
|
|
});
|
|
|
|
|
|
+test( "makeShear", function() {
|
|
|
+ var a = new THREE.Matrix4();
|
|
|
+ var b = new THREE.Matrix4();
|
|
|
+ var shear = new THREE.Vector3( 1, 2, 3 );
|
|
|
+ a.makeShear( shear )
|
|
|
+ // ensure it isn't identity
|
|
|
+ ok( ! matrixEquals4( a, b ), "Passed!" );
|
|
|
+ b.makeShear( shear, true );
|
|
|
+ var c = a.clone().transpose();
|
|
|
+ // ensure that one is transpose of the other
|
|
|
+ ok( matrixEquals4( b, c ), "Passed!" );
|
|
|
+ // TODO: Think of better tests for shear
|
|
|
+});
|
|
|
+
|
|
|
+test( "makeBasis/extractBasis", function() {
|
|
|
+ var identityBasis = [ new THREE.Vector3( 1, 0, 0 ), new THREE.Vector3( 0, 1, 0 ), new THREE.Vector3( 0, 0, 1 ) ];
|
|
|
+ var a = new THREE.Matrix4().makeBasis( identityBasis[0], identityBasis[1], identityBasis[2] );
|
|
|
+ var identity = new THREE.Matrix4();
|
|
|
+ ok( matrixEquals4( a, identity ), "Passed!" );
|
|
|
+
|
|
|
+ var testBases = [ [ new THREE.Vector3( 0, 1, 0 ), new THREE.Vector3( -1, 0, 0 ), new THREE.Vector3( 0, 0, 1 ) ] ]
|
|
|
+ for( var i = 0; i < testBases.length; i ++ ) {
|
|
|
+ var testBasis = testBases[i];
|
|
|
+ var b = new THREE.Matrix4().makeBasis( testBasis[0], testBasis[1], testBasis[2] );
|
|
|
+ var outBasis = [ new THREE.Vector3(), new THREE.Vector3(), new THREE.Vector3() ];
|
|
|
+ b.extractBasis( outBasis[0], outBasis[1], outBasis[2] );
|
|
|
+ // check what goes in, is what comes out.
|
|
|
+ for( var j = 0; j < outBasis.length; j ++ ) {
|
|
|
+ console.log( outBasis[j], testBasis[j] );
|
|
|
+ ok( outBasis[j].equals( testBasis[j] ), "Passed!" );
|
|
|
+ }
|
|
|
+
|
|
|
+ // get the basis out the hard war
|
|
|
+ for( var j = 0; j < identityBasis.length; j ++ ) {
|
|
|
+ outBasis[j].copy( identityBasis[j] );
|
|
|
+ outBasis[j].applyMatrix4( b );
|
|
|
+ }
|
|
|
+ // did the multiply method of basis extraction work?
|
|
|
+ for( var j = 0; j < outBasis.length; j ++ ) {
|
|
|
+ ok( outBasis[j].equals( testBasis[j] ), "Passed!" );
|
|
|
+ }
|
|
|
+ }
|
|
|
+});
|
|
|
+
|
|
|
test( "transpose", function() {
|
|
|
var a = new THREE.Matrix4();
|
|
|
var b = a.clone().transpose();
|