aboutsummaryrefslogtreecommitdiff
path: root/mons_3d/include/transform.h
diff options
context:
space:
mode:
Diffstat (limited to 'mons_3d/include/transform.h')
-rw-r--r--mons_3d/include/transform.h36
1 files changed, 36 insertions, 0 deletions
diff --git a/mons_3d/include/transform.h b/mons_3d/include/transform.h
new file mode 100644
index 0000000..840dfc2
--- /dev/null
+++ b/mons_3d/include/transform.h
@@ -0,0 +1,36 @@
+#ifndef MONS_TRANSFORM_H
+#define MONS_TRANSFORM_H
+
+#include "mons_math/mat4.h"
+#include "mons_math/vec3.h"
+#include "mons_math/quat.h"
+
+typedef struct mons_transform {
+ mons_vec3 translation;
+ mons_vec3 scale;
+ mons_quat rotation;
+} mons_transform;
+
+void mons_transform_translate(mons_transform *transform, struct mons_vec3 translation);
+void mons_transform_rotate(mons_transform *transform, struct mons_quat rotation);
+void mons_transform_scale(mons_transform *transform, struct mons_vec3 scale);
+
+mons_mat4 mons_transform_matrix(mons_transform transform);
+
+void mons_transform_set_translation(mons_transform *transform, struct mons_vec3 translation);
+void mons_transform_set_rotation(mons_transform *transform, struct mons_quat rotation);
+void mons_transform_set_scale(mons_transform *transform, struct mons_vec3 scale);
+
+struct mons_vec3 mons_transform_forward(mons_transform transform);
+struct mons_vec3 mons_transform_up(mons_transform transform);
+struct mons_vec3 mons_transform_right(mons_transform transform);
+
+void mons_transform_look_at(mons_transform *transform, mons_vec3 point, mons_vec3 up);
+
+#define MONS_TRANSFORM_IDENTITY (mons_transform) {\
+ MONS_VEC3_ZERO,\
+ MONS_VEC3_ONE,\
+ MONS_QUAT_IDENTITY,\
+}
+
+#endif