source: other-projects/playing-in-the-street/summer-2013/trunk/Playing-in-the-Street-WPF/Content/Web/mrdoob-three.js-4862f5f/test/unit/math/Euler.js@ 28897

Last change on this file since 28897 was 28897, checked in by davidb, 10 years ago

GUI front-end to server base plus web page content

File size: 2.6 KB
Line 
1/**
2 * @author bhouston / http://exocortex.com
3 */
4
5module( "Euler" );
6
7var eulerZero = new THREE.Euler( 0, 0, 0, "XYZ" );
8var eulerAxyz = new THREE.Euler( 1, 0, 0, "XYZ" );
9var eulerAzyx = new THREE.Euler( 0, 1, 0, "ZYX" );
10
11var matrixEquals4 = function( a, b, tolerance ) {
12 tolerance = tolerance || 0.0001;
13 if( a.elements.length != b.elements.length ) {
14 return false;
15 }
16 for( var i = 0, il = a.elements.length; i < il; i ++ ) {
17 var delta = a.elements[i] - b.elements[i];
18 if( delta > tolerance ) {
19 return false;
20 }
21 }
22 return true;
23};
24
25test( "constructor/equals", function() {
26 var a = new THREE.Euler();
27 ok( a.equals( eulerZero ), "Passed!" );
28 ok( ! a.equals( eulerAxyz ), "Passed!" );
29 ok( ! a.equals( eulerAzyx ), "Passed!" );
30});
31
32test( "clone/copy/equals", function() {
33 var a = eulerAxyz.clone();
34 ok( a.equals( eulerAxyz ), "Passed!" );
35 ok( ! a.equals( eulerZero ), "Passed!" );
36 ok( ! a.equals( eulerAzyx ), "Passed!" );
37
38 a.copy( eulerAzyx );
39 ok( a.equals( eulerAzyx ), "Passed!" );
40 ok( ! a.equals( eulerAxyz ), "Passed!" );
41 ok( ! a.equals( eulerZero ), "Passed!" );
42
43});
44
45test( "set", function() {
46 var a = new THREE.Euler();
47
48 a.set( 0, 1, 0, "ZYX" );
49 ok( a.equals( eulerAzyx ), "Passed!" );
50 ok( ! a.equals( eulerAxyz ), "Passed!" );
51 ok( ! a.equals( eulerZero ), "Passed!" );
52});
53
54test( "Quaternion.setFromEuler/Euler.fromQuaternion", function() {
55 var testValues = [ eulerZero, eulerAxyz, eulerAzyx ];
56 for( var i = 0; i < testValues.length; i ++ ) {
57 var v = testValues[i];
58 var q = new THREE.Quaternion().setFromEuler( v );
59
60 var v2 = new THREE.Euler().setFromQuaternion( q, v.order );
61 var q2 = new THREE.Quaternion().setFromEuler( v2 );
62 ok( q.equals( q2 ), "Passed!" );
63 }
64});
65
66
67test( "Matrix4.setFromEuler/Euler.fromRotationMatrix", function() {
68 var testValues = [ eulerZero, eulerAxyz, eulerAzyx ];
69 for( var i = 0; i < testValues.length; i ++ ) {
70 var v = testValues[i];
71 var m = new THREE.Matrix4().makeRotationFromEuler( v );
72
73 var v2 = new THREE.Euler().setFromRotationMatrix( m, v.order );
74 var m2 = new THREE.Matrix4().makeRotationFromEuler( v2 );
75 ok( matrixEquals4( m, m2, 0.0001 ), "Passed!" );
76 }
77});
78
79test( "reorder", function() {
80 var testValues = [ eulerZero, eulerAxyz, eulerAzyx ];
81 for( var i = 0; i < testValues.length; i ++ ) {
82 var v = testValues[i];
83 var q = new THREE.Quaternion().setFromEuler( v );
84
85 v.reorder( 'YZX' );
86 var q2 = new THREE.Quaternion().setFromEuler( v );
87 ok( q.equals( q2 ), "Passed!" );
88
89 v.reorder( 'ZXY' );
90 var q3 = new THREE.Quaternion().setFromEuler( v );
91 ok( q.equals( q3 ), "Passed!" );
92 }
93});
Note: See TracBrowser for help on using the repository browser.