Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #ifndef DEG_TRIG_H
- #define DEG_TRIG_H
- #include <math.h>
- #define _USE_MATH_DEFINES
- #define RAD_TO_DEG(x) (x)*(180.0/M_PI)
- #define DEG_TO_RAD(x) (x)*(M_PI/180.0)
- // FLOAT FUNCTIONS
- float my_atan2f_PIx2_rads(float y, float x)
- {
- float rads;
- rads = atan2f(y, x);
- if(rads < 0.0f)
- rads += (M_PI * 2);
- return rads;
- }
- float my_atan2f_deg(float y, float x)
- {
- float rads;
- float degs;
- rads = atan2f(y, x);
- if(rads < 0.0f)
- rads += (M_PI * 2);
- degs = RAD_TO_DEG(rads);
- /*if(degs < 0.0f) // Optional method
- degs += 360.0f;*/
- return degs;
- }
- float my_cosf_deg(float deg)
- {
- // It might also be a good idea to handle degs < -180º
- float rads;
- float new_degs = deg;
- while(new_degs > 180.0f)
- new_degs -= 360.0f;
- rads = DEG_TO_RAD(new_degs);
- return cosf(rads);
- }
- float my_sinf_deg(float deg)
- {
- float rads;
- float new_degs = deg;
- while(new_degs > 180.0f)
- new_degs -= 360.0f;
- rads = DEG_TO_RAD(new_degs);
- return sinf(rads);
- }
- float my_tanf_deg(float deg)
- {
- float rads;
- float new_degs = deg;
- while(new_degs > 180.0f)
- new_degs -= 360.0f;
- rads = DEG_TO_RAD(new_degs);
- return tanf(rads);
- }
- // NOD - North Orientated Display
- float my_nod_atan2f_deg(float y, float x)
- {
- float rads;
- float degs;
- rads = atan2f(y, x);
- if(rads < 0.0f)
- rads += (M_PI * 2);
- degs = RAD_TO_DEG(rads);
- if(degs >= 0.0f && degs <= 360.0f)
- degs += 90.0f;
- if(degs > 360.0f)
- degs -= 360.0f;
- return degs;
- }
- float my_nod_cosf_deg(float deg)
- {
- float rads;
- float new_degs = deg;
- new_degs -= 90;
- while(new_degs > 180.0f)
- new_degs -= 360.0f;
- rads = DEG_TO_RAD(new_degs);
- return cosf(rads);
- }
- float my_nod_sinf_deg(float deg)
- {
- float rads;
- float new_degs = deg;
- new_degs -= 90;
- while(new_degs > 180.0f)
- new_degs -= 360.0f;
- rads = DEG_TO_RAD(new_degs);
- return sinf(rads);
- }
- // DOUBLE FUNCTIONS (not overloaded)
- double my_atan2d_PIx2_rads(double y, double x)
- {
- double rads;
- rads = atan2f(y, x);
- if(rads < 0.0f)
- rads += (M_PI * 2);
- return rads;
- }
- double my_atan2d_deg(double y, double x)
- {
- double rads;
- double degs;
- rads = atan2f(y, x);
- if(rads < 0.0f)
- rads += (M_PI * 2);
- degs = RAD_TO_DEG(rads);
- /*if(degs < 0.0f) // Optional method
- degs += 360.0f;*/
- return degs;
- }
- double my_cosd_deg(double deg)
- {
- double rads;
- double new_degs = deg;
- while(new_degs > 180.0f)
- new_degs -= 360.0f;
- rads = DEG_TO_RAD(new_degs);
- return cosf(rads);
- }
- double my_sind_deg(double deg)
- {
- double rads;
- double new_degs = deg;
- while(new_degs > 180.0f)
- new_degs -= 360.0f;
- rads = DEG_TO_RAD(new_degs);
- return sinf(rads);
- }
- double my_tand_deg(double deg)
- {
- double rads;
- double new_degs = deg;
- while(new_degs > 180.0f)
- new_degs -= 360.0f;
- rads = DEG_TO_RAD(new_degs);
- return tanf(rads);
- }
- // NOD - North Orientated Display
- double my_nod_atan2d_deg(double y, double x)
- {
- double rads;
- double degs;
- rads = atan2f(y, x);
- if(rads < 0.0f)
- rads += (M_PI * 2);
- degs = RAD_TO_DEG(rads);
- if(degs >= 0.0f && degs <= 360.0f)
- degs += 90.0f;
- if(degs > 360.0f)
- degs -= 360.0f;
- return degs;
- }
- double my_nod_cosd_deg(double deg)
- {
- double rads;
- double new_degs = deg;
- new_degs -= 90;
- while(new_degs > 180.0f)
- new_degs -= 360.0f;
- rads = DEG_TO_RAD(new_degs);
- return cosf(rads);
- }
- double my_nod_sind_deg(double deg)
- {
- double rads;
- double new_degs = deg;
- new_degs -= 90;
- while(new_degs > 180.0f)
- new_degs -= 360.0f;
- rads = DEG_TO_RAD(new_degs);
- return sinf(rads);
- }
- // TODO:
- // acos(), asin(), secant?
- #endif
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement