testMatrix4.cpp

Go to the documentation of this file.
00001 /*
00002  * testMatrix4.cpp
00003  *
00004  * Copyright (C) 2009  Thomas A. Vaughan
00005  * All rights reserved.
00006  *
00007  * Test program for the matrix4_t object.
00008  */
00009 
00010 // includes --------------------------------------------------------------------
00011 #include "geometry/matrix_4.h"
00012 
00013 #include <math.h>
00014 
00015 
00016 ////////////////////////////////////////////////////////////////////////////////
00017 //
00018 //      static helper methods
00019 //
00020 ////////////////////////////////////////////////////////////////////////////////
00021 
00022 static void
00023 doTest
00024 (
00025 void
00026 )
00027 {
00028         matrix4_t M;
00029 
00030         M.setIdentity();
00031         M.dump("identity");
00032 
00033         point3d_t p(1, 2, 3);
00034         M += p;
00035         M.dump("translation");
00036 
00037         M = p;
00038         M.dump("translation");
00039 
00040         M += p;
00041         M.dump("translation again");
00042 
00043         M.setZRotation(M_PI / 2.0);
00044         M.dump("Z-rotation: 90 degrees");
00045 
00046         M = p;
00047         point3d_t start(0, 0, 0);
00048         point3d_t end = M.transform(start);
00049         start.dump("starting point");
00050         M.dump("transformation");
00051         end.dump("transformed point");
00052 
00053         M.setZRotation(M_PI / 2.0);
00054         start = point3d_t(10, 0, 5);
00055         start.dump("new starting point");
00056         end = M.transform(start);
00057         end.dump("transformed point");
00058 
00059         M += p;
00060         end = M.transform(start);
00061         end.dump("transformed point");
00062 
00063         matrix4_t A, B;
00064 
00065         A.setZRotation(M_PI / 2.0);
00066         B = p;
00067 
00068         M = B * A;
00069         M.dump("M = B * A");
00070 
00071         // okay set up a simple test
00072         p.set(1, 1, 0);
00073         p.dump("starting point");
00074 
00075         M.setYRotation(M_PI / 2.0);
00076         p = M * p;
00077         p.dump("Rotated 90 degrees around Y axis");
00078 
00079         M.setZRotation(M_PI / 2.0);
00080         p = M * p;
00081         p.dump("Rotated 90 degrees around Z axis");
00082 
00083 
00084         p.set(1, 1, 0);
00085         p.dump("starting point");
00086         A.setYRotation(M_PI / 2.0);
00087         B.setZRotation(M_PI / 2.0);
00088         M = B * A;
00089         p = M * p;
00090         p.dump("Same transformation");
00091 }
00092 
00093 
00094 
00095 ////////////////////////////////////////////////////////////////////////////////
00096 //
00097 //      entry point
00098 //
00099 ////////////////////////////////////////////////////////////////////////////////
00100 
00101 int
00102 main
00103 (
00104 IN int argc,
00105 IN const char * argv[]
00106 )
00107 {
00108         doTest();
00109 }
00110