Matrix

 

 

 

class          TOMOVISION_UTIL  Matrix {

 

public:

          float          mat[4][4] ;

 

          friend class          Vect ;

 

public:

 

          typedef enum { REPLACE, BEFORE, AFTER } combine ;

 

          // --------------- constructors ----------------------------------

          inline          Matrix() ;

          inline          Matrix( float, float, float, float,

                                          float, float, float, float,

                                          float, float, float, float,

                                          float, float, float, float ) ;

          inline          Matrix(const Matrix& M) ;

 

          // ---------------- functions -------------------------------------

          inline          void          init() ;

          inline          void          set(const Matrix& M) ;

          inline          void          set(           float vaa, float vab, float vac, float vad,

                                                  float vba, float vbb, float vbc, float vbd,

                                                  float vca, float vcb, float vcc, float vcd,

                                                  float vda, float vdb, float vdc, float vdd ) ;

          inline          void          translate(          const float x,

                                                            const float y,

                                                             const float z, const combine test) ;

          inline          void          scale(          const float x,

                                                        const float y,

                                                        const float z, const combine test) ;

          inline          void          rot_x(const float val, const combine test) ;

          inline          void          rot_y(const float val, const combine test) ;

          inline          void          rot_z(const float val, const combine test) ;

          inline          void          pivot(const float val, Vect axe, const combine test) ;

          inline          void          stool(HWND hwnd, int code, char *str) ;

 

          // ---------------- Overload: functions unitaires -----------------

          inline          int                    operator==          (Matrix& M) ;

          inline          Matrix&          operator=  (const Matrix& M) ;

          inline          float*          operator[] (const int i) const ;

 

          inline          Matrix          operator-  () const ;

          inline          Matrix          operator!  () const ;                    // inverse

          inline          Matrix          operator~  () const ;                    // transpose

          inline          Matrix&          operator-= (const Matrix& M) ;

          inline          Matrix&          operator+= (const Matrix& M) ;

          inline          Matrix&          operator*= (const Matrix& M) ;

 

} ;

 

// ---------------- Overload: fonctions binaires ------------------

inline          Matrix          operator*  (const Matrix&, const Matrix&) ;