Create linear algebra module
This commit is contained in:
1 parent
74f15dd132
commit
f546f27a42
5 files changed
+165
-144
No files matched your search
@@ -0,0 +1,76 @@
|
||||
#ifndef LINEAR_ALG_H
|
||||
#define LINEAR_ALG_H
|
||||
|
||||
#define PI 3.14159265358979323846264
|
||||
|
||||
typedef struct {
|
||||
float x, y, z;
|
||||
} vec3_t;
|
||||
|
||||
typedef struct {
|
||||
float x, y, z, w;
|
||||
} vec4_t;
|
||||
|
||||
typedef struct {
|
||||
vec4_t x, y, z, w;
|
||||
} mat4_t;
|
||||
|
||||
#define MAT4_ID \
|
||||
{ \
|
||||
{ 1, 0, 0, 0 }, \
|
||||
{ 0, 1, 0, 0 }, \
|
||||
{ 0, 0, 1, 0 }, \
|
||||
{ 0, 0, 0, 1 }, \
|
||||
}
|
||||
|
||||
#define MAT4_SCALE(sf) \
|
||||
{ \
|
||||
{ sf, 0, 0, 0 }, \
|
||||
{ 0, sf, 0, 0 }, \
|
||||
{ 0, 0, sf, 0 }, \
|
||||
{ 0, 0, 0, 1 }, \
|
||||
}
|
||||
|
||||
#define MAT4_TRANSLATE(x, y, z) \
|
||||
{ \
|
||||
{ 1, 0, 0, 0 }, \
|
||||
{ 0, 1, 0, 0 }, \
|
||||
{ 0, 0, 1, 0 }, \
|
||||
{ x, y, z, 1 }, \
|
||||
}
|
||||
|
||||
#define MAT4_ROTATE_X(a) \
|
||||
{ \
|
||||
{ 1, 0, 0, 0 }, \
|
||||
{ 0, cosf(a), sinf(a), 0 }, \
|
||||
{ 0, -sinf(a), cosf(a), 0 }, \
|
||||
{ 0, 0, 0, 1 }, \
|
||||
}
|
||||
|
||||
#define MAT4_ROTATE_Y(a) \
|
||||
{ \
|
||||
{ cosf(a), 0, -sinf(a), 0 }, \
|
||||
{ 0, 1, 0, 0 }, \
|
||||
{ sinf(a), 0, cosf(a), 0 }, \
|
||||
{ 0, 0, 0, 1 }, \
|
||||
}
|
||||
|
||||
#define MAT4_ROTATE_Z(a) \
|
||||
{ \
|
||||
{ cosf(a), sinf(a), 0, 0 }, \
|
||||
{ -sinf(a), cosf(a), 0, 0 }, \
|
||||
{ 0, 0, 1, 0 }, \
|
||||
{ 0, 0, 0, 1 }, \
|
||||
}
|
||||
|
||||
vec3_t vec3_sub(vec3_t v, vec3_t u);
|
||||
float vec3_len(vec3_t v);
|
||||
vec3_t vec3_norm(vec3_t v);
|
||||
float vec3_dot(vec3_t v, vec3_t u);
|
||||
vec3_t vec3_cross(vec3_t v, vec3_t u);
|
||||
|
||||
mat4_t mat4_mul(mat4_t m, mat4_t n);
|
||||
mat4_t mat4_lookat(vec3_t camera, vec3_t target, vec3_t up);
|
||||
mat4_t mat4_perspective(float aspect, float fov, float near, float far);
|
||||
|
||||
#endif
|
||||
Reference in new issue
Block a user