diff options
Diffstat (limited to 'mons_3d/include/transform.h')
-rw-r--r-- | mons_3d/include/transform.h | 36 |
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 |