#ifndef MATRIX_MATH_H #define MATRIX_MATH_H #include /** * !!! ALL matrices are in column major */ typedef GLfloat vec4[4]; typedef GLfloat vec3[3]; typedef GLfloat mat4[16]; extern void mat4Identity(mat4 mat); extern void mat4Copy(mat4 src, mat4 dst); extern void mat4Empty(mat4 mat); extern void mat4Multiply(mat4 result, mat4 A, mat4 B); extern void mat4Print(mat4 m); extern void mat4Translate(mat4 out, mat4 in, vec3 v); extern void mat4Scale(mat4 out, mat4 in, vec3 v); extern void mat4RotateX(mat4 out, mat4 in, GLfloat a); extern void mat4RotateY(mat4 out, mat4 in, GLfloat a); extern void mat4RotateZ(mat4 out, mat4 in, GLfloat a); extern void mat4BuildLookAt(mat4 out, vec3 eye, vec3 center, vec3 up); extern void mat4BuildProjection(mat4 out, GLfloat r, GLfloat l, GLfloat t, GLfloat b, GLfloat f, GLfloat n); extern void vec3Subtract(vec3 out, vec3 a, vec3 b); extern void vec3CrossProduct(vec3 out, vec3 a, vec3 b); extern void vec3Normalise(vec3 out, vec3 in); extern GLfloat vec3Length(vec3 in); extern GLfloat vec3DotProduct(vec3 a, vec3 b); #endif