1  // %flair:license{


2  // This file is part of the Flair framework distributed under the


3  // CECILLC License, Version 1.0.


4  // %flair:license}


5  /*!


6  * \file OneAxisRotation.h


7  * \brief Class defining a rotation around one axis


8  * \author Guillaume Sanahuja, Copyright Heudiasyc UMR UTC/CNRS 7253


9  * \date 2013/04/17


10  * \version 4.0


11  */


12 


13  #ifndef ONEAXISROTATION_H


14  #define ONEAXISROTATION_H


15 


16  #include <GroupBox.h>


17 


18  class OneAxisRotation_impl;


19 


20  namespace flair {


21  namespace gui {


22  class LayoutPosition;


23  }


24 


25  namespace core {


26  class Vector3D;


27  class Euler;


28  class Quaternion;


29  class RotationMatrix;


30 


31  /*! \class OneAxisRotation


32  *


33  * \brief Class defining a rotation around one axis


34  *


35  * Axe and value of the rotation are placed in a GroupBox on ground station.


36  *


37  */


38  class OneAxisRotation : public gui::GroupBox {


39  public:


40  /*!


41  * \brief Constructor


42  *


43  * Construct a OneAxisRotation at given position.


44  *


45  * \param position position to place the GroupBox


46  * \param name name


47  */


48  OneAxisRotation(const gui::LayoutPosition *position, std::string namel);


49 


50  /*!


51  * \brief Destructor


52  *


53  */


54  ~OneAxisRotation();


55 


56  /*!


57  * \brief Compute rotation


58  *


59  * \param vector Vector3D to rotate


60  */


61  void ComputeRotation(core::Vector3D &vector) const;


62 


63  /*!


64  * \brief Compute rotation


65  *


66  * \param euler Euler angle to rotate


67  */


68  void ComputeRotation(core::Euler &euler) const;


69 


70  /*!


71  * \brief Compute rotation


72  *


73  * \param quaternion Quaternion to rotate


74  */


75  void ComputeRotation(core::Quaternion &quaternion) const;


76 


77  /*!


78  * \brief Compute rotation


79  *


80  * \param matrix RotationMatrix to rotate


81  */


82  void ComputeRotation(core::RotationMatrix &matrix) const;


83 


84  float GetAngle() const;


85  int GetAxis() const;


86 


87  private:


88  const class OneAxisRotation_impl *pimpl_;


89  };


90 


91  } // end namespace core


92  } // end namespace flair


93 


94  #endif // ONEAXISROTATION_H

