cherish
EditableWire.h
1 #ifndef EDITABLEWIRE_H
2 #define EDITABLEWIRE_H
3 
4 #include <osg/Geode>
5 #include <osg/Geometry>
6 #include <osg/Switch>
7 #include <osg/StateSet>
8 #include <osg/Point>
9 #include <osg/LineWidth>
10 #include <osg/MatrixTransform>
11 
12 namespace entity {
13 
28 class EditableWire : public osg::MatrixTransform
29 {
30 public:
34  EditableWire(double fov2);
35 
37  osg::Vec3f getEye3D() const;
38 
40  osg::Vec3f getEye2D() const;
41 
43  osg::Vec3f getFocal2D() const;
44 
46  osg::Vec3f getCenter3D() const;
47 
49  osg::Vec3f getRight2D() const;
50 
52  osg::Vec3f getRight3D() const;
53 
55  osg::Vec3f getUp() const;
56 
58  double getFOV2() const;
59 
63  void getCenter2D(osg::Vec2f& p1, osg::Vec2f& p2) const;
64 
66  osg::Vec3f getCenter2D() const;
67 
69  const osg::Geode* getGeode() const;
70 
72  void editEye(double u, double v);
73 
76  void editCenter(double theta);
77 
81  void editFocal(double angle);
82 
84  void unselect();
85 
88  void pick(int index);
89 
91  void unpick();
92 
93 protected:
95  void setColorFocal(const osg::Vec4f& color);
96 
98  void setColorEyeDefaults();
99 
101  void setColorCenterDefaults();
102 
104  void updateGeometry(osg::Geometry* geom);
105 
109  void move(double u, double v);
110 
113  void rotate(double theta);
114 
118  void translate(double d);
119 
120  void expand(double a);
121 
122 private:
123  osg::Geode* m_geode;
124  osg::Geometry* m_eye;
125  osg::Geometry* m_center;
126  osg::Geometry* m_focal;
127  double m_fov2;
129  int m_selection;
131 }; // class EditableWire
132 
133 } // namespace entity
134 
135 #endif // EDITABLEWIRE_H
void editCenter(double theta)
Definition: EditableWire.cpp:170
void editEye(double u, double v)
Definition: EditableWire.cpp:165
osg::Vec3f getEye2D() const
Definition: EditableWire.cpp:68
double getFOV2() const
Definition: EditableWire.cpp:131
A scene graph class that contains all the geometric entities for camera pose drawing.
Definition: EditableWire.h:28
Scene graph entities.
Definition: AddEntityCommand.h:17
osg::Vec3f getRight3D() const
Definition: EditableWire.cpp:106
osg::Vec3f getCenter3D() const
Definition: EditableWire.cpp:85
osg::Vec3f getRight2D() const
Definition: EditableWire.cpp:94
osg::Vec3f getFocal2D() const
Definition: EditableWire.cpp:77
osg::Vec3f getUp() const
Definition: EditableWire.cpp:120
void pick(int index)
Definition: EditableWire.cpp:181
osg::Vec3f getCenter2D() const
Definition: EditableWire.cpp:152
osg::Vec3f getEye3D() const
Definition: EditableWire.cpp:63
void setColorFocal(const osg::Vec4f &color)
Definition: EditableWire.cpp:191
const osg::Geode * getGeode() const
Definition: EditableWire.cpp:160
void editFocal(double angle)
Definition: EditableWire.cpp:175
void setColorEyeDefaults()
Definition: EditableWire.cpp:201
void translate(double d)
Definition: EditableWire.cpp:282
void setColorCenterDefaults()
Definition: EditableWire.cpp:210
void rotate(double theta)
Definition: EditableWire.cpp:256
void unpick()
Definition: EditableWire.cpp:186
void updateGeometry(osg::Geometry *geom)
Definition: EditableWire.cpp:220
EditableWire(double fov2)
Definition: EditableWire.cpp:8
void move(double u, double v)
Definition: EditableWire.cpp:226