Logo ROOT  
Reference Guide
TGLRotateManip Class Reference

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. 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...
 
- 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...
 
void Attach (TGLPhysicalShape *shape)
 
virtual void Draw (const TGLCamera &camera) const =0
 
Bool_t GetActive () const
 
TGLPhysicalShapeGetAttached () const
 
UInt_t GetSelectedWidget () const
 
virtual Bool_t HandleButton (const Event_t &event, const TGLCamera &camera)
 Handle a mouse button event - return kTRUE if processed, kFALSE otherwise. More...
 
virtual Bool_t HandleMotion (const Event_t &event, const TGLCamera &camera)
 Handle a mouse button event - return kTRUE if widget selection change kFALSE otherwise. More...
 
virtual Bool_t Select (const TGLCamera &, const TGLRect &, const TGLBoundingBox &)
 
void SetActive (Bool_t a)
 
void SetSelectedWidget (UInt_t s)
 
- Public Member Functions inherited from TVirtualGLManip
virtual ~TVirtualGLManip ()
 
virtual Bool_t Select (const TGLCamera &camera, const TGLRect &rect, const TGLBoundingBox &sceneBox)=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

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...
 
void DrawAxisRing (const TGLVertex3 &origin, const TGLVector3 &axis, Double_t radius, Float_t rgba[4]) const
 

Private Attributes

TGLVertex3 fActiveRingCenter
 plane of the active ring (widget) More...
 
TGLPlane fActiveRingPlane
 front or back of the active shallow ring? More...
 
TGLLine3 fRingLine
 center of active ring More...
 
TGLLine3 fRingLineOld
 
Bool_t fShallowFront
 does active ring form shallow angle to eye? More...
 
Bool_t fShallowRing
 

Additional Inherited Members

- Protected Member Functions inherited from TGLManip
 TGLManip (const TGLManip &)
 last (latest) mouse position (in WINDOW coords) 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_tColorFor (UInt_t widget) const
 Returns color to be used for given widget. More...
 
TGLManipoperator= (const TGLManip &)
 Assignment operator. More...
 
- Protected Attributes inherited from TGLManip
Bool_t fActive
 active width (axis) component More...
 
TPoint fFirstMouse
 manipulator is active? More...
 
TPoint fLastMouse
 first (start) mouse position (in WINDOW coords) More...
 
UInt_t fSelectedWidget
 manipulated shape More...
 
TGLPhysicalShapefShape
 

#include <TGLRotateManip.h>

Inheritance diagram for TGLRotateManip:
[legend]

Constructor & Destructor Documentation

◆ TGLRotateManip() [1/2]

TGLRotateManip::TGLRotateManip ( )

Construct rotation manipulator not bound to any physical shape.

Definition at line 57 of file TGLRotateManip.cxx.

◆ TGLRotateManip() [2/2]

TGLRotateManip::TGLRotateManip ( TGLPhysicalShape shape)

Construct rotation manipulator bound to TGLPhysicalShape 'shape'.

Definition at line 69 of file TGLRotateManip.cxx.

◆ ~TGLRotateManip()

TGLRotateManip::~TGLRotateManip ( )
virtual

Destroy the rotation manipulator.

Definition at line 82 of file TGLRotateManip.cxx.

Member Function Documentation

◆ Angle() [1/2]

Double_t TGLRotateManip::Angle ( const TGLVector3 v1,
const TGLVector3 v2 
)
staticprotected

Calculate unsigned angle between vectors v1 and v2.

Definition at line 33 of file TGLRotateManip.cxx.

◆ Angle() [2/2]

Double_t TGLRotateManip::Angle ( const TGLVector3 v1,
const TGLVector3 v2,
const TGLVector3 ref 
)
staticprotected

Calculate signed angle between vectors v1 and v2, using ref to define right handed coord system.

  • If v1.v2 parallel to ref vector: +ive for clockwise, -ive for anticlockwise
  • If v1.v2 antiparallel to ref vector: -ive for clockwise, +ive for anticlockwise

Definition at line 43 of file TGLRotateManip.cxx.

◆ CalculateAngleDelta()

Double_t TGLRotateManip::CalculateAngleDelta ( const TPoint mouse,
const TGLCamera camera 
)
private

Calculate angle delta for rotation based on new mouse position.

Definition at line 238 of file TGLRotateManip.cxx.

◆ CalculateRingLine()

TGLLine3 TGLRotateManip::CalculateRingLine ( const TPoint mouse,
const TGLCamera camera 
) const
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.

◆ Draw()

void TGLRotateManip::Draw ( const TGLCamera camera) const
virtual

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.

◆ DrawAxisRing()

void TGLRotateManip::DrawAxisRing ( const TGLVertex3 origin,
const TGLVector3 axis,
Double_t  radius,
Float_t  rgba[4] 
) const
private

◆ HandleButton()

Bool_t TGLRotateManip::HandleButton ( const Event_t event,
const TGLCamera camera 
)
virtual

Handle mouse button event over manipulator - returns kTRUE if redraw required kFALSE otherwise.

Reimplemented from TGLManip.

Definition at line 174 of file TGLRotateManip.cxx.

◆ HandleMotion()

Bool_t TGLRotateManip::HandleMotion ( const Event_t event,
const TGLCamera camera 
)
virtual

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.

Member Data Documentation

◆ fActiveRingCenter

TGLVertex3 TGLRotateManip::fActiveRingCenter
private

plane of the active ring (widget)

Definition at line 28 of file TGLRotateManip.h.

◆ fActiveRingPlane

TGLPlane TGLRotateManip::fActiveRingPlane
private

front or back of the active shallow ring?

Definition at line 27 of file TGLRotateManip.h.

◆ fRingLine

TGLLine3 TGLRotateManip::fRingLine
private

center of active ring

Definition at line 32 of file TGLRotateManip.h.

◆ fRingLineOld

TGLLine3 TGLRotateManip::fRingLineOld
private

Definition at line 33 of file TGLRotateManip.h.

◆ fShallowFront

Bool_t TGLRotateManip::fShallowFront
private

does active ring form shallow angle to eye?

Definition at line 26 of file TGLRotateManip.h.

◆ fShallowRing

Bool_t TGLRotateManip::fShallowRing
private

Definition at line 25 of file TGLRotateManip.h.

Libraries for TGLRotateManip:
[legend]

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