Choreonoid  1.5
SceneDragProjector.h
Go to the documentation of this file.
1 
5 #ifndef CNOID_BASE_SCENE_DRAG_PROJECTOR_H
6 #define CNOID_BASE_SCENE_DRAG_PROJECTOR_H
7 
8 #include "SceneWidgetEditable.h"
9 #include "exportdecl.h"
10 
11 namespace cnoid {
12 
13 class SceneDragProjectorImpl;
14 
16 {
17 public:
19  virtual ~SceneDragProjector();
20 
21  enum DragMode { DRAG_NONE, DRAG_ROTATION, DRAG_TRANSLATION };
22 
23  int dragMode() const;
24  bool isDragging() const;
25 
26  void resetDragMode();
27 
28  void setInitialPosition(const Affine3& T);
29  void setInitialTranslation(const Vector3& p);
30  void setInitialRotation(const Matrix3& R);
31  const Affine3& initialPosition() const;
32 
33  // for 1-D rotation
34  void setRotationAxis(const Vector3& axis);
35  const Vector3& rotationAxis() const;
36 
37  // for 1-D translation
38  void setTranslationAxis(const Vector3& axis);
39  const Vector3& translationAxis() const;
40 
41  // for 2-D translation
42  void setTranslationPlaneNormal(const Vector3& normal);
43  void setTranslationAlongViewPlane();
44 
45  bool startRotation(const SceneWidgetEvent& event);
46  bool startTranslation(const SceneWidgetEvent& event);
47 
48  bool drag(const SceneWidgetEvent& event);
49  bool dragRotation(const SceneWidgetEvent& event);
50  bool dragTranslation(const SceneWidgetEvent& event);
51 
52  const Vector3& projectedPoint() const;
53  const Affine3& position() const;
54  const Matrix3& rotationMatrix() const;
55  double rotationAngle() const;
56  const AngleAxis& rotationAngleAxis() const;
57  const Vector3& translation() const;
58 
59 private:
60  SceneDragProjectorImpl* impl;
61 };
62 
63 }
64 
65 #endif
Eigen::AngleAxisd AngleAxis
Definition: EigenTypes.h:66
Eigen::Affine3d Affine3
Definition: EigenTypes.h:64
Definition: SceneDragProjector.h:15
DragMode
Definition: SceneDragProjector.h:21
Defines the minimum processing for performing pasing file for STL.
Definition: AbstractSceneLoader.h:9
Eigen::Vector3d Vector3
Definition: EigenTypes.h:58
#define CNOID_EXPORT
Definition: Util/exportdecl.h:37
Definition: SceneWidgetEditable.h:16
Eigen::Matrix3d Matrix3
Definition: EigenTypes.h:57