/* math/functions.h This file is part of the Osirion project and is distributed under the terms of the GNU General Public License version 2 */ #ifndef __INCLUDED_MATH_FUNCTIONS_H__ #define __INCLUDED_MATH_FUNCTIONS_H__ #include #include #include namespace math { /// return the smallest of two float values float min(float a, float b); /// return the smallest of two integers int min(int a, int b); /// return the largest of two float values float max(float a, float b); /// return the largest of two integers int max(int a, int b); /// returns a random float /** The value returned will be in the interval [0-max] * @param max the maximum value returned **/ float randomf(const float max = 1); /// returns a random integer /** The value returned will be in the interval [0-(max-1)] * @param max the maximum value returned **/ unsigned int randomi(const unsigned int max); /// return the sign of a float value float sgnf(float value); /// return an angle in the ]-180,180] range float degrees180f(float angle); /// return an angle in the [0,360[ range float degrees360f(float angle); /// clamp a float to a specified range inline void clamp(float &value, const float min = 0.0f, const float max = 1.0f) { if (value < min) value = min; else if (value > max) value = max; } /// return the absolute value of a float inline float absf(float f) { if (f < 0) return -f; else return f; } } // namespace math #endif // __INCLUDED_MATH_FUNCTIONS_H__