00001 // SymmetricMatrix3.h: interface for the SymmetricMatrix3 class. 00002 // 00004 00005 #ifndef SYMMETRICMATRIX3_H 00006 #define SYMMETRICMATRIX3_H 00007 00008 #include "Matrix3.h" 00009 00013 class SymmetricMatrix3 : public Matrix3{ 00014 public: 00015 SymmetricMatrix3() {} 00016 virtual ~SymmetricMatrix3() {} 00017 00019 void setElements( real v1, real v2, real v3, 00020 real v4, real v5, 00021 real v6){ 00022 matrix[0][0]=v1; matrix[0][1]=v2; matrix[0][3]=v3; 00023 matrix[1][1]=v4; matrix[1][2]=v5; 00024 matrix[2][2]=v6; 00025 } 00026 00028 real getDeterminant() const { 00029 return matrix[0][0]*matrix[1][1]*matrix[2][2]+ 00030 2*matrix[0][1]*matrix[0][2]*matrix[1][2] 00031 -sqr(matrix[1][2])*matrix[0][0] 00032 -sqr(matrix[0][2])*matrix[1][1] 00033 -sqr(matrix[0][1])*matrix[2][2]; 00034 } 00035 00037 void mirror(){ 00038 for(int i=0;i<2;i++) 00039 for(int j=i+1;j<3;j++) 00040 matrix[j][i]=matrix[i][j]; 00041 } 00042 00044 SymmetricMatrix3& operator+=(const SymmetricMatrix3& m){ 00045 for(int i=0;i<3;i++) 00046 for(int j=i;j<3;j++) 00047 matrix[i][j]+=m.matrix[i][j]; 00048 return *this; 00049 } 00050 00051 }; 00052 00053 #endif //SYMMETRICMATRIX3_H
Thyrix homepage Users' guide
(C) Arxia 2004-2005