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 ();
00062 Matrix (double d);
00068 Matrix (double d[3][3]);
00074 Matrix (Matrix const &m);
00083 Matrix (Vector const &v1, Vector const &v2, Vector const &v3, bool as_rows = true);
00087 virtual ~Matrix ();
00106 Matrix (double Psi, double Theta, double Phi, MatrixType Type);
00120 Matrix (double x11, double x12, double x13, double x21, double x22, double x23, double x31, double x32, double x33);
00126 Matrix& operator* (Matrix const &cMat) const;
00132 Matrix& operator= (Matrix const &cMat);
00140 void Euler (double& Psi, double& Theta, double& Phi);
00149 void Transform (double &dx, double &dy , double &dz) const;
00156 Vector operator* (Vector const &v) const;
00163 Vector glmult (Vector const &v) const;
00170 double &operator() (unsigned i, unsigned j) {return x[i][j];}
00177 double operator() (unsigned i, unsigned j) const {return x[i][j];}
00178
00179 private:
00180 double x[3][3];
00181 };
00182
00186 class GLMatrix
00187 {
00188 public:
00192 GLMatrix ();
00196 virtual ~GLMatrix ();
00197
00203 double &operator() (int i, int j) {return x[i][j];}
00207 double *array () {return (double*) x;}
00208
00209 private:
00210 double x[4][4];
00211 };
00212
00213 }
00214
00215 #endif //GCRYSTAL_MATRIX_H