Skip to content

Commit

Permalink
Fixed Transform tests
Browse files Browse the repository at this point in the history
- Changed the way subtract() works in matrix2/3/4
 Pleas enter the commit message for your changes. Lines starting
  • Loading branch information
saecob committed Dec 14, 2011
1 parent 0a21e36 commit a0f68fa
Show file tree
Hide file tree
Showing 5 changed files with 116 additions and 109 deletions.
15 changes: 8 additions & 7 deletions src/matrix/matrix2.js
Original file line number Diff line number Diff line change
Expand Up @@ -23,11 +23,11 @@ define( function ( require ) {

add: function( ml, result ) {
result = result || Matrix2();
var temp = ml[0];

if (ml.length == 1) {
return ml[0];
} else {
var temp = ml[0];
if (ml.length == 1)
result = temp;
else {
for (var i = 1; i < ml.length; ++ i) {
result = matrix.add(temp, ml[i], result);
temp = result;
Expand All @@ -38,10 +38,11 @@ define( function ( require ) {

subtract: function( ml, result ) {
result = result || Matrix2();
var temp = ml[0];

if (ml.length == 1)
return ml[0];
else {
if (ml.length == 1) {
result = temp;
} else {
var temp = ml[0];
for (var i = 1; i < ml.length; ++ i) {
result = matrix.subtract(temp, ml[i], result);
Expand Down
4 changes: 2 additions & 2 deletions src/matrix/matrix3.js
Original file line number Diff line number Diff line change
Expand Up @@ -39,11 +39,11 @@ define( function ( require ) {

subtract: function( ml, result ) {
result = result || Matrix3();
var temp = ml[0];

if (ml.length == 1)
return ml[0];
result = temp;
else {
var temp = ml[0];
for (var i = 1; i < ml.length; ++ i) {
result = matrix.subtract(temp, ml[i], result);
temp = result;
Expand Down
4 changes: 2 additions & 2 deletions src/matrix/matrix4.js
Original file line number Diff line number Diff line change
Expand Up @@ -40,11 +40,11 @@ define( function ( require ) {

subtract: function( ml, result ) {
result = result || Matrix4();
var temp = ml[0];

if (ml.length == 1)
return ml[0];
result = temp;
else {
var temp = ml[0];
for (var i = 1; i < ml.length; ++ i) {
result = matrix.subtract(temp, ml[i], result);
temp = result;
Expand Down
186 changes: 94 additions & 92 deletions src/matrix/transform.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*jshint white: false, strict: false, plusplus: false, onevar: false,
nomen: false */
nomen: false */
/*global define: false, console: false, window: false, setTimeout: false */

define( function ( require ) {
Expand All @@ -9,110 +9,112 @@ define( function ( require ) {
var matrix4 = require( './matrix4' )( FLOAT_ARRAY_TYPE );

var Transform = matrix4.$;

var transform = {

$: Transform,
$: Transform,

fixed: function( vt, vr, vs ) {
var r = matrix4.identity;
fixed: function( vt, vr, vs ) {
var r = matrix4.identity;

if( vt ) {
transform.translate( vt, r );
}

if( vt ) {
transform.translate( vt, r );
}
if( vr ) {
transform.rotate( vr, r );
}

if( vr ) {
transform.rotate( vr, r );
}
if( vs ) {
transform.scale( vs, r );
}

if( vs ) {
transform.scale( vs, r );
}
return r;
},

// Convert a vector rotation (in radians) to a 4x4 matrix
rotate: function( v, result ) {
var r = result || matrix4.identity;

var sinA,
cosA;

if( 0 !== v[2] ) {
sinA = Math.sin( v[2] );
cosA = Math.cos( v[2] );
ml = [];
ml.push(matrix4.$([ cosA, sinA, 0, 0,
-sinA, cosA, 0, 0,
0, 0, 1, 0,
0, 0, 0, 1 ] ));
ml.push(matrix4.$(r));

matrix4.multiply( ml, r );
}

if( 0 !== v[1] ) {
sinA = Math.sin( v[1] );
cosA = Math.cos( v[1] );
ml = [];
ml.push(matrix4.$([ cosA, 0, -sinA, 0,
0, 1, 0, 0,
sinA, 0, cosA, 0,
0, 0, 0, 1 ] ));
ml.push(matrix4.$(r));

matrix4.multiply( ml, r );
}

if( 0 !== v[0] ) {
sinA = Math.sin( v[0] );
cosA = Math.cos( v[0] );
ml = [];
ml.push(matrix4.$([ 1, 0, 0, 0,
0, cosA, sinA, 0,
0, -sinA, cosA, 0,
0, 0, 0, 1 ] ));
ml.push(matrix4.$(r));

matrix4.multiply( ml, r );
}

if( !result ) {
return r;
}
},

// Convert a vector3 scale to a 4x4 matrix
scale: function( v, result ) {
var r = [ v[0], 0.0, 0.0, 0.0,
0.0, v[1], 0.0, 0.0,
0.0, 0.0, v[2], 0.0,
0.0, 0.0, 0.0, 1.0 ];

if( result ) {
matrix4.multiply( matrix4.$( result ), r, result );
} else {
return r;
}
},

// Convert a vector3 translation to a 4x4 matrix
translate: function( v, result ) {
var r = [ 1.0, 0.0, 0.0, v[0],
0.0, 1.0, 0.0, v[1],
0.0, 0.0, 1.0, v[2],
0.0, 0.0, 0.0, 1.0 ]

if( result ) {
matrix4.multiply( matrix4.$( result ), r, result );
} else {
return r;
},

// Convert a vector rotation (in radians) to a 4x4 matrix
rotate: function( v, result ) {
var r = result || matrix4.identity;

var sinA,
cosA;

if( 0 !== v[2] ) {
sinA = Math.sin( v[2] );
cosA = Math.cos( v[2] );
matrix4.multiply( matrix4.$(
[ cosA, sinA, 0, 0,
-sinA, cosA, 0, 0,
0, 0, 1, 0,
0, 0, 0, 1 ] ),
matrix4.$( r ),
r );
}

if( 0 !== v[1] ) {
sinA = Math.sin( v[1] );
cosA = Math.cos( v[1] );
matrix4.multiply( matrix4.$(
[ cosA, 0, -sinA, 0,
0, 1, 0, 0,
sinA, 0, cosA, 0,
0, 0, 0, 1 ] ),
matrix4.$( r ),
r );
}

if( 0 !== v[0] ) {
sinA = Math.sin( v[0] );
cosA = Math.cos( v[0] );

matrix4.multiply( matrix4.$(
[ 1, 0, 0, 0,
0, cosA, sinA, 0,
0, -sinA, cosA, 0,
0, 0, 0, 1 ] ),
matrix4.$( r ),
r );
}

if( !result ) {
return r;
}
},

// Convert a vector3 scale to a 4x4 matrix
scale: function( v, result ) {
var r = [ v[0], 0.0, 0.0, 0.0,
0.0, v[1], 0.0, 0.0,
0.0, 0.0, v[2], 0.0,
0.0, 0.0, 0.0, 1.0 ];

if( result ) {
matrix4.multiply( matrix4.$( result ), r, result );
} else {
return r;
}
},

// Convert a vector3 translation to a 4x4 matrix
translate: function( v, result ) {
var r = [ 1.0, 0.0, 0.0, v[0],
0.0, 1.0, 0.0, v[1],
0.0, 0.0, 1.0, v[2],
0.0, 0.0, 0.0, 1.0 ]

if( result ) {
matrix4.multiply( matrix4.$( result ), r, result );
} else {
return r;
}
}
}

};

return transform;

};

});
});
16 changes: 10 additions & 6 deletions test/matrix/transform.js
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
/*jshint white: false, strict: false, plusplus: false, onevar: false,
nomen: false */
nomen: false */
/*global gladius: false, document: false, window: false, module: false, start,
test: false, expect: false, ok: false, notEqual: false, stop, QUnit: false */
test: false, expect: false, ok: false, notEqual: false, stop, QUnit: false */

(function() {

var math = null;
// Name of our module

// Name of our module
module( 'Math/Transform', {
setup: function () {
stop();
Expand Down Expand Up @@ -50,7 +50,11 @@

ok(
math.matrix4.equal( result, expected ),
'Rotation matrix is correct'
'Expected: [ 0, -1/2, -0.866, 0, 1, 0, 0, 0, 0, -0.866, 1/2, 0, 0, 0, 0, 1 ] \n Returned: '
+ result[0] + ', ' + result[1] + ', ' + result[2] + ', ' + result[3]
+ ', ' + result[4] + ', ' + result[5] + ', ' + result[6] + ', ' + result[7]
+ ', ' + result[8] + ', ' + result[9] + ', ' + result[10] + ', ' + result[11]
+ ', ' + result[12] + ', ' + result[13] + ', ' + result[14] + ', ' + result[15]
);

});
Expand All @@ -71,4 +75,4 @@
);
});

}());
}());

0 comments on commit a0f68fa

Please sign in to comment.