#ifndef _COMMON_MATH_HPP_ #define _COMMON_MATH_HPP_ #include #ifdef _MSC_VER #if defined(min) #undef min #endif #if defined(max) #undef max #endif #endif class Math { public: Math(void); virtual ~Math(); static int round(double someDouble); static int truncate(double someDouble); static float fraction(double someDouble); static float square(float someFloat); static int square(int someInt); static float radians(float someAngleDegrees); static float degrees(float someAngleRadians); static float cosDegrees(float someAngleDegrees); static float sinDegrees(float someAngleDegrees); static float tanDegrees(float someAngleDegrees); static double cos(double angleRadians); static double sin(double angleRadians); static double tan(double angleRadians); static float power(float powerBase,int exponent); static double power(double powerBase,double exponent); static int power(int powerBase,int exponent); static float log(float someFloat); static float exp10(float someFloat); static float sign(float someFloat); static int sign(int someInt); static int sqrt(int someInt); static float sqrt(float someFloat); static double sqrt(double someDouble); static float min(float floatOne,float floatTwo); static float max(float floatOne,float floatTwo); static float min(float floatOne,float floatTwo,float floatThree); static float max(float floatOne,float floatTwo,float floatThree); static float min(float floatOne,float floatTwo,float floatThree,float floatFour); static float max(float floatOne,float floatTwo,float floatThree,float floatFour); static long factorial(long nDegree); static float pi(void); static float pi2(void); static double piOver180(); static int abs(int value); private: static const double mscPI; static const double msc2PI; static const double mscLN10; static const double mscOneOverLN10; static const double mscPIOver180; static const double mscPIUnder180; }; inline Math::Math(void) { } inline Math::~Math() { } inline int Math::round(double someDouble) { return (int)(someDouble+0.5); } inline int Math::truncate(double someDouble) { return (int)someDouble; } inline float Math::fraction(double someDouble) { int wholeNumber((int)someDouble); return someDouble-(float)wholeNumber; } inline float Math::square(float someFloat) { return someFloat*someFloat; } inline int Math::square(int someInt) { return someInt*someInt; } inline float Math::radians(float someAngleDegrees) { return (someAngleDegrees*mscPIOver180); } inline float Math::degrees(float someAngleRadians) { return (someAngleRadians*mscPIUnder180); } inline float Math::cosDegrees(float someAngleDegrees) { return (::cos(radians(someAngleDegrees))); } inline float Math::sinDegrees(float someAngleDegrees) { return (::sin(radians(someAngleDegrees))); } inline float Math::tanDegrees(float someAngleDegrees) { return (::tan(radians(someAngleDegrees))); } inline float Math::log(float someFloat) { return (::log(someFloat)*mscOneOverLN10); } inline float Math::exp10(float someFloat) { return (::exp(someFloat*mscLN10)); } inline float Math::sign(float someFloat) { if(0.00>someFloat)return -1.00; else if(1.00someInt)return -1; else if(1