math.cpp

00001 #include <ivfmath/IvfVec3d.h>
00002 #include <ivfmath/IvfVec4d.h>
00003 #include <ivfmath/IvfMat3d.h>
00004 #include <ivfmath/IvfMat4d.h>
00005 
00006 int main(int argc, char* argv[])
00007 {
00008         using namespace std;
00009 
00010         CIvfVec3d a(1.0, 0.0, 0.0);
00011         CIvfVec3d b(0.0, 1.0, 0.0);
00012 
00013         CIvfVec3d c;
00014         c = a + b;
00015         
00016         CIvfVec3d d;
00017         d = a * b;
00018         
00019         CIvfVec3d e;
00020         e = d;
00021 
00022         cout << "Vectors c, d, e." << endl << endl;
00023 
00024         c.print(cout);
00025         d.print(cout);
00026         e.print(cout);
00027 
00028         CIvfVec3d axis(0.0, 1.0, 0.0);
00029         CIvfVec3d rotated(1.0, 0.0, 0.0);
00030 
00031         rotated.rotate(axis, 45.0);
00032 
00033         cout << endl << "Rotated matrix rotated." << endl << endl;
00034         rotated.print(cout);
00035 
00036         CIvfMat3d A;
00037         A = 0.0;
00038 
00039         cout << endl << "Matrix A." << endl << endl;
00040 
00041         A.print(cout);
00042 
00043         CIvfMat3d B;
00044         
00045         B = A;
00046         B = 0.0;
00047 
00048         CIvfMat3d C;
00049         
00050         C = 0.0;
00051         C.setRow(1, 1.0, 1.0, 1.0);
00052         
00053         cout << endl << "Matrix C." << endl << endl;
00054         C.print(cout);
00055 
00056         CIvfMat3d D = C.t();
00057         
00058         cout << endl << "Matrix D." << endl << endl;
00059         D.print(cout);
00060 
00061         CIvfMat3d E;
00062 
00063         E.setRow(1, 1.0, 3.0, 2.0);
00064         E.setRow(2, 5.0, 7.4, 1.5);
00065         E.setRow(3, -1.0, 2.5, 3.6);
00066         
00067         cout << endl << "Matrix E." << endl << endl;
00068         E.print(cout);
00069         
00070         CIvfMat3d F;
00071 
00072         F.setRow(1, 3.0, 1.0, 7.0);
00073         F.setRow(2, 6.0, 2.4, 2.5);
00074         F.setRow(3, 2.0, 9.5, 1.6);
00075 
00076         cout << endl << "Matrix F." << endl << endl;
00077         F.print(cout);
00078 
00079         CIvfMat3d G = E*F;
00080 
00081         cout << endl << "Matrix G=E*F." << endl << endl;
00082         G.print(cout);
00083 
00084         CIvfVec3d f(1.0, 1.0, 1.0);
00085         CIvfVec3d g;
00086         
00087         g = E*f;
00088 
00089         cout << endl << "Vector g=E*f." << endl << endl;
00090         g.print(cout);
00091 
00092         CIvfMat3d H = F*F.inv();
00093 
00094         cout << endl << "Matrix g=F*F.inv()." << endl << endl;
00095         H.print(cout);
00096 
00097         CIvfMat4d X;
00098         X.setRow(1, 3.0, 4.5, 6.7, 1.2);
00099         X.setRow(2, 2.0, 7.5, 1.7, 4.2);
00100         X.setRow(3, 3.0, 5.5, 8.7, 5.2);
00101         X.setRow(4, 5.0, 4.5, 4.7, 3.2);
00102 
00103         CIvfMat4d Y;
00104 
00105         Y = X*X.inv();
00106 
00107         cout << endl << "Matrix Y=X*X.inv()." << endl << endl;
00108         Y.print(cout);
00109 
00110         cout << endl << "Rotation matrices Rx, Ry, Rz." << endl << endl;
00111 
00112         CIvfMat4d Rx;
00113         CIvfMat4d Ry;
00114         CIvfMat4d Rz;
00115 
00116         Rx.rotateX(45.0*M_PI/360.0); Rx.print(cout); cout << endl;
00117         Ry.rotateY(45.0*M_PI/360.0); Ry.print(cout); cout << endl;
00118         Rz.rotateZ(45.0*M_PI/360.0); Rz.print(cout); cout << endl;
00119         
00120         CIvfMat4d R;
00121 
00122         cout << endl << "Rotation matrix R." << endl << endl;
00123 
00124         R.rotate(1.0, 0.0, 0.0, 45.0*M_PI/360.0);
00125         R.print(cout);
00126 
00127         CIvfMat4d T;
00128         CIvfVec4d p1;
00129         CIvfVec4d p2;
00130 
00131         cout << endl << "Translation T." << endl << endl;
00132 
00133         p1.setComponents(0.0, 0.0, 0.0, 1.0);
00134         p1.print(cout); cout << endl;
00135         T.translate(1.0, 1.0, 1.0);
00136         T.print(cout); cout << endl;
00137         p2 = T * p1;
00138         p2.print(cout);
00139 
00140 
00141 
00142 
00143 
00144         return 0;
00145 }

Generated on Fri Sep 1 15:36:44 2006 for Interactive Visualisation Framework - Ivf++ by  doxygen 1.4.6-NO