#ifndef __JEULERANGLE3D__ #define __JEULERANGLE3D__ #include "JIO/JSerialisable.hh" namespace JGEOMETRY3D { namespace { using JIO::JReader; using JIO::JWriter; } /** * Data structure for Euler angles in three dimensions. */ class JEulerAngle3D { public: /** * Default constructor. */ JEulerAngle3D() : __alpha(0.0), __beta (0.0), __gamma(0.0) {} /** * Constructor. * * \param alpha alpha angle [rad] * \param beta beta angle [rad] * \param gamma gamma angle [rad] */ JEulerAngle3D(const double alpha, const double beta, const double gamma) : __alpha(alpha), __beta (beta), __gamma(gamma) {} /** * Read JEulerAngle3D from input. * * \param in JReader * \param angle JEulerAngle3D * \return JReader */ friend inline JReader& operator>>(JReader& in, JEulerAngle3D& angle) { in >> angle.__alpha; in >> angle.__beta; in >> angle.__gamma; return in; } /** * Write JEulerAngle3D to output. * * \param out JWriter * \param angle JEulerAngle3D * \return JWriter */ friend inline JWriter& operator<<(JWriter& out, const JEulerAngle3D& angle) { out << angle.__alpha; out << angle.__beta; out << angle.__gamma; return out; } /** * Get alpha angle. * * \return alpha angle */ double getAlpha() const { return __alpha; } /** * Get beta angle. * * \return beta angle */ double getBeta() const { return __beta; } /** * Get gamma angle. * * \return gamma angle */ double getGamma() const { return __gamma; } protected: double __alpha; double __beta; double __gamma; }; } #endif