matrix.h
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025 #ifndef GCU_MATRIX_H
00026 #define GCU_MATRIX_H
00027
00029 namespace gcu
00030 {
00031
00032 class Vector;
00033
00044 enum MatrixType {euler, antieuler, rotation};
00045
00049 class Matrix
00050 {
00051 public:
00052
00056 Matrix ();
00061 Matrix (double d);
00062 Matrix (double d[3][3]);
00067 Matrix (Matrix const &m);
00068
00069 Matrix (Vector const &v1, Vector const &v2, Vector const &v3, bool as_rows = true);
00073 virtual ~Matrix ();
00092 Matrix (double Psi, double Theta, double Phi, MatrixType Type);
00106 Matrix (double x11, double x12, double x13, double x21, double x22, double x23, double x31, double x32, double x33);
00112 Matrix& operator* (Matrix const &cMat) const;
00118 Matrix& operator= (Matrix const &cMat);
00126 void Euler (double& Psi, double& Theta, double& Phi);
00135 void Transform (double &dx, double &dy , double &dz) const;
00136 Vector operator* (Vector const &v) const;
00137 Vector glmult (Vector const &v) const;
00138 double &operator() (unsigned i, unsigned j) {return x[i][j];}
00139 double operator() (unsigned i, unsigned j) const {return x[i][j];}
00140
00141 private:
00142 double x[3][3];
00143 };
00144
00148 class GLMatrix
00149 {
00150 public:
00154 GLMatrix ();
00158 virtual ~GLMatrix ();
00159
00165 double &operator() (int i, int j) {return x[i][j];}
00169 double *array () {return (double*) x;}
00170
00171 private:
00172 double x[4][4];
00173 };
00174
00175 }
00176
00177 #endif //GCRYSTAL_MATRIX_H