Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011 #include "geometry/matrix_4.h"
00012
00013 #include <math.h>
00014
00015
00016
00017
00018
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
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
00098
00099
00100
00101 int
00102 main
00103 (
00104 IN int argc,
00105 IN const char * argv[]
00106 )
00107 {
00108 doTest();
00109 }
00110