mirror of
https://github.com/leozide/leocad
synced 2024-11-17 07:47:55 +01:00
49 lines
1.4 KiB
C++
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_
|