Changeset View
Changeset View
Standalone View
Standalone View
ps/trunk/source/maths/MathUtil.h
Show All 16 Lines | |||||
#ifndef INCLUDED_MATHUTIL | #ifndef INCLUDED_MATHUTIL | ||||
#define INCLUDED_MATHUTIL | #define INCLUDED_MATHUTIL | ||||
#define DEGTORAD(a) ((a) * ((float)M_PI/180.0f)) | #define DEGTORAD(a) ((a) * ((float)M_PI/180.0f)) | ||||
#define RADTODEG(a) ((a) * (180.0f/(float)M_PI)) | #define RADTODEG(a) ((a) * (180.0f/(float)M_PI)) | ||||
#define SQR(x) ((x) * (x)) | #define SQR(x) ((x) * (x)) | ||||
template <typename T> | template<typename T> | ||||
inline T Interpolate(const T& a, const T& b, float t) | inline T Interpolate(const T& a, const T& b, float t) | ||||
{ | { | ||||
return a + (b - a) * t; | return a + (b - a) * t; | ||||
} | } | ||||
template <typename T> | template<typename T> | ||||
inline T Clamp(T value, T min, T max) | inline T Clamp(T value, T min, T max) | ||||
{ | { | ||||
if (value <= min) | if (value <= min) | ||||
return min; | return min; | ||||
else if (value >= max) | else if (value >= max) | ||||
return max; | return max; | ||||
return value; | return value; | ||||
} | } | ||||
template<typename T> | |||||
inline T SmoothStep(T edge0, T edge1, T value) | |||||
{ | |||||
value = Clamp<T>((value - edge0) / (edge1 - edge0), 0, 1); | |||||
return value * value * (3 - 2 * value); | |||||
} | |||||
inline float sgn(float a) | inline float sgn(float a) | ||||
{ | { | ||||
if (a > 0.0f) | if (a > 0.0f) | ||||
return 1.0f; | return 1.0f; | ||||
if (a < 0.0f) | if (a < 0.0f) | ||||
return -1.0f; | return -1.0f; | ||||
return 0.0f; | return 0.0f; | ||||
} | } | ||||
#endif // INCLUDED_MATHUTIL | #endif // INCLUDED_MATHUTIL |
Wildfire Games · Phabricator