9 #ifndef MRPT_MATH_WRAP2PI_H 10 #define MRPT_MATH_WRAP2PI_H 12 #define _USE_MATH_DEFINES // (For VS to define M_PI, etc. in cmath) 31 a = fmod(
a, static_cast<T>(2.0*
M_PI) );
32 if (was_neg)
a+=
static_cast<T
>(2.0*
M_PI);
69 template <
class VECTOR>
72 const size_t N=
x.size();
73 for (
size_t i=0;i<N;i++)
77 double Ap =
x[i]-
x[i-1];
T angDistance(T from, T to)
Computes the shortest angular increment (or distance) between two planar orientations, such that it is constrained to [-pi,pi] and is correct for any combination of angles (e.g.
void wrapToPiInPlace(T &a)
Modifies the given angle to translate it into the ]-pi,pi] range.
T wrapTo2Pi(T a)
Modifies the given angle to translate it into the [0,2pi[ range.
T wrapToPi(T a)
Modifies the given angle to translate it into the ]-pi,pi] range.
void wrapTo2PiInPlace(T &a)
Modifies the given angle to translate it into the [0,2pi[ range.
This is the global namespace for all Mobile Robot Programming Toolkit (MRPT) libraries.
void unwrap2PiSequence(VECTOR &x)
Modify a sequence of angle values such as no consecutive values have a jump larger than PI in absolut...
GLubyte GLubyte GLubyte a