jrlMathTools::Angle Class Reference

This class implements simple computations on angles. More...

#include <jrl/mathtools/angle.hh>

Public Member Functions

 Angle ()
 
 Angle (const double &angle)
 
 Angle (const Angle &angle)
 Copy Constructor. More...
 
 ~Angle ()
 Trivial destructor. More...
 
const double & value () const
 Angle value. More...
 
double degree () const
 Return value in degrees (for output only!). More...
 
 operator const double & () const
 Cast into a double. More...
 
Angleoperator= (const Angle &angle)
 Operator =. More...
 
Angleoperator= (const double &value)
 Operator = with a double. More...
 
Angle interpolate (const double &alpha, const Angle &angle) const
 Interpolation between two angles. More...
 
std::ostream & display (std::ostream &os) const
 output to a stream. More...
 
double distance (const Angle &angle) const
 Distance on unit circle. More...
 
Angle operator+ (const Angle &angle) const
 Arithmetic operators overload. More...
 
Angle operator- (const Angle &angle) const
 
Angleoperator+= (const Angle &rhs)
 
Angleoperator-= (const Angle &rhs)
 
template<typename T >
Angle operator+ (const T &angle) const
 
template<typename T >
Angle operator- (const T &angle) const
 
template<typename T >
Angleoperator+= (const T &rhs)
 
template<typename T >
Angleoperator-= (const T &rhs)
 
template<typename T >
Angle operator* (const T &rhs) const
 
template<typename T >
Angle operator*= (const T &rhs) const
 
template<typename T >
Angle operator/= (const T &rhs) const
 

Static Public Member Functions

static Angle radian (const double &value)
 Named constructors. More...
 
static Angle degree (const double &value)
 

Protected Member Functions

void setBetweenMinusAndPlusPI ()
 Set angle between -PI and PI. More...
 
void set (const double &value)
 Update angle value. More...
 

Protected Attributes

double angle_
 angular value. More...
 

Detailed Description

This class implements simple computations on angles.

All angles MUST be expressed in radian.

Facilities are provided for degree/radian conversion for display/debugging only.

Constructor & Destructor Documentation

◆ Angle() [1/3]

jrlMathTools::Angle::Angle ( )
inline

◆ Angle() [2/3]

jrlMathTools::Angle::Angle ( const double &  angle)
inline

◆ Angle() [3/3]

jrlMathTools::Angle::Angle ( const Angle angle)
inline

Copy Constructor.

◆ ~Angle()

jrlMathTools::Angle::~Angle ( )
inline

Trivial destructor.

Member Function Documentation

◆ degree() [1/2]

static Angle jrlMathTools::Angle::degree ( const double &  value)
inlinestatic

◆ degree() [2/2]

double jrlMathTools::Angle::degree ( ) const
inline

Return value in degrees (for output only!).

References jrlMathTools::radianToDegree(), and value().

◆ display()

std::ostream& jrlMathTools::Angle::display ( std::ostream &  os) const
inline

output to a stream.

References angle_.

Referenced by jrlMathTools::display().

◆ distance()

double jrlMathTools::Angle::distance ( const Angle angle) const
inline

Distance on unit circle.

References value().

◆ interpolate()

Angle jrlMathTools::Angle::interpolate ( const double &  alpha,
const Angle angle 
) const
inline

Interpolation between two angles.

Parameters
alphainterpolation parameter between 0 and 1.
anglesecond angle of interpolation.
Returns
an angle between this one and angle along the shortest arc.
  • if alpha = 0, return this angle,
  • if alpha = 1, return angle.

References Angle(), and value().

◆ operator const double &()

jrlMathTools::Angle::operator const double & ( ) const
inline

Cast into a double.

References value().

◆ operator*()

template<typename T >
Angle jrlMathTools::Angle::operator* ( const T &  rhs) const
inline

References Angle(), and angle_.

◆ operator*=()

template<typename T >
Angle jrlMathTools::Angle::operator*= ( const T &  rhs) const
inline

References value().

◆ operator+() [1/2]

Angle jrlMathTools::Angle::operator+ ( const Angle angle) const
inline

Arithmetic operators overload.

References Angle(), and value().

◆ operator+() [2/2]

template<typename T >
Angle jrlMathTools::Angle::operator+ ( const T &  angle) const
inline

References Angle(), and value().

◆ operator+=() [1/2]

Angle& jrlMathTools::Angle::operator+= ( const Angle rhs)
inline

References value().

◆ operator+=() [2/2]

template<typename T >
Angle& jrlMathTools::Angle::operator+= ( const T &  rhs)
inline

References value().

◆ operator-() [1/2]

Angle jrlMathTools::Angle::operator- ( const Angle angle) const
inline

References Angle(), and value().

◆ operator-() [2/2]

template<typename T >
Angle jrlMathTools::Angle::operator- ( const T &  angle) const
inline

References Angle(), and value().

◆ operator-=() [1/2]

Angle& jrlMathTools::Angle::operator-= ( const Angle rhs)
inline

References value().

◆ operator-=() [2/2]

template<typename T >
Angle& jrlMathTools::Angle::operator-= ( const T &  rhs)
inline

References value().

◆ operator/=()

template<typename T >
Angle jrlMathTools::Angle::operator/= ( const T &  rhs) const
inline

References value().

◆ operator=() [1/2]

Angle& jrlMathTools::Angle::operator= ( const Angle angle)
inline

Operator =.

References value().

◆ operator=() [2/2]

Angle& jrlMathTools::Angle::operator= ( const double &  value)
inline

Operator = with a double.

References value().

◆ radian()

static Angle jrlMathTools::Angle::radian ( const double &  value)
inlinestatic

Named constructors.

References Angle(), and value().

◆ set()

void jrlMathTools::Angle::set ( const double &  value)
inlineprotected

Update angle value.

References angle_, setBetweenMinusAndPlusPI(), and value().

◆ setBetweenMinusAndPlusPI()

void jrlMathTools::Angle::setBetweenMinusAndPlusPI ( )
inlineprotected

Set angle between -PI and PI.

References angle_, and M_PI.

Referenced by set().

◆ value()

Member Data Documentation

◆ angle_

double jrlMathTools::Angle::angle_
protected

angular value.

Referenced by display(), operator*(), set(), setBetweenMinusAndPlusPI(), and value().