summaryrefslogtreecommitdiff
path: root/in_practice/breakout/my_math.h
diff options
context:
space:
mode:
Diffstat (limited to 'in_practice/breakout/my_math.h')
-rw-r--r--in_practice/breakout/my_math.h34
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