1 #ifndef GeometryVector_Geom_Phi_h
2 #define GeometryVector_Geom_Phi_h
28 template <
typename T1,
typename Range>
31 template <
typename T1>
36 value = std::fmod(value, static_cast<T1>(
twoPi()));
45 template <
typename T1>
51 template <
typename T1,
typename Range = MinusPiToPi>
69 template <
typename T2,
typename Range1>
126 template <
typename T1,
typename Range>
132 template <
typename T1,
typename Range>
137 template <
typename T1,
typename Range,
typename Scalar>
142 template <
typename T1,
typename Range,
typename Scalar>
148 template <
typename T1,
typename Range>
153 template <
typename T1,
typename Range,
typename Scalar>
158 template <
typename T1,
typename Range,
typename Scalar>
164 template <
typename T1,
typename Range,
typename Scalar>
169 template <
typename T1,
typename Range>
175 template <
typename T1,
typename Range>
180 template <
typename T1,
typename Range>
186 template <
typename T>
bool nearEqual(const Phi< T1, Range > &angle, float tolerance=0.001) const
bool nearZero(float tolerance=1.0_deg) const
void normalize(T1 &value)
static void normalize(T1 &value)
constexpr NumType convertRadToDeg(NumType radians)
T1 value() const
Explicit access to value in case implicit conversion not OK.
Phi & operator/=(const T1 &a)
Phi & operator+=(const Phi &a)
Phi< T1, Range > operator-(const Phi< T1, Range > &a)
Phi & operator+=(const T1 &a)
Standard arithmetics.
Abs< T >::type abs(const T &t)
Phi & operator-=(const T1 &a)
T1 operator/(const Phi< T1, Range > &a, const Phi< T1, Range > &b)
Division.
Phi()
Default constructor does not initialise - just as double.
Phi & operator-=(const Phi &a)
constexpr valType make0To2pi(valType angle)
static void normalize(T1 &value)
Phi< T1, Range > operator*(const Phi< T1, Range > &a, const Scalar &b)
Multiplication with scalar, does not change the precision.
float normalize(float in)
Phi & operator*=(const T1 &a)
Phi< T1, Range > operator+(const Phi< T1, Range > &a, const Phi< T1, Range > &b)
Addition.
T angle(T x1, T y1, T z1, T x2, T y2, T z2)