Hybrid A* Planner
 All Classes Namespaces Files Functions Variables Friends Pages
helper.h
Go to the documentation of this file.
1 
6 #ifndef HELPER
7 #define HELPER
8 
9 #include <cmath>
10 #include <algorithm>
11 
12 #include "constants.h"
13 namespace HybridAStar {
18 namespace Helper {
19 
25 static inline float normalizeHeading(float t) {
26  if ((int)t <= 0 || (int)t >= 360) {
27  if (t < -0.1) {
28  t += 360.f;
29  } else if ((int)t >= 360) {
30  t -= 360.f;
31  } else {
32  t = 0;
33  }
34  }
35 
36  return t;
37 }
38 
44 static inline float normalizeHeadingRad(float t) {
45  if (t < 0) {
46  t = t - 2.f * M_PI * (int)(t / (2.f * M_PI));
47  return 2.f * M_PI + t;
48  }
49 
50  return t - 2.f * M_PI * (int)(t / (2.f * M_PI));
51 }
52 
58 static inline float toDeg(float t) {
59  return normalizeHeadingRad(t) * 180.f / M_PI ;
60 }
61 
67 static inline float toRad(float t) {
68  return normalizeHeadingRad(t / 180.f * M_PI);
69 }
70 
76 static inline float clamp(float n, float lower, float upper) {
77  return std::max(lower, std::min(n, upper));
78 }
79 
80 }
81 }
82 
83 #endif // HELPER
84 
This is a collection of constants that are used throughout the project.