X-Git-Url: https://harrygodden.com/git/?a=blobdiff_plain;f=camera.h;h=7bd14e64e6c0eefd4db4d71d6d79cbb4fe8d2558;hb=76315944e5a98838163e0aba8601ed3522f0724d;hp=c1744d86f23f556deaad3f4e7c2bfc55a8f122ea;hpb=22f62f001f21d1b91fefd9fc495c122d9ddf205a;p=carveJwlIkooP6JGAAIwe30JlM.git diff --git a/camera.h b/camera.h index c1744d8..7bd14e6 100644 --- a/camera.h +++ b/camera.h @@ -29,11 +29,10 @@ static void camera_lerp_angles( v3f a, v3f b, float t, v3f d ){ d[2] = vg_lerpf( a[2], b[2], t ); } +/* lerp position, fov, and angles */ static void camera_lerp( camera *a, camera *b, float t, camera *d ){ v3_lerp( a->pos, b->pos, t, d->pos ); - d->angles[0] = vg_alerpf( a->angles[0], b->angles[0], t ); - d->angles[1] = vg_lerpf( a->angles[1], b->angles[1], t ); - d->angles[2] = vg_lerpf( a->angles[2], b->angles[2], t ); + camera_lerp_angles( a->angles, b->angles, t, d->angles ); d->fov = vg_lerpf( a->fov, b->fov, t ); } @@ -43,6 +42,16 @@ static void camera_copy( camera *a, camera *d ){ d->fov = a->fov; } +static void m4x3_transform_camera( m4x3f m, camera *cam ){ + m4x3_mulv( m, cam->pos, cam->pos ); + + v3f v0; + v3_angles_vector( cam->angles, v0 ); + m3x3_mulv( m, v0, v0 ); + v3_normalize( v0 ); + v3_angles( v0, cam->angles ); +} + /* * 1) [angles, pos] -> transform */