#define MATH_PI 3.1415926535897932384626433832795
#define ToRadians(x) (float)(((x) * MATH_PI / 180.0f))
#define ToDegrees(x) (float)(((x) * 180.0f / MATH_PI))
template<typename T>
inline T clamp(const T &a, const T &min, const T &max) {
if (a < min) return min;
else if (a > max) return max;
else return a;
}
template<typename T>
inline T linearInterpolation(const T &a, const T &b, const T &val){
return a * val + (1 - val) * b;
}
template<typename T>
inline int sinI(T num){return (int)sin(num); }
template<typename T>
inline float sinF(T num){return (float)sin(num); }
template<typename T>
inline int cosI(T num){return (int)cos(num); }
template<typename T>
inline float cosF(T num){return (float)cos(num); }
template<typename T>
inline bool eq(float a, T b){return !(a < b || a >= b); }
template<typename T>
inline bool gq(float a, T b){return !(a < b || a >= b); }