#ifndef __JANGLE2D__ #define __JANGLE2D__ #include #include "JIO/JSerialisable.hh" namespace JGEOMETRY2D { namespace { using JIO::JReader; using JIO::JWriter; } /** * Data structure for angle in two dimensions. */ class JAngle2D { public: /** * Default constructor. */ JAngle2D() : __phi(0.0) {} /** * Constructor. * * \param phi phi angle [rad] */ JAngle2D(const double phi) : __phi(phi) {} /** * Read JAngle2D from input. * * \param in JReader * \param angle JAngle2D * \return JReader */ friend inline JReader& operator>>(JReader& in, JAngle2D& angle) { in >> angle.__phi; return in; } /** * Write JAngle2D to output. * * \param out JWriter * \param angle JAngle2D * \return JWriter */ friend inline JWriter& operator<<(JWriter& out, const JAngle2D& angle) { out << angle.__phi; return out; } /** * Get phi angle. * * \return phi angle */ double getPhi() const { return __phi; } /** * Get x direction. * * \return x direction */ double getDX() const { return cos(__phi); } /** * Get y direction. * * \return y direction */ double getDY() const { return sin(__phi); } protected: double __phi; }; } #endif