ROOT
6.06/09
Reference Guide
|
Rotate manipulator - attaches to physical shape and draws local axes widgets - rings drawn from attached physical center, in plane defined by axis.
User can mouse over (turns yellow) and L click/drag to rotate attached physical round the ring center. Widgets use standard 3D package axes colours: X red, Y green, Z blue.
Definition at line 20 of file TGLRotateManip.h.
Public Member Functions | |
TGLRotateManip () | |
Construct rotation manipulator not bound to any physical shape. More... | |
TGLRotateManip (TGLPhysicalShape *shape) | |
Construct rotation manipulator bound to TGLPhysicalShape 'shape'. More... | |
virtual | ~TGLRotateManip () |
Destroy the rotation manipulator. More... | |
virtual void | Draw (const TGLCamera &camera) const |
Draw rotate manipulator - axis rings drawn from attached physical center, in plane defined by axis as normal, in red(X), green(Y) and blue(Z), with white center sphere. More... | |
virtual Bool_t | HandleButton (const Event_t &event, const TGLCamera &camera) |
Handle mouse button event over manipulator - returns kTRUE if redraw required kFALSE otherwise. More... | |
virtual Bool_t | HandleMotion (const Event_t &event, const TGLCamera &camera) |
Handle mouse motion over manipulator - if active (selected widget) rotate physical around selected ring widget plane normal. More... | |
ClassDef (TGLRotateManip, 0) | |
Public Member Functions inherited from TGLManip | |
TGLManip () | |
Construct a manipulator object, bound to supplied viewer, and no physical shape. More... | |
TGLManip (TGLPhysicalShape *shape) | |
Construct a manipulator object, bound to supplied physical shape. More... | |
virtual | ~TGLManip () |
Destroy manipulator object. More... | |
UInt_t | GetSelectedWidget () const |
void | SetSelectedWidget (UInt_t s) |
Bool_t | GetActive () const |
void | SetActive (Bool_t a) |
void | Attach (TGLPhysicalShape *shape) |
TGLPhysicalShape * | GetAttached () const |
virtual Bool_t | Select (const TGLCamera &, const TGLRect &, const TGLBoundingBox &) |
ClassDef (TGLManip, 0) | |
Public Member Functions inherited from TVirtualGLManip | |
virtual | ~TVirtualGLManip () |
ClassDef (TVirtualGLManip, 0) | |
Static Protected Member Functions | |
static Double_t | Angle (const TGLVector3 &v1, const TGLVector3 &v2) |
Calculate unsigned angle between vectors v1 and v2. More... | |
static Double_t | Angle (const TGLVector3 &v1, const TGLVector3 &v2, const TGLVector3 &ref) |
Calculate signed angle between vectors v1 and v2, using ref to define right handed coord system. More... | |
Private Member Functions | |
void | DrawAxisRing (const TGLVertex3 &origin, const TGLVector3 &axis, Double_t radius, Float_t rgba[4]) const |
Double_t | CalculateAngleDelta (const TPoint &mouse, const TGLCamera &camera) |
Calculate angle delta for rotation based on new mouse position. More... | |
TGLLine3 | CalculateRingLine (const TPoint &mouse, const TGLCamera &camera) const |
Calculated interaction line between 'mouse' viewport point, and current selected widget (ring), under supplied 'camera' projection. More... | |
Private Attributes | |
Bool_t | fShallowRing |
Bool_t | fShallowFront |
does active ring form shallow angle to eye? More... | |
TGLPlane | fActiveRingPlane |
front or back of the active shallow ring? More... | |
TGLVertex3 | fActiveRingCenter |
plane of the active ring (widget) More... | |
TGLLine3 | fRingLine |
center of active ring More... | |
TGLLine3 | fRingLineOld |
Additional Inherited Members | |
Protected Member Functions inherited from TGLManip | |
TGLManip (const TGLManip &) | |
last (latest) mouse position (in WINDOW coords) More... | |
TGLManip & | operator= (const TGLManip &) |
Assignment operator. More... | |
void | CalcDrawScale (const TGLBoundingBox &box, const TGLCamera &camera, Double_t &base, TGLVector3 axis[3]) const |
Calculates base and axis scale factor (in world units) for drawing manipulators with reasonable size range in current camera. More... | |
const UChar_t * | ColorFor (UInt_t widget) const |
Returns color to be used for given widget. More... | |
Protected Attributes inherited from TGLManip | |
TGLPhysicalShape * | fShape |
UInt_t | fSelectedWidget |
manipulated shape More... | |
Bool_t | fActive |
active width (axis) component More... | |
TPoint | fFirstMouse |
manipulator is active? More... | |
TPoint | fLastMouse |
first (start) mouse position (in WINDOW coords) More... | |
#include <TGLRotateManip.h>
TGLRotateManip::TGLRotateManip | ( | ) |
Construct rotation manipulator not bound to any physical shape.
Definition at line 57 of file TGLRotateManip.cxx.
TGLRotateManip::TGLRotateManip | ( | TGLPhysicalShape * | shape | ) |
Construct rotation manipulator bound to TGLPhysicalShape 'shape'.
Definition at line 69 of file TGLRotateManip.cxx.
|
virtual |
Destroy the rotation manipulator.
Definition at line 82 of file TGLRotateManip.cxx.
|
staticprotected |
Calculate unsigned angle between vectors v1 and v2.
Definition at line 33 of file TGLRotateManip.cxx.
Referenced by Angle(), CalculateAngleDelta(), and HandleButton().
|
staticprotected |
Calculate signed angle between vectors v1 and v2, using ref to define right handed coord system.
Definition at line 43 of file TGLRotateManip.cxx.
|
private |
Calculate angle delta for rotation based on new mouse position.
Definition at line 238 of file TGLRotateManip.cxx.
Referenced by HandleMotion().
|
private |
Calculated interaction line between 'mouse' viewport point, and current selected widget (ring), under supplied 'camera' projection.
Definition at line 272 of file TGLRotateManip.cxx.
Referenced by CalculateAngleDelta(), and HandleButton().
TGLRotateManip::ClassDef | ( | TGLRotateManip | , |
0 | |||
) |
Draw rotate manipulator - axis rings drawn from attached physical center, in plane defined by axis as normal, in red(X), green(Y) and blue(Z), with white center sphere.
If selected widget (mouse over) this is drawn in active colour (yellow).
Implements TGLManip.
Definition at line 92 of file TGLRotateManip.cxx.
|
private |
Handle mouse button event over manipulator - returns kTRUE if redraw required kFALSE otherwise.
Reimplemented from TGLManip.
Definition at line 174 of file TGLRotateManip.cxx.
Handle mouse motion over manipulator - if active (selected widget) rotate physical around selected ring widget plane normal.
Returns kTRUE if redraw required kFALSE otherwise.
Reimplemented from TGLManip.
Definition at line 221 of file TGLRotateManip.cxx.
|
private |
plane of the active ring (widget)
Definition at line 30 of file TGLRotateManip.h.
Referenced by CalculateRingLine(), Draw(), HandleButton(), and HandleMotion().
|
private |
front or back of the active shallow ring?
Definition at line 29 of file TGLRotateManip.h.
Referenced by CalculateAngleDelta(), CalculateRingLine(), Draw(), HandleButton(), and HandleMotion().
|
private |
center of active ring
Definition at line 34 of file TGLRotateManip.h.
Referenced by CalculateAngleDelta(), Draw(), and HandleButton().
|
private |
Definition at line 35 of file TGLRotateManip.h.
Referenced by CalculateAngleDelta(), and HandleButton().
|
private |
does active ring form shallow angle to eye?
Definition at line 28 of file TGLRotateManip.h.
Referenced by CalculateAngleDelta(), Draw(), and HandleButton().
|
private |
Definition at line 27 of file TGLRotateManip.h.
Referenced by CalculateAngleDelta(), Draw(), and HandleButton().