diff options
author | pryazha <pryadeiniv@mail.ru> | 2025-06-15 16:07:54 +0500 |
---|---|---|
committer | pryazha <pryadeiniv@mail.ru> | 2025-06-15 16:07:54 +0500 |
commit | f30a4eba44c77d5c743fe9308dc697a3225e8dd8 (patch) | |
tree | c171da2e8d1127409e2ffe9e56e2e027bac48e28 /prge_camera.c | |
parent | 92a8eb610f40c9770569ca63ca1bd705a6d3497d (diff) |
i don't even know
Diffstat (limited to 'prge_camera.c')
-rw-r--r-- | prge_camera.c | 99 |
1 files changed, 0 insertions, 99 deletions
diff --git a/prge_camera.c b/prge_camera.c deleted file mode 100644 index 0a79a74..0000000 --- a/prge_camera.c +++ /dev/null @@ -1,99 +0,0 @@ -Camera initcam(V3 pos, F32 fov, F32 near, F32 far, F32 yaw, F32 pitch, F32 roll) -{ - Camera c = { - .pos = pos, - .fov = fov, - .near = near, - .far = far, - .yaw = yaw, - .pitch = pitch, - .roll = roll, - }; - return c; -} - -MAT4 getfpviewmat(Camera *c) -{ - MAT4 v; - v = translmat4(MAT4_IDENTITY, invv3(c->pos)); - v = rotatemat4(v, v3(c->pitch, c->yaw, c->roll)); - return v; -} - -void getfpvecs(Camera *c, V3 *l, V3 *u, V3 *f) -{ - F32 angle, cp, sp, cy, sy, cr, sr; - - angle = DEG2RAD*c->pitch; - cp = f32cos(angle); - sp = f32sin(angle); - angle = DEG2RAD*c->yaw; - cy = f32cos(angle); - sy = f32sin(angle); - angle = DEG2RAD*c->roll; - cr = f32cos(angle); - sr = f32sin(angle); - - *l = v3(cy*cr, -cy*sr, sy); - *u = v3(sp*sy*cr+cp*sr, -sp*sy*sr+cp*cr, -sp*cy); - *f = v3(-cp*sy*cr+sp*sr, cp*sy*sr+sp*cr, cp*cy); -} - -MAT4 lookat(Camera c, V3 t, V3 wup) -{ - V3 f, r, u; - MAT4 transl, rotate, res; - - f = normv3(subv3(c.pos, t)); - r = normv3(crossv3(wup, f)); - u = crossv3(f, r); - - transl = translmat4(MAT4_IDENTITY, invv3(c.pos)); - rotate = transpmat4(rotateaxismat4(r, u, f)); - res = mulmat4(rotate, transl); - - return res; -} - -MAT4 ortho(F32 l, F32 r, F32 b, F32 t, F32 n, F32 f) -{ - MAT4 res; - - res = MAT4_IDENTITY; - res.m0.x = 2.0f/(r-l); - res.m1.y = 2.0f/(t-b); - res.m2.z = -2.0f/(f-n); - res.m3.x = -(r+l)/(r-l); - res.m3.y = -(t+b)/(t-b); - res.m3.z = -(f+n)/(f-n); - - return res; -} - -MAT4 persp(F32 fov, F32 ar, F32 n, F32 f) -{ - F32 r, t; - MAT4 res; - - r = n*f32tan(fov/2.0f*DEG2RAD); - t = r/ar; - - res = MAT4_IDENTITY; - res.m0.x = n/r; - res.m1.y = n/t; - res.m2.z = -(f+n)/(f-n); - res.m2.w = -1.0f; - res.m3.z = (-2.0f*f*n)/(f-n); - res.m3.w = 0.0f; - - return res; -} - -MAT4 camera_persp(Camera c, F32 ar) -{ - MAT4 res; - - res = persp(c.fov, ar, c.near, c.far); - - return res; -} |