From d98c4fe440f2abe3a6682e9e7f9a439fe2540a21 Mon Sep 17 00:00:00 2001 From: epoch Date: Thu, 9 Feb 2017 02:12:42 -0600 Subject: converted more things to use the radians and degrees structures, fixed up distance between camera stuff (try using p and l to change during runtime) and got rid of a couple things that were commented out anyway. --- src/math.c | 29 ++++++++++++++++------------- 1 file changed, 16 insertions(+), 13 deletions(-) (limited to 'src/math.c') diff --git a/src/math.c b/src/math.c index 491d6a3..0f74f3d 100644 --- a/src/math.c +++ b/src/math.c @@ -1,38 +1,41 @@ #include "math.h" -c3_t rotate_c3_xr(c3_t p1,c3_t p2,real xr) {//rotate y and z around camera based on xr (looking up and down) +//should these use the radians struct? + +c3_t rotate_c3_xr(c3_t p1,c3_t p2,radians xr) {//rotate y and z around camera based on xr (looking up and down) c2_t tmp; tmp=rotate_c2((c2_t){p1.y,p1.z},(c2_t){p2.y,p2.z},xr); return (c3_t){p1.x,tmp.x,tmp.y}; } -c3_t rotate_c3_yr(c3_t p1,c3_t p2,real yr) {//rotate x and z around camera based on yr (looking left and right) +c3_t rotate_c3_yr(c3_t p1,c3_t p2,radians yr) {//rotate x and z around camera based on yr (looking left and right) c2_t tmp; tmp=rotate_c2((c2_t){p1.x,p1.z},(c2_t){p2.x,p2.z},yr); return (c3_t){tmp.x,p1.y,tmp.y}; } -c3_t rotate_c3_zr(c3_t p1,c3_t p2,real zr) {//rotate x and y around camera based on zr (cocking your head to a side) +c3_t rotate_c3_zr(c3_t p1,c3_t p2,radians zr) {//rotate x and y around camera based on zr (cocking your head to a side) c2_t tmp; tmp=rotate_c2((c2_t){p1.x,p1.y},(c2_t){p2.x,p2.y},zr); return (c3_t){tmp.x,tmp.y,p1.z}; } -c2_t rotate_c2(c2_t p1,c2_t p2,real dr) {//dr is in radians +c2_t rotate_c2(c2_t p1,c2_t p2,radians dr) {//dr is in radians c2_t p3; real d=distance2(p1,p2); - real r=points_to_angle(p1,p2); - r=r+dr; - p3.x=(sinl(r) * d) + p2.x; - p3.y=(cosl(r) * d) + p2.y; + radians r=points_to_angle(p1,p2); + r.r=r.r+dr.r; + p3.x=(sinl(r.r) * d) + p2.x; + p3.y=(cosl(r.r) * d) + p2.y; return p3; } real distance2(c2_t p1,c2_t p2) { return sqrtl(( (p1.x-p2.x)*(p1.x-p2.x) )+( (p1.y-p2.y)*(p1.y-p2.y) )); } -real d2r(int d) { - while(d<0) d+=360; - return (real)(d%360) / (real)180 * M_PIl; + +radians d2r(degrees d) { + while(d.d<0) d.d+=360; + return (radians){(real)(d.d%360) / (real)180 * M_PIl}; } -real points_to_angle(c2_t p1,c2_t p2) { +radians points_to_angle(c2_t p1,c2_t p2) { real a=atan2l(p2.y-p1.y,p2.x-p1.x); - return a>=0?a:M_PIl+M_PIl+a; + return (radians){a>=0?a:M_PIl+M_PIl+a}; } -- cgit v1.2.3