[324]  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  #include <Vector3D.h>


 18 


 19  class OneAxisRotation_impl;


 20 


 21  namespace flair {


 22  namespace gui {


 23  class LayoutPosition;


 24  }


 25 


 26  namespace core {


 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  \enum RotationType_t


 42  \brief rotation type


 43  */


 44  enum RotationType_t {


 45  PreRotation,//rotation


 46  PostRotation//frame change


 47  };


 48  /*!


 49  * \brief Constructor


 50  *


 51  * Construct a OneAxisRotation at given position.


 52  *


 53  * \param position position to place the GroupBox


 54  * \param name name


 55  */


 56  OneAxisRotation(const gui::LayoutPosition *position, std::string name,RotationType_t rotationType);


 57 


 58  /*!


 59  * \brief Destructor


 60  *


 61  */


 62  ~OneAxisRotation();


 63 


 64  /*!


 65  * \brief Compute rotation


 66  *


 67  * \param vector Vector3Df to rotate


 68  */


 69  template <typename T> void ComputeRotation(core::Vector3D<T> &vector) const;


 70 


 71  /*!


 72  * \brief Compute rotation


 73  *


 74  * \param euler Euler angle to rotate


 75  */


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


 77 


 78  /*!


 79  * \brief Compute rotation


 80  *


 81  * \param quaternion Quaternion to rotate


 82  */


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


 84 


 85  /*!


 86  * \brief Compute rotation


 87  *


 88  * \param matrix RotationMatrix to rotate


 89  */


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


 91 


 92  /*!


 93  * \brief Get angle


 94  *


 95  * \return angle in radians


 96  */


 97  float GetAngle() const;


 98  int GetAxis() const;


 99 


 100  private:


 101  const class OneAxisRotation_impl *pimpl_;


 102  };


 103 


 104  } // end namespace core


 105  } // end namespace flair


 106 


 107  #endif // ONEAXISROTATION_H

