|
@@ -211,6 +211,36 @@ test( "getInverse", function() {
|
|
|
}
|
|
|
});
|
|
|
|
|
|
+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();
|