matrix.h
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
00028 #include <openbabel/math/vector3.h>
00029
00030 namespace gcu
00031 {
00032
00043 enum MatrixType {euler, antieuler, rotation};
00044
00048 class Matrix
00049 {
00050 public:
00051
00055 Matrix ();
00059 virtual ~Matrix ();
00078 Matrix (double Psi, double Theta, double Phi, MatrixType Type);
00092 Matrix (double x11, double x12, double x13, double x21, double x22, double x23, double x31, double x32, double x33);
00098 Matrix& operator* (Matrix const &cMat) const;
00104 Matrix& operator= (Matrix const &cMat);
00112 void Euler (double& Psi, double& Theta, double& Phi);
00121 void Transform (double &dx, double &dy , double &dz) const;
00122 OpenBabel::vector3 operator* (OpenBabel::vector3 const &v) const;
00123
00124 private:
00125 double x[3][3];
00126 };
00127
00128 class GLMatrix
00129 {
00130 public:
00134 GLMatrix ();
00138 virtual ~GLMatrix ();
00139
00140 double &operator() (int i, int j) {return x[i][j];}
00141 double *array () {return (double*) x;}
00142
00143 private:
00144 double x[4][4];
00145 };
00146
00147 }
00148
00149 #endif //GCRYSTAL_MATRIX_H