summaryrefslogtreecommitdiff
path: root/src/math.c
diff options
context:
space:
mode:
authorepoch <epoch@hacking.allowed.org>2017-02-09 02:12:42 -0600
committerepoch <epoch@hacking.allowed.org>2017-02-09 02:12:42 -0600
commitd98c4fe440f2abe3a6682e9e7f9a439fe2540a21 (patch)
treed9a84ae8d429c9cf0ead55d3e93599c9ba4dd9cb /src/math.c
parent15e1287f8bdd952ebce07fcd88381a9c2d836a61 (diff)
downloadhackvr-d98c4fe440f2abe3a6682e9e7f9a439fe2540a21.tar.gz
hackvr-d98c4fe440f2abe3a6682e9e7f9a439fe2540a21.zip
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.
Diffstat (limited to 'src/math.c')
-rw-r--r--src/math.c29
1 files changed, 16 insertions, 13 deletions
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};
}