#include "ZGo.h"



//---- ZGoMATRIX -------------------------------------------------------------//

class ZGoMATRIX : public ZGoDATA
{
  public:

  double m00, m01, m02, m03;
  double m10, m11, m12, m13;
  double m20, m21, m22, m23;
  double m30, m31, m32, m33;

  ZGoMATRIX(ZGo *zgo);
  ZGoMATRIX(ZGo *zgo, ZGoMATRIX *m);
  ZGoMATRIX(ZGo *zgo, ZGoMATRIX *m1, ZGoMATRIX *m2);
  ZGoMATRIX(ZGo *zgo, ZGoVECTOR *right, ZGoVECTOR *up, ZGoVECTOR *forward);

  void identity();

  void setMatrix(ZGoMATRIX *m);

  void shiftMatrix(float dx, float dy, float dz);
  void scaleMatrix(float dx, float dy, float dz);
  void scaleMatrix(float d);
  void rotateXMatrix(float a);
  void rotateYMatrix(float a);
  void rotateZMatrix(float a);

  void transform(ZGoMATRIX *src, ZGoMATRIX *dest);
  void preTransform(ZGoMATRIX *src, ZGoMATRIX *dest);

  void inverse(ZGoMATRIX *m);
};



//---- end of file -----------------------------------------------------------//

