ACG::SceneGraph::TranslationManipulatorNode Class Reference

Inheritance diagram for ACG::SceneGraph::TranslationManipulatorNode:
Inheritance graph
[legend]
Collaboration diagram for ACG::SceneGraph::TranslationManipulatorNode:
Collaboration graph
[legend]

List of all members.

Classes

class  Element

Public Types

enum  AutoSizeMode { Never, Once, Always }
enum  ManipulatorMode { TranslationRotation, LocalRotation, Resize, Place }

Public Member Functions

 TranslationManipulatorNode (BaseNode *_parent=0, const std::string &_name="<TranslationTranslationManipulatorNode>")
 Default constructor.
 ~TranslationManipulatorNode ()
 Destructor.
 ACG_CLASSNAME (TranslationManipulatorNode)
 class name
virtual void setIdentity ()
void set_draw_cylinder (bool _b)
 set draw_cylinder_
bool draw_manipulator () const
 get drawCylinder
void set_direction (const Vec3d &_directionX, const Vec3d &_directionY)
 Set direction in world coordinates.
Vec3d directionX () const
 Get current direction of x-Axis in world coordinates.
Vec3d directionY () const
 Get current direction of y-Axis in world coordinates.
Vec3d directionZ () const
 Get current direction of z-Axis in world coordinates.
void set_size (double _size)
 set cylindersize (height + radius)
double size () const
 get cylindersize
void set_autosize (AutoSizeMode _mode)
 set auto size mode
AutoSizeMode autosize () const
 get autosize mode
void rotate (double _angle, Vec3d _axis)
void draw (GLState &_state, unsigned int _drawMode)
 draw the cylinder (if enabled)
void pick (GLState &_state, PickTarget _target)
 leave node
virtual void mouseEvent (GLState &_state, QMouseEvent *_event)
 get mouse events
void boundingBox (Vec3f &_bbMin, Vec3f &_bbMax)
 bounding box of node
void setMode (ManipulatorMode _mode)
 set current operation mode
ManipulatorMode getMode () const
 get current mode

Private Types

enum  StateUpdates { None, Over, Click }
enum  Elements {
  Origin = 0, XTop, YTop, ZTop,
  XAxis, YAxis, ZAxis, XRing,
  YRing, ZRing, NumElements
}

Private Member Functions

void update_manipulator_system (GLState &_state)
 set the current state to follow manipulator transformation
void update_rotation (GLState &_state)
 update the internal rotation matrix ( internal rotation may be changed without modifiing children of this node )
bool hitSphere (GLState &_state, const Vec2i &_v2)
 Determine whether the origin sphere has been hit.
bool hitOuterSphere (GLState &_state, const Vec2i &_v2)
 Determine whether the outer sphere has been hit by the cursor.
void drawManipulator (GLState &_state, bool _active)
void drawCircle (const float innerRadius, const float outerRadius)
 Draws a circle with given radius.
bool mapToCylinder (GLState &_state, const Vec2i &_v2, double &axis_hit, StateUpdates _updateStates=None)
bool mapToCylinderTop (GLState &_state, const Vec2i &_v2, double &axis_hit, StateUpdates _updateStates=None)
bool mapToSphere (GLState &_state, const Vec2i &_v2, Vec3d &_v3, StateUpdates _updateStates=None)
void updateTargetColors ()
bool updateCurrentColors (GLState &_state)
double get_screen_length (GLState &_state, Vec3d &_point) const
void updateSize (GLState &_state)

Private Attributes

bool draw_manipulator_
Vec3d dirX_
Vec3d dirY_
Vec3d dirZ_
GLUquadricObj * axis_
GLUquadricObj * circle_
GLUquadricObj * sphere_
double manipulator_radius_
double manipulator_height_
double set_manipulator_radius_
double set_manipulator_height_
int manipulator_slices_
int manipulator_stacks_
bool any_axis_clicked_
bool any_top_clicked_
bool outer_ring_clicked_
bool any_axis_over_
bool any_top_over_
bool outer_ring_over_
Element element_ [NumElements]
float resize_current_
ManipulatorMode mode_
bool ignoreTime_
Vec2i oldPoint2D_
Vec3d draggingOrigin3D_
bool dragging_
Vec3d currentScale_
GLMatrixd localTransformation_
AutoSizeMode auto_size_
double auto_size_length_

Detailed Description

Definition at line 81 of file TranslationManipulatorNode.hh.


Member Function Documentation

bool ACG::SceneGraph::TranslationManipulatorNode::mapToCylinder ( GLState _state,
const Vec2i &  _v1,
double &  _axis_hit,
StateUpdates  _updateStates = None 
) [private]
bool ACG::SceneGraph::TranslationManipulatorNode::mapToCylinderTop ( GLState _state,
const Vec2i &  _v1,
double &  _axis_hit,
StateUpdates  _updateStates = None 
) [private]
bool ACG::SceneGraph::TranslationManipulatorNode::mapToSphere ( GLState _state,
const Vec2i &  _v2,
Vec3d &  _v3,
StateUpdates  _updateStates = None 
) [private]

Determine whether one of the outer rings has been hit. Return true if intersection with either of the rings occurs. _v3 contains the point in world coordinates

Definition at line 1619 of file TranslationManipulatorNode.cc.

References ACG::GLState::context_height(), ACG::GLState::pop_modelview_matrix(), ACG::GLState::push_modelview_matrix(), ACG::GLState::rotate(), ACG::GLState::set_updateGL(), update_manipulator_system(), and ACG::GLState::viewing_ray().

Referenced by mouseEvent().

void ACG::SceneGraph::TranslationManipulatorNode::pick ( GLState _state,
PickTarget  _target 
) [virtual]
void ACG::SceneGraph::TranslationManipulatorNode::setIdentity (  )  [virtual]

set the current transformation to the identity transformation, i.e. change the center() to the transfomed center and loadIdentity().

Reimplemented from ACG::SceneGraph::TransformNode.

Definition at line 197 of file TranslationManipulatorNode.cc.


The documentation for this class was generated from the following files:

acg pic Project OpenFlipper, ©  Computer Graphics Group, RWTH Aachen. Documentation generated using doxygen .