Oxygine  1
2g game engine
ScalarMath.h
1 #pragma once
2 #include "oxygine-include.h"
3 
4 #include <math.h>
5 #include <stdlib.h>
6 
7 namespace oxygine
8 {
9  template<class T>
10  inline T lerp(T a, T b, float v)
11  {
12  return T(a + (b - a) * v);
13  }
14 
15  namespace scalar
16  {
17 
18 #define MATH_PI 3.141592653589793f
19 
20  inline float randFloat(float start, float size)
21  {
22  return ((rand() % RAND_MAX) * size) / (float)RAND_MAX + start;
23  }
24 
25  inline double abs(double s)
26  {
27 #ifdef IW_SYS_MATH_H
28  return fabs(s);
29 #else
30  return ::fabs(s);
31 #endif
32  }
33 
34  inline float abs(float s)
35  {
36 #ifdef IW_SYS_MATH_H
37  return fabsf(s);
38 #else
39  return fabsf(s);
40 #endif
41  }
42 
43  inline float sign(float s)
44  {return s < 0 ? -1.0f : 1.0f;}
45 
46  inline double sign(double s)
47  {return s < 0 ? -1.0 : 1.0;}
48 
49  inline double sin(double s)
50  {return ::sin(s);}
51 
52  inline float sin(float s)
53  {return ::sinf(s);}
54 
55  inline double cos(double s)
56  {return ::cos(s);}
57 
58  inline float cos(float s)
59  {return ::cosf(s);}
60 
61  inline double acos(double s)
62  {return ::acos(s);}
63 
64  inline float acos(float s)
65  {return ::acosf(s);}
66 
67  inline double tan(double s)
68  {return ::tan(s);}
69 
70  inline float tan(float s)
71  {return ::tanf(s);}
72 
73  inline double sqrt(double s)
74  {return ::sqrt(s);}
75 
76  inline float sqrt(float s)
77  {return ::sqrtf(s);}
78 
79  inline float sqrt(int s)
80  {return ::sqrtf((float)s);}
81 
82  inline bool equal(double a, double b, const double eps = 10e-8)
83  {
84  return ((a < b + eps) && (a > b - eps)) ? true : false;
85  }
86 
87  inline bool equal(float a, float b, const float eps = (float)(10e-6))
88  {
89  return ((a < b + eps) && (a > b - eps)) ? true : false;
90  }
91 
92  template <class T>
93  inline T clamp(T v, T min_, T max_)
94  {
95  if (v < min_)
96  v = min_;
97  if (v > max_)
98  v = max_;
99  return v;
100  }
101  }
102 }
–oxgl-end–!
Definition: Actor.h:14