/** * This is a library of trigonmetric functions acting upon proper * angles and not radians. Lifted from the Risoe tascom code * * March 2005 */ #include #include "trigd.h" /* define constants */ #ifndef PI #define PI (3.1415926536) /* pi */ #endif #define DEGREE_RAD (PI/180.0) /* Radians per degree */ /*******************************************************************************/ double Sign(double d) { if(d < .0){ return -1; } else { return 1; } } /******************************************************************************* * Sinus of angle in degrees. *******************************************************************************/ extern double Sind (double x) { return (sin (x*DEGREE_RAD)); } /******************************************************************************* * Tangens of angle in degrees. *******************************************************************************/ extern double Tand(double x) { return (tan(x*DEGREE_RAD)); } /******************************************************************************* * cotangens of angle in degrees *****************************************************************************/ extern double Cotd(double x){ if(tan(x*DEGREE_RAD) > .00001){ return (1./tan(x*DEGREE_RAD)); } else { return 0; } } /******************************************************************************* * Cosinus of angle in degrees. *******************************************************************************/ extern double Cosd (double x) { return (cos (x*DEGREE_RAD)); } /******************************************************************************* * Atan of angle in degrees. *******************************************************************************/ extern double Atand (double x) { double data; data = (atan(x)/DEGREE_RAD); return (data); } /******************************************************************************* * Atan of angle in degrees. *******************************************************************************/ extern double Atan2d (double x, double y) { double data; data = (atan2(x,y)/DEGREE_RAD); return (data); } /******************************************************************************* * Atan2 of angle in degrees. *******************************************************************************/ extern double Atand2 (double x) { double data; data = (atan(x)/DEGREE_RAD); return (data); } /******************************************************************************* * Acos of angle in degrees. *******************************************************************************/ extern double Acosd (double x) { double data; data = acos(x)/DEGREE_RAD; return (data); } /******************************************************************************* * Asin of angle in degrees. *******************************************************************************/ extern double Asind (double x) { double data; data = x*x; if (data == 1.0) return (180.00 - Sign (x)*90.00); else if (data > 1) { return (0); } else return (Atand (x/sqrt (1 - data))); }