#ifndef MATRIX3D_H #define MATRIX3D_H #include class Matrix3D { public: Matrix3D(); void setToIdentity(); void set(const Matrix3D& m); void set(int row, int col, float value); float get(int row, int col) const; const float* getValues() const; void mul(const Matrix3D& m); void scale(float sx, float sy, float sz); void translate(float tx, float ty, float tz); void translateX(float tx); void translateY(float ty); void translateZ(float tz); void translateTo(float tx, float ty, float tz); void rotateX(float degrees); void rotateY(float degrees); void rotateZ(float degrees); private: float data[16]; }; std::ostream& operator<<(std::ostream& os, const Matrix3D& m); #endif