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 _CIvfMat3d_h_
00026 #define _CIvfMat3d_h_
00027
00028 #include <ivf/ivfconfig.h>
00029 #include <ivfmath/IvfMathBase.h>
00030 #include <ivfmath/IvfVec3d.h>
00031
00039 class IVFMATH_API CIvfMat3d : public CIvfMathBase {
00040 private:
00041 double m_matrix[3][3];
00042 public:
00044 CIvfMat3d();
00045
00047 CIvfMat3d(CIvfMat3d& M);
00048
00050 CIvfMat3d(double scalar);
00051
00053 virtual ~CIvfMat3d();
00054
00056 void one();
00057
00059 void identity();
00060
00062 void zero();
00063
00064 #ifdef IVF_HAVE_IOSTREAM
00065
00066 void print(std::ostream &out);
00067 #else
00068
00069 void print(ostream &out);
00070 #endif
00071
00077 void setComponent(int row, int col, double value);
00078
00080 double getComponent(int row, int col);
00081
00083 void setColumn(int col, double v1, double v2, double v3);
00084
00086 void setRow(int row, double v1, double v2, double v3);
00087
00089 CIvfMat3d& t();
00090
00092 CIvfMat3d& inv();
00093
00095 CIvfMat3d& operator=(CIvfMat3d& A);
00096
00098 CIvfMat3d& operator=(double a);
00099
00101 CIvfMat3d& operator+=(CIvfMat3d& A);
00102
00104 CIvfMat3d& operator-=(CIvfMat3d& A);
00105
00107 CIvfMat3d& operator*(CIvfMat3d& A);
00108
00110 CIvfVec3d& operator*(CIvfVec3d& v);
00111
00113 CIvfMat3d& operator*(double scalar);
00114
00116 CIvfMat3d& operator/(double scalar);
00117
00119 CIvfMat3d& operator+(CIvfMat3d& A);
00120 };
00121
00122 IVFMATH_API CIvfMat3d& ivfGetTempMatrix3d();
00123
00126 #endif