/* copyright (c) 2007 magnus auvinen, see licence.txt for more info */ #ifndef BASE_MATH_H #define BASE_MATH_H #include template inline T clamp(T val, T min, T max) { if(val < min) return min; if(val > max) return max; return val; } inline float sign(float f) { return f<0.0f?-1.0f:1.0f; } inline int round(float f) { if(f > 0) return (int)(f+0.5f); return (int)(f-0.5f); } template inline T mix(const T a, const T b, TB amount) { return a + (b-a)*amount; } inline float frandom() { return rand()/(float)(RAND_MAX); } const float pi = 3.1415926535897932384626433f; template inline T min(T a, T b) { return a inline T max(T a, T b) { return a>b?a:b; } template inline T min(T a, T b, T c) { return min(min(a,b),c); } template inline T max(T a, T b, T c) { return max(max(a,b),c); } #endif // BASE_MATH_H