diff options
Diffstat (limited to 'in_practice/breakout/my_math.h')
-rw-r--r-- | in_practice/breakout/my_math.h | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/in_practice/breakout/my_math.h b/in_practice/breakout/my_math.h new file mode 100644 index 0000000..29efb45 --- /dev/null +++ b/in_practice/breakout/my_math.h @@ -0,0 +1,34 @@ +#ifndef MY_MATH_H +#define MY_MATH_H + +#include "types.h" + +typedef struct {f32 x, y;} v2; +typedef struct {f32 x, y, z;} v3; +typedef struct {f32 x, y, z, w;} v4; +typedef struct {v4 c0, c1, c2, c3;} mat; + +#define mat_identity { \ + {1.0f, 0.0f, 0.0f, 0.0f}, \ + {0.0f, 1.0f, 0.0f, 0.0f}, \ + {0.0f, 0.0f, 1.0f, 0.0f}, \ + {0.0f, 0.0f, 0.0f, 1.0f}} + +#define f32pi 3.1415926535f +#define deg2rad(a) (a) * f32pi / 180.0f +#define rad2deg(a) (a) * 180.0f / f32pi + +extern v2 scale_v2(v2 v, f32 x); +extern v2 add_v2(v2 a, v2 b); +extern v2 v2a(f32 x); +extern v3 v3a(f32 x); +extern mat mul_mat(mat l, mat r); +extern mat make_scale_mat(v3 v); +extern mat make_rotate_mat(v3 x, v3 y, v3 z); +extern mat make_translate_mat(v3 v); +extern mat scale_mat(mat m, v3 v); +extern mat rotate_mat(mat m, v3 angles); +extern mat translate_mat(mat m, v3 v); +extern mat ortho(f32 l, f32 r, f32 b, f32 t, f32 n, f32 f); + +#endif |