#ifndef __JROTATOR3D__ #define __JROTATOR3D__ #include #include "JGeometry3D/JMatrix3D.hh" #include "JGeometry3D/JOmega3D.hh" namespace JGEOMETRY3D { /** * Type definition of rotation set. */ typedef std::vector JRotator3D_t; /** * Rotation set. */ class JRotator3D : public JRotator3D_t { public: /** * Default constructor. */ JRotator3D() : JRotator3D_t() {} /** * Constructor. * * \param omega direction set */ JRotator3D(const JOmega3D_t& omega) : JRotator3D_t() { if (!omega.empty()) { JRotation3D R(*omega.begin()); push_back(R); for (JOmega3D_t::const_iterator i = omega.begin(); ++i != omega.end(); ) { JRotation3D r(*i); push_back(r.multiply(R.transpose())); R = JRotation3D(*i); } push_back(R.transpose()); } } }; } #endif