Choreonoid  1.5
SceneProjector.h
Go to the documentation of this file.
1 
5 #ifndef CNOID_BASE_SCENE_PROJECT_H
6 #define CNOID_BASE_SCENE_PROJECT_H
7 
8 #include "SceneWidgetEditable.h"
9 #include "exportdecl.h"
10 
11 namespace cnoid {
12 
14 {
15 public:
16  virtual ~SceneProjector();
17  virtual bool project(const SceneWidgetEvent& event, Vector3& out_projected) const = 0;
18 };
19 
20 
22 {
23 public:
25 
27  ScenePlaneProjector(const Vector3& normal, const Vector3& point);
28  void setPlane(const Vector3& normal, const Vector3& point);
29 
30  const Vector3& normal() const { return normal_; }
31  double d() const { return d_; }
32 
33  virtual bool project(const SceneWidgetEvent& event, Vector3& out_projected) const;
34 
35 private:
36  Vector3 normal_;
37  double d_;
38 
39  bool calcPlaneLineIntersection(
40  const Vector3& lineStart, const Vector3& lineEnd, Vector3& out_isect) const;
41 };
42 
43 
45 {
46 public:
48 
50  SceneCylinderProjector(const Vector3& center, double radius, double height, const Quat& rotation);
51 
52  void setCylinder(const Vector3& center, double radius, double height, const Quat& rotation);
53 
54  virtual bool project(const SceneWidgetEvent& event, Vector3& out_projected) const;
55 
56 protected:
58  double radius_;
59  double height_;
61 
62  bool calcUnitCylinderLineIntersection(
63  const Vector3& lineStart, const Vector3& lineEnd, Vector3& out_isectFront, Vector3& out_isectBack) const;
64  bool calcCylinderLineIntersection(
65  const Vector3d& lineStart, const Vector3& lineEnd, Vector3& out_isectFront, Vector3& out_isectBack) const;
66 };
67 
68 }
69 
70 #endif
Eigen::Quaterniond Quat
Definition: EigenTypes.h:69
double height_
Definition: SceneProjector.h:59
EIGEN_MAKE_ALIGNED_OPERATOR_NEW
Definition: SceneProjector.h:47
double d() const
Definition: SceneProjector.h:31
Definition: SceneProjector.h:21
const Vector3 & normal() const
Definition: SceneProjector.h:30
Defines the minimum processing for performing pasing file for STL.
Definition: AbstractSceneLoader.h:9
double radius_
Definition: SceneProjector.h:58
EIGEN_MAKE_ALIGNED_OPERATOR_NEW
Definition: SceneProjector.h:24
Quat rotation_
Definition: SceneProjector.h:60
Eigen::Vector3d Vector3
Definition: EigenTypes.h:58
#define CNOID_EXPORT
Definition: Util/exportdecl.h:37
Definition: SceneWidgetEditable.h:16
Definition: SceneProjector.h:13
Vector3 center_
Definition: SceneProjector.h:57
Definition: SceneProjector.h:44