leocad/common/matrix.h
2011-09-07 21:06:51 +00:00

49 lines
1.4 KiB
C++

// Matrix class
//
#ifndef _MATRIX_H_
#define _MATRIX_H_
class Matrix
{
public:
Matrix();
Matrix(const float *mat);
Matrix(const float *rot, const float *pos);
~Matrix() { };
void FromPacked(const float *mat);
void FromFloat(const float* mat);
void FromLDraw(const float *f);
void FromEulerAngles(float yaw, float pitch, float roll);
void FromAxisAngle(const float *axis, float angle);
void ToLDraw(float *f) const;
void ToEulerAngles(float *rot) const;
void ToAxisAngle(float *rot) const;
void LoadIdentity();
void Translate(float x, float y, float z);
void Multiply(const Matrix& m1, const Matrix& m2);
bool Invert();
void Transpose3();
float Determinant() const;
void GetTranslation(float *x, float *y, float *z);
void SetTranslation(float x, float y, float z);
void GetTranslation(float pos[3]);
void SetTranslation(float pos[3]);
void TransformPoint(float out[], const float in[3]);
void TransformPoints(float p[], int n);
void CreateOld(float mx, float my, float mz, float rx, float ry, float rz);
void Rotate(float angle, float x, float y, float z);
void RotateCenter(float angle, float x, float y, float z, float px, float py, float pz);
void CreatePerspective(float fovy, float aspect, float nearval, float farval);
void CreateLookat(const float *eye, const float *target, const float *up);
public:
float m[16];
};
#endif //_MATRIX_H_