#ifndef MATH_M4X4_H_ #define MATH_M4X4_H_ #include typedef struct { GLfloat m[16]; // 4x4 } m4x4; // Matrix functions void m4x4LoadIdentity (m4x4*); void m4x4Multiplier (m4x4 *r, m4x4 *m1, m4x4 *m2); void m4x4Inverse (m4x4*); void m4x4Transpose (m4x4*); void m4x4Copy (m4x4 *dest, m4x4 *src); void m4x4Print (m4x4*); // OpenGL functions void m4x4Translation (m4x4*, GLfloat x, GLfloat y, GLfloat z); void m4x4Homothetie (m4x4*, GLfloat x, GLfloat y, GLfloat z); void m4x4Rotation (m4x4*, GLfloat a, GLfloat x, GLfloat y, GLfloat z); // a = angle // Opengl view functions void m4x4Perpective (m4x4*, GLfloat angle, GLfloat ratio, GLfloat near, GLfloat far); void m4x4Ortho (m4x4*, GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat nearV, GLfloat farV ); void m4x4LookAt (m4x4*, GLfloat eyeX, GLfloat eyeY, GLfloat eyeZ, GLfloat centerX, GLfloat centerY, GLfloat centerZ, GLfloat upX, GLfloat upY, GLfloat upZ); // Stack struct typedef struct { int nb; int size; m4x4 *pile; } m4x4Stack; // Stack functions void m4x4StackInit (m4x4Stack *p); void m4x4StackPush (m4x4Stack *p, m4x4 *m); void m4x4StackPop (m4x4Stack *p, m4x4 *m); void m4x4StackFree (m4x4Stack *p); void m4x4StackPrint (m4x4Stack *p); #endif /* MATH_M4X4_H_ */