Skip to content

EulerAngles

EulerAngles is a static storage container which stores a vectors of three double values representing Euler angles, their cosines and sines. It also stores the corresponding Euler convention.

The Euler conventions are set using the dedicated constants:

cpp
enum EulerConvention{ 
  XZX, XYX, YXY, YZY, ZXZ, ZYZ, /* proper Euler angles*/
  XYZ, YZX, ZXY, XZY, ZYX, YXZ, /* Tait–Bryan angles*/
  NNN /*default convention -> convention not set*/};

and corresponding strings

cpp
const std::vector<std::string>EulerConventionS{
  "XZX", "XYX", "YXY", "YZY", "ZXZ", "ZYZ", /* proper Euler angles*/
  "XYZ", "YZX", "ZXY", "XZY", "ZYX", "YXZ", /* Tait–Bryan angles*/
  "NNN" /*default convention -> convention not set*/};

The data inside of the EulerAngles container is manipulated using a number of dedicated methods:

Accessible storages

cpp
std::array<double,3> Q;

Three Euler angles.

cpp
std::array<double,3> CosQ;

Cosines of the stored Euler angles for faster computations.

cpp
std::array<double,3> SinQ;

Sines of the stored Euler angles for faster computations.

Constructors

cpp
EulerAngles();

Default constructor.

cpp
EulerAngles(std::initializer_list<double> Angles,
           EulerConvention locConvention);

Constructor, initializes the Euler angles using initializer list and convention.

cpp
EulerAngles(const EulerAngles& rhs);

Copy constructor. Initializes current container with the copy of the rhs.

Arithmetic and logic operations

cpp
EulerAngles& operator=(const EulerAngles& rhs);

Assignment operator.

cpp
EulerAngles  operator+(const EulerAngles& rhs) const;

Returns the sum of two Euler angles.

cpp
EulerAngles  operator-(const EulerAngles& rhs) const;

Returns the difference of two Euler angles.

cpp
EulerAngles& operator+=(const EulerAngles& rhs);

Adds rhs to the current Euler angles.

cpp
EulerAngles& operator-=(const EulerAngles& rhs);

Subtracts rhs from the current Euler angles.

cpp
EulerAngles  operator* (const double rhs) const;

Returns Euler angles multiplied by the specified factor.

cpp
EulerAngles& operator*=(const double rhs);

Multiplies current Euler angles by the specified factor.

cpp
bool operator==(const EulerAngles& rhs);

Comparison operator. Returns true if two EulerAngles are of the same convention and their values are within DBL_EPSILON from one another.

Data access and manipulation methods

cpp
void set(const double q1, const double q2, const double q3,
         EulerConvention locConvention);

Sets Euler angles to the specified values following given convention.

cpp
void setTrigonometricFunctions();

Sets internal sines and cosines of Euler angles for faster computations.

cpp
void set_to_zero(void);

Sets Euler angles to zero.

cpp
void set_convention(const EulerConvention locConvention);

Sets Euler angle convention.

cpp
void set(dMatrix3x3 RotMatrix, EulerConvention locConvention);

Sets Euler angles form the rotation matrix using given convention.

cpp
void set(Quaternion Quat, EulerConvention locConvention, const bool active = true);

Sets Euler angles from the quaternion using specified convention and type of rotation (active/passive).

cpp
void set(dVector3 Axis, const double Angle);

Sets Euler angles from axis-angle entries.

cpp
void add(const double q1, const double q2, const double q3);

Adds specified values to the corresponding Euler angles.

cpp
EulerAngles get_degree(void) const;

Returns Euler angles in degrees.

cpp
std::string get_convention(void) const;

Returns Euler angle convention.

cpp
static EulerConvention to_EulerConvention(const std::string& s);

Converts Euler angles' convention string to the corresponding enum entry.

cpp
dMatrix3x3 getRotationMatrix() const;

Returns rotation matrix corresponding to Euler angles.

cpp
Quaternion getQuaternion(const bool Active = true) const;

Returns quaternion corresponding to Euler angles considering rotation type (active/passive).

cpp
void getAxisAngle(dVector3& Axis, double& Angle);

Returns axis-angle representation of the stored Euler angles.

Read/write methods

cpp
std::string print(void) const;

Returns formatted string containing Euler angles and corresponding convention.

cpp
std::string print_degree(void) const;

Returns formatted string containing Euler angles and corresponding convention in degrees.

cpp
std::string print_entire(void) const;

Returns formatted string containing full container content.

Released under the GNU GPLv3 License.