Go to the documentation of this file.
22 template <
typename num_t,
typename return_t = num_t>
23 inline return_t
square(
const num_t x)
25 return static_cast<return_t
>(x * x);
33 return std::sqrt(x * x + y * y);
36 #ifdef DEG2RAD // functions are preferred over macros
43 #define M_PI 3.14159265358979323846
47 constexpr
inline double DEG2RAD(
const double x) {
return x *
M_PI / 180.0; }
49 constexpr
inline float DEG2RAD(
const float x)
51 return x * float(
M_PI) / 180.0f;
54 constexpr
inline double DEG2RAD(
const int x) {
return x *
M_PI / 180.0; }
56 constexpr
inline double RAD2DEG(
const double x) {
return x * 180.0 /
M_PI; }
58 constexpr
inline float RAD2DEG(
const float x)
60 return x * 180.0f / float(
M_PI);
63 #define M_PIl 3.14159265358979323846264338327950288L
64 #define M_2PIl (2.0L * 3.14159265358979323846264338327950288L)
67 constexpr
inline long double DEG2RAD(
const long double x)
69 return x *
M_PIl / 180.0;
72 constexpr
inline long double RAD2DEG(
const long double x)
74 return x * 180.0 /
M_PIl;
79 #define DEG2RAD DEG2RAD
80 #define RAD2DEG RAD2DEG
83 constexpr
inline double operator"" _deg(
long double v)
92 return x < 0 ? -1 : 1;
99 return (x == 0 || x == -0) ? 0 :
sign(x);
103 template <
typename T>
117 template <
typename T>
120 return std::max(a, b) - std::min(a, b);
123 template <
typename T>
124 inline const T
min3(
const T&
A,
const T& B,
const T& C)
126 return std::min<T>(
A, std::min<T>(B, C));
128 template <
typename T>
129 inline const T
max3(
const T&
A,
const T& B,
const T& C)
131 return std::max<T>(
A, std::max<T>(B, C));
135 template <
typename T>
138 return x > 0 ?
static_cast<int>(floor(
static_cast<double>(x)))
139 :
static_cast<int>(ceil(
static_cast<double>(x)));
144 template <
typename T,
typename K>
147 if (test_val < var) var =
static_cast<T
>(test_val);
151 template <
typename T,
typename K>
154 if (test_val > var) var =
static_cast<T
>(test_val);
158 template <
typename T>
159 inline void saturate(T& var,
const T sat_min,
const T sat_max)
161 if (var > sat_max) var = sat_max;
162 if (var < sat_min) var = sat_min;
166 template <
typename T>
167 inline T
saturate_val(
const T& value,
const T sat_min,
const T sat_max)
170 if (var > sat_max) var = sat_max;
171 if (var < sat_min) var = sat_min;
183 if (n <= 1)
throw std::invalid_argument(
"round2up: Overflow!");
189 inline float d2f(
const double d) {
return static_cast<float>(d); }
193 inline uint8_t
f2u8(
const float f) {
return static_cast<uint8_t
>(f * 255); }
196 inline float u8tof(
const uint8_t v) {
return v / 255.0f; }
const T min3(const T &A, const T &B, const T &C)
int sign(T x)
Returns the sign of X as "1" or "-1".
const T max3(const T &A, const T &B, const T &C)
uint8_t f2u8(const float f)
converts a float [0,1] into an uint8_t [0,255] (without checking for out of bounds)
This is the global namespace for all Mobile Robot Programming Toolkit (MRPT) libraries.
T abs_diff(const T a, const T b)
Efficient and portable evaluation of the absolute difference of two unsigned integer values (but will...
T hypot_fast(const T x, const T y)
Faster version of std::hypot(), to use when overflow is not an issue and we prefer fast code.
T saturate_val(const T &value, const T sat_min, const T sat_max)
Like saturate() but it returns the value instead of modifying the variable.
constexpr double RAD2DEG(const double x)
Radians to degrees.
float u8tof(const uint8_t v)
converts a uint8_t [0,255] into a float [0,1]
T round2up(T val)
Round up to the nearest power of two of a given number.
float d2f(const double d)
shortcut for static_cast<float>(double)
int fix(T x)
Rounds toward zero
void keep_max(T &var, const K test_val)
If the second argument is above the first one, set the first argument to this higher value.
void keep_min(T &var, const K test_val)
If the second argument is below the first one, set the first argument to this lower value.
return_t square(const num_t x)
Inline function for the square of a number.
constexpr double DEG2RAD(const double x)
Degrees to radians
int signWithZero(T x)
Returns the sign of X as "0", "1" or "-1".
void saturate(T &var, const T sat_min, const T sat_max)
Saturate the value of var (the variable gets modified) so it does not get out of [min,...
T lowestPositive(const T a, const T b)
Returns the smallest positive number among a and b.
Page generated by Doxygen 1.8.17 for MRPT 2.0.4 at Sat Jun 27 14:00:59 UTC 2020 | |