From 42b0d16593dd10088b15245e63dd0f34f2e67a51 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20GUEZO?= Date: Fri, 29 Aug 2025 21:52:25 +0200 Subject: [PATCH] feat: add rotation function and add functions to cam.h --- src/cam.c | 42 ++++++++++++++++++++++++++++++++++++++++++ src/cam.h | 8 +++++++- 2 files changed, 49 insertions(+), 1 deletion(-) diff --git a/src/cam.c b/src/cam.c index 957f87a..091d5e3 100644 --- a/src/cam.c +++ b/src/cam.c @@ -59,4 +59,46 @@ Mat4f_t lookAt(Vec4f_t* eye, Vec4f_t* center, Vec4f_t* up) }; return mat4f_from_array(m); +} + +Mat4f_t rotateX(float angle) +{ + Mat4f_t r = mat4f_identity(); + float c = cosf(angle); + float s = sinf(angle); + + r.m[5] = c; + r.m[6] = -s; + r.m[9] = s; + r.m[10] = c; + + return r; +} + +Mat4f_t rotateY(float angle) +{ + Mat4f_t r = mat4f_identity(); + float c = cosf(angle); + float s = sinf(angle); + + r.m[0] = c; + r.m[2] = s; + r.m[8] = -s; + r.m[10] = c; + + return r; +} + +Mat4f_t rotateZ(float angle) +{ + Mat4f_t r = mat4f_identity(); + float c = cosf(angle); + float s = sinf(angle); + + r.m[0] = c; + r.m[1] = -s; + r.m[4] = s; + r.m[5] = c; + + return r; } \ No newline at end of file diff --git a/src/cam.h b/src/cam.h index f533b32..366dbb3 100644 --- a/src/cam.h +++ b/src/cam.h @@ -3,4 +3,10 @@ Mat4f_t perspCam(float fov, float asp, float near, float far); Vec4f_t* normCoord_r(Vec4f_t* vec); -Vec4f_t* viewport_r(Vec4f_t* vec, float width, float height); \ No newline at end of file +Vec4f_t* viewport_r(Vec4f_t* vec, float width, float height); + +Mat4f_t lookAt(Vec4f_t* eye, Vec4f_t* center, Vec4f_t* up); + +Mat4f_t rotateX(float angle); +Mat4f_t rotateY(float angle); +Mat4f_t rotateZ(float angle); \ No newline at end of file