#if !defined(MATRIX_H)
#define MATRIX_H

class Vec; 

/****************************************************************************/
/** \class Matrix 
    \brief Matrixklasse
*****************************************************************************/
class Matrix  
{
private:
   TArc* m_arc;

public:
   float m_11, m_12, m_13, m_14;
   float m_21, m_22, m_23, m_24;
   float m_31, m_32, m_33, m_34;
   float m_41, m_42, m_43, m_44;

public:
	Matrix();
	virtual ~Matrix();

   void clear(void);
   void set(Vec& v1, Vec& v2, Vec& v3);
   void setInv(Vec& v1, Vec& v2, Vec& v3);

   void rotateX(int w);
   void rotateY(int w);
   void rotateZ(int w);

   void rotateXRad(float w);
   void rotateYRad(float w);
   void rotateZRad(float w);

   void translate(Vec& v);

   void scale(float s);
   void dump(void);
};
#endif // !defined(MATRIX_H)
