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 18 of file TGLRotateManip.h.
Public Member Functions | |
| TGLRotateManip () | |
| Construct rotation manipulator not bound to any physical shape. | |
| TGLRotateManip (TGLPhysicalShape *shape) | |
| Construct rotation manipulator bound to TGLPhysicalShape 'shape'. | |
| ~TGLRotateManip () override | |
| Destroy the rotation manipulator. | |
| void | Attach (TGLPhysicalShape *shape) |
| void | Draw (const TGLCamera &camera) const override |
| 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. | |
| Bool_t | GetActive () const |
| TGLPhysicalShape * | GetAttached () const |
| UInt_t | GetSelectedWidget () const |
| Bool_t | HandleButton (const Event_t &event, const TGLCamera &camera) override |
| Handle mouse button event over manipulator - returns kTRUE if redraw required kFALSE otherwise. | |
| Bool_t | HandleMotion (const Event_t &event, const TGLCamera &camera) override |
| Handle mouse motion over manipulator - if active (selected widget) rotate physical around selected ring widget plane normal. | |
| TClass * | IsA () const override |
| Bool_t | Select (const TGLCamera &, const TGLRect &, const TGLBoundingBox &) override |
| void | SetActive (Bool_t a) |
| void | SetSelectedWidget (UInt_t s) |
| void | Streamer (TBuffer &) override |
| void | StreamerNVirtual (TBuffer &ClassDef_StreamerNVirtual_b) |
Static Public Member Functions | |
| static TClass * | Class () |
| static const char * | Class_Name () |
| static constexpr Version_t | Class_Version () |
| static const char * | DeclFileName () |
Protected Member Functions | |
| 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. | |
| const UChar_t * | ColorFor (UInt_t widget) const |
| Returns color to be used for given widget. | |
Static Protected Member Functions | |
| static Double_t | Angle (const TGLVector3 &v1, const TGLVector3 &v2) |
| Calculate unsigned angle between vectors v1 and v2. | |
| 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. | |
Protected Attributes | |
| Bool_t | fActive |
| ! manipulator is active? | |
| TPoint | fFirstMouse |
| ! first (start) mouse position (in WINDOW coords) | |
| TPoint | fLastMouse |
| ! last (latest) mouse position (in WINDOW coords) | |
| UInt_t | fSelectedWidget |
| ! active width (axis) component | |
| TGLPhysicalShape * | fShape |
| ! manipulated shape | |
Private Member Functions | |
| Double_t | CalculateAngleDelta (const TPoint &mouse, const TGLCamera &camera) |
| Calculate angle delta for rotation based on new mouse position. | |
| 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. | |
| void | DrawAxisRing (const TGLVertex3 &origin, const TGLVector3 &axis, Double_t radius, Float_t rgba[4]) const |
Private Attributes | |
| TGLVertex3 | fActiveRingCenter |
| ! center of active ring | |
| TGLPlane | fActiveRingPlane |
| ! plane of the active ring (widget) | |
| TGLLine3 | fRingLine |
| TGLLine3 | fRingLineOld |
| Bool_t | fShallowFront |
| ! front or back of the active shallow ring? | |
| Bool_t | fShallowRing |
| ! does active ring form shallow angle to eye? | |
#include <TGLRotateManip.h>
| TGLRotateManip::TGLRotateManip | ( | ) |
Construct rotation manipulator not bound to any physical shape.
Definition at line 56 of file TGLRotateManip.cxx.
| TGLRotateManip::TGLRotateManip | ( | TGLPhysicalShape * | shape | ) |
Construct rotation manipulator bound to TGLPhysicalShape 'shape'.
Definition at line 68 of file TGLRotateManip.cxx.
|
override |
Destroy the rotation manipulator.
Definition at line 81 of file TGLRotateManip.cxx.
|
staticprotected |
Calculate unsigned angle between vectors v1 and v2.
Definition at line 32 of file TGLRotateManip.cxx.
|
staticprotected |
Calculate signed angle between vectors v1 and v2, using ref to define right handed coord system.
Definition at line 42 of file TGLRotateManip.cxx.
|
inlineinherited |
Definition at line 58 of file TGLManip.h.
|
protectedinherited |
Calculates base and axis scale factor (in world units) for drawing manipulators with reasonable size range in current camera.
Definition at line 152 of file TGLManip.cxx.
|
private |
Calculate angle delta for rotation based on new mouse position.
Definition at line 237 of file TGLRotateManip.cxx.
|
private |
Calculated interaction line between 'mouse' viewport point, and current selected widget (ring), under supplied 'camera' projection.
Definition at line 271 of file TGLRotateManip.cxx.
|
static |
|
static |
|
inlinestaticconstexpr |
Definition at line 53 of file TGLRotateManip.h.
Returns color to be used for given widget.
Definition at line 93 of file TGLManip.cxx.
|
inlinestatic |
Definition at line 53 of file TGLRotateManip.h.
|
overridevirtual |
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 91 of file TGLRotateManip.cxx.
|
private |
|
inlineinherited |
Definition at line 55 of file TGLManip.h.
|
inlineinherited |
Definition at line 59 of file TGLManip.h.
|
inlineinherited |
Definition at line 52 of file TGLManip.h.
|
overridevirtual |
Handle mouse button event over manipulator - returns kTRUE if redraw required kFALSE otherwise.
Reimplemented from TGLManip.
Definition at line 173 of file TGLRotateManip.cxx.
|
overridevirtual |
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 220 of file TGLRotateManip.cxx.
|
inlineoverridevirtual |
Reimplemented from TGLManip.
Definition at line 53 of file TGLRotateManip.h.
|
inlineoverridevirtualinherited |
Implements TVirtualGLManip.
Definition at line 63 of file TGLManip.h.
|
inlineinherited |
Definition at line 56 of file TGLManip.h.
|
inlineinherited |
Definition at line 53 of file TGLManip.h.
|
inline |
Definition at line 53 of file TGLRotateManip.h.
|
protectedinherited |
! manipulator is active?
Definition at line 33 of file TGLManip.h.
|
private |
! center of active ring
Definition at line 28 of file TGLRotateManip.h.
|
private |
! plane of the active ring (widget)
Definition at line 27 of file TGLRotateManip.h.
|
protectedinherited |
! first (start) mouse position (in WINDOW coords)
Definition at line 36 of file TGLManip.h.
|
protectedinherited |
! last (latest) mouse position (in WINDOW coords)
Definition at line 37 of file TGLManip.h.
|
private |
Definition at line 32 of file TGLRotateManip.h.
|
private |
Definition at line 33 of file TGLRotateManip.h.
|
protectedinherited |
! active width (axis) component
Definition at line 32 of file TGLManip.h.
|
private |
! front or back of the active shallow ring?
Definition at line 26 of file TGLRotateManip.h.
|
private |
! does active ring form shallow angle to eye?
Definition at line 25 of file TGLRotateManip.h.
|
protectedinherited |
! manipulated shape
Definition at line 31 of file TGLManip.h.