00001 #ifndef __ManipAxis__
00002 #define __ManipAxis__
00003 
00004 #include "KnobGeometry.h"
00005 #include "AxisGeometry.h"
00006 
00007 #define KNOB_SCALE_FACTOR 20
00008 
00012 class ManipulationAxis:public osg::PositionAttitudeTransform
00013 {
00014 public:
00015         ManipulationAxis(std::string &name, osg::Vec3d direction,osg::Vec4d color=osg::Vec4d(0.5,0.5,0.5,1.0), double length=1.0, double radius=0.2);
00016         virtual ~ManipulationAxis(void);
00017 
00019         void setLength(double length);
00020     double getLength();
00022         void setRadius(double radius);
00023 
00024         osg::Vec3d getAxisDirection();
00025         
00026         osg::Node* getKnob();
00027 
00028 private:
00029     double _length;
00030         osg::ref_ptr<KnobGeometry>      _knob;
00031         osg::ref_ptr<AxisGeometry>      _axis;
00032 };
00033 
00034 #endif