YAPOG  0.0.1
Yet Another Pokemon Online Game
MathHelper.hxx
Go to the documentation of this file.
1 #ifndef YAPOG_MATHHELPER_HXX
2 # define YAPOG_MATHHELPER_HXX
3 
4 # include <algorithm>
5 
6 namespace yap
7 {
8  template <typename T>
9  T MathHelper::Max (const T& left, const T& right)
10  {
11  return std::max (left, right);
12  }
13 
14  template <typename T>
15  T MathHelper::Min (const T& left, const T& right)
16  {
17  return std::min (left, right);
18  }
19 
20  template <typename T>
21  T MathHelper::Clamp (const T& value, const T& min, const T& max)
22  {
23  return value < min ? min : (value > max ? max : value);
24  }
25 
26  template <typename T>
27  T MathHelper::Floor (const T& number)
28  {
29  return std::floor (number);
30  }
31 
32  template <typename T1, typename T2>
33  int MathHelper::Pow (const T1& number, const T2& pow)
34  {
35  return std::pow (number, pow);
36  }
37 
38  template <typename T1, typename T2>
39  T1 MathHelper::Sqrt (const T1& number, const T2& pow)
40  {
41  T1 result = number;
42 
43  for (int i = 0; i < pow; i++)
44  result = std::sqrt (result);
45 
46  return result;
47  }
48 
49  template <typename T>
50  T MathHelper::Abs (const T& value)
51  {
52  return value < 0 ? -value : value;
53  }
54 
55  template <typename T>
56  T MathHelper::Cos (const T& angle)
57  {
58  return std::cos (angle);
59  }
60 
61  template <typename T>
62  T MathHelper::Sin (const T& angle)
63  {
64  return std::sin (angle);
65  }
66 } // namespace yap
67 
68 #endif // YAPOG_MATHHELPER_HXX