Basic Image AlgorithmS Library  2.8.0
 All Classes Namespaces Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
Public Member Functions | Static Public Member Functions | Protected Member Functions | Protected Attributes | Static Protected Attributes | List of all members
BIAS::TrackballControl Class Reference

class for camera movement in trackball mode. More...

#include <GLviewer/Controller/TrackballControl.hh>

+ Inheritance diagram for BIAS::TrackballControl:
+ Collaboration diagram for BIAS::TrackballControl:

Public Member Functions

void AddDebugLevel (const long int lv)
 
void AddDebugLevel (const std::string &name)
 
bool DebugLevelIsSet (const long int lv) const
 
bool DebugLevelIsSet (const std::string &name) const
 
virtual bool FinishedDraw ()
 this function is called by RenderContextBase when drawing is done. More...
 
int GetDebugLevel () const
 
std::ostream & GetDebugStream () const
 
void GetDebugStream (std::ostream &os) const
 
virtual
BIAS::GLProjectionParametersInterface
GetGLProjectionParametersInterface ()
 Get the camera projection parameters. More...
 
virtual std::string GetName ()
 Get the name of the controller. More...
 
BIAS::Vector3< double > GetPoI ()
 Get point of interest. More...
 
BIAS::Vector3< double > GetPointOfInterest ()
 Get point of interest. More...
 
bool GetUseLeftDouble ()
 
bool LeftAndRightMouseMoved (int x1, int x2, int y1, int y2)
 react to mouse move if left and right button is pressed. More...
 
virtual bool LeftMouseDoubleClicked (int x, int y, int m)
 Computes from the coordinates x,y a 3D point in the scene and tries to set it to the point of interest. More...
 
virtual bool LeftMouseDown (int, int)
 react to left mouse button down event overwrite in derived class of desired More...
 
bool LeftMouseMoved (int x1, int x2, int y1, int y2)
 Rotates the camera around the point of interest. More...
 
virtual bool LeftMouseSingleClicked (int, int)
 react to left mouse single click overwrite in derived class of desired More...
 
virtual bool LeftMouseUp (int, int)
 react to left mouse button up event overwrite in derived class of desired More...
 
virtual bool MiddleMouseDown (int, int)
 react to middle mouse button down event overwrite in derived class of desired More...
 
bool MiddleMouseMoved (int x1, int x2, int y1, int y2)
 Moves the camera left/right/up/down and sets new point of interest. More...
 
virtual bool MiddleMouseUp (int, int)
 react to middle mouse button up event overwrite in derived class of desired More...
 
virtual bool MouseLeftWindow ()
 react to mouse leaving the window overwrite in derived class of desired More...
 
virtual bool MouseMoved (int, int)
 react to mouse movement overwrite in derived class of desired More...
 
bool MouseWheelUsed (double stepsize)
 Handles Mouse Wheel events and zooms in or out. More...
 
void MoveInViewingDirection (double stepSize)
 
long int Name2DebugLevel (const std::string &name) const
 looks up a debuglevel in the internal map, returns 0 if not found More...
 
long int NewDebugLevel (const std::string &name)
 creates a new debuglevel More...
 
void PrintDebugLevel (std::ostream &os=std::cout) const
 
void RemoveDebugLevel (const long int lv)
 
void RemoveDebugLevel (const std::string &name)
 
virtual bool RightMouseDoubleClicked (int, int)
 react to right mouse double click overwrite in derived class of desired More...
 
virtual bool RightMouseDown (int, int)
 react to right mouse button down event overwrite in derived class of desired More...
 
bool RightMouseMoved (int x1, int x2, int y1, int y2)
 Moves the camera forward to point of interest if y2-y1 is positive else the camera is moved away from point of interest. More...
 
virtual bool RightMouseSingleClicked (int, int)
 react to right mouse single click event overwrite in derived class of desired More...
 
virtual bool RightMouseUp (int, int)
 react to right mouse button up event overwrite in derived class of desired More...
 
void RotateAroundPOI (BIAS::Vector3< double > axis, double angleRAD)
 Rotate around the point of interest. More...
 
void RotateAroundViewingDirection (double rotationAngleRAD)
 Rotate around viewing direction. More...
 
void SetDebugLevel (const long int lv)
 
void SetDebugLevel (const std::string &name)
 
void SetDebugStream (const std::ostream &os)
 
void SetGLProjectionParametersInterface (BIAS::GLProjectionParametersInterface *projInterface)
 Set the ProjectionParametersInterface (camera) More...
 
virtual void SetName (std::string name)
 Set the name of the controller. More...
 
void SetPointOfInterest (const BIAS::Vector3< double > &poi)
 Set point of interest the controller will circle around. More...
 
void SetStepsize (double stepsize)
 
void SetUseLeftDouble (bool ld)
 
void ShowDebugLevel (std::ostream &os=std::cout) const
 prints all internally known debuglevels More...
 
bool SpecialKeyPressed (int key)
 react to press of special keys such as F1-F12, ... More...
 
virtual bool SpecialKeyUp (int)
 react to press of special keys such as F1-F12, ... More...
 
virtual bool StandardKeyPressed (unsigned char, int, int)
 react to press of ascii-coded charakter plus pointer position More...
 
virtual bool StandardKeyUp (unsigned char, int, int)
 react to press of ascii-coded charakter plus pointer position More...
 
virtual bool TimerExpired ()
 this function is called by RenderContextBase when timer is expired Overwrite and implement to do some timer dependend processing More...
 
 TrackballControl ()
 
virtual bool WindowReshape (int, int)
 this function is called by RenderContextBase if the window is reshaped. More...
 
 ~TrackballControl ()
 

Static Public Member Functions

static long int GetGlobalDebugLevel ()
 
static void SetGlobalDebugLevel (long int lev)
 

Protected Member Functions

long ConsumeNextFreeDebuglevel_ ()
 returns the next available debuglevel More...
 
void GetMoveinViewDirection (GLProjectionParametersInterface *cam, const double stepsize, const BIAS::Vector3< double > &viewdir, BIAS::Vector3< double > &res_translation)
 
double GetRotationAngle (GLProjectionParametersInterface *cam, const int x1, const int x2, const int y1, const int y2, const BIAS::Vector3< double > viewdir)
 
bool GetRotationAxisAndAngle (GLProjectionParametersInterface *cam, const int x1, const int x2, const int y1, const int y2, BIAS::Vector3< double > &axis, double &angleRAD)
 
void GetTranslation (GLProjectionParametersInterface *cam, const int x1, const int x2, const int y1, const int y2, const BIAS::Vector3< double > &viewdir, BIAS::Vector3< double > &transl)
 
void GetViewDirection (GLProjectionParametersInterface *cam, BIAS::Vector3< double > &direction)
 

Protected Attributes

long int _liDebugLevel
 
long int _liNextDebugLevel
 new concept, debuglevel are managed here in the debug class More...
 
std::map< std::string, long int > _String2Debuglevel
 
BIAS::GLProjectionParametersInterfacecontrolledObject_
 the camera which is controlled by this controller More...
 
std::string listenerName_
 name of listener/controller More...
 
BIAS::Vector3< double > PointOfInterest_
 
double Stepsize_
 
bool UseLeftDouble_
 

Static Protected Attributes

static std::ostream _zDebugStream
 
static long int GlobalDebugLevel = 0
 

Detailed Description

class for camera movement in trackball mode.

Author
cmenk

Definition at line 20 of file TrackballControl.hh.

Constructor & Destructor Documentation

TrackballControl::TrackballControl ( )

Definition at line 12 of file TrackballControl.cpp.

BIAS::TrackballControl::~TrackballControl ( )
inline

Definition at line 24 of file TrackballControl.hh.

Member Function Documentation

void BIAS::Debug::AddDebugLevel ( const long int  lv)
inlineinherited
void BIAS::Debug::AddDebugLevel ( const std::string &  name)
inlineinherited

Definition at line 362 of file Debug.hh.

long BIAS::Debug::ConsumeNextFreeDebuglevel_ ( )
inlineprotectedinherited

returns the next available debuglevel

Author
woelk 09/2006

Definition at line 521 of file Debug.hh.

bool BIAS::Debug::DebugLevelIsSet ( const long int  lv) const
inlineinherited
bool BIAS::Debug::DebugLevelIsSet ( const std::string &  name) const
inlineinherited

Definition at line 350 of file Debug.hh.

virtual bool BIAS::ControlInterface::FinishedDraw ( )
inlinevirtualinherited

this function is called by RenderContextBase when drawing is done.

Overwrite and implement to do some processing after drawing

Definition at line 193 of file ControlInterface.hh.

int BIAS::Debug::GetDebugLevel ( ) const
inlineinherited
std::ostream& BIAS::Debug::GetDebugStream ( ) const
inlineinherited

Definition at line 405 of file Debug.hh.

void BIAS::Debug::GetDebugStream ( std::ostream &  os) const
inlineinherited

Definition at line 414 of file Debug.hh.

static long int BIAS::Debug::GetGlobalDebugLevel ( )
inlinestaticinherited

Definition at line 431 of file Debug.hh.

virtual BIAS::GLProjectionParametersInterface* BIAS::ControlInterface::GetGLProjectionParametersInterface ( )
inlinevirtualinherited

Get the camera projection parameters.

Can be of type GLProjection or any from GLProjectionParametersBase derived class

Returns
Pointer to GLProjectionParametersInterface

Definition at line 207 of file ControlInterface.hh.

void TrackballBase::GetMoveinViewDirection ( GLProjectionParametersInterface cam,
const double  stepsize,
const BIAS::Vector3< double > &  viewdir,
BIAS::Vector3< double > &  res_translation 
)
protectedinherited
virtual std::string BIAS::ControlInterface::GetName ( )
inlinevirtualinherited

Get the name of the controller.

Definition at line 70 of file ControlInterface.hh.

BIAS::Vector3<double> BIAS::TrackballControl::GetPoI ( )
inline

Get point of interest.

Deprecated:
use GetPointOfInterest instead

Definition at line 57 of file TrackballControl.hh.

BIAS::Vector3<double> BIAS::TrackballControl::GetPointOfInterest ( )
inline

Get point of interest.

Definition at line 59 of file TrackballControl.hh.

double TrackballBase::GetRotationAngle ( GLProjectionParametersInterface cam,
const int  x1,
const int  x2,
const int  y1,
const int  y2,
const BIAS::Vector3< double >  viewdir 
)
protectedinherited
bool TrackballBase::GetRotationAxisAndAngle ( GLProjectionParametersInterface cam,
const int  x1,
const int  x2,
const int  y1,
const int  y2,
BIAS::Vector3< double > &  axis,
double &  angleRAD 
)
protectedinherited
void TrackballBase::GetTranslation ( GLProjectionParametersInterface cam,
const int  x1,
const int  x2,
const int  y1,
const int  y2,
const BIAS::Vector3< double > &  viewdir,
BIAS::Vector3< double > &  transl 
)
protectedinherited
bool BIAS::TrackballBase::GetUseLeftDouble ( )
inlineinherited

Definition at line 32 of file TrackballBase.hh.

void TrackballBase::GetViewDirection ( GLProjectionParametersInterface cam,
BIAS::Vector3< double > &  direction 
)
protectedinherited
bool TrackballControl::LeftAndRightMouseMoved ( int  x1,
int  x2,
int  y1,
int  y2 
)
virtual

react to mouse move if left and right button is pressed.

Reimplemented from BIAS::ControlInterface.

Definition at line 319 of file TrackballControl.cpp.

References BIAS::Vector3< T >::CrossProduct(), BIAS::Vector3< T >::Normalize(), and BIAS::Vector3< T >::ScalarProduct().

bool TrackballControl::LeftMouseDoubleClicked ( int  x,
int  y,
int  m 
)
virtual

Computes from the coordinates x,y a 3D point in the scene and tries to set it to the point of interest.

Reimplemented from BIAS::ControlInterface.

Reimplemented in BIAS::DistanceMeasureControl.

Definition at line 170 of file TrackballControl.cpp.

Referenced by BIAS::DistanceMeasureControl::LeftMouseDoubleClicked().

virtual bool BIAS::ControlInterface::LeftMouseDown ( int  ,
int   
)
inlinevirtualinherited

react to left mouse button down event overwrite in derived class of desired

Definition at line 99 of file ControlInterface.hh.

Referenced by BIAS::RenderContextBase::LeftMouseDown().

bool TrackballControl::LeftMouseMoved ( int  x1,
int  x2,
int  y1,
int  y2 
)
virtual

Rotates the camera around the point of interest.

x1, x2, y1, y2 are the mouse coordinates and width, height must be the size of the window. The trackball contains the whole window. The radius of the trackball is sqrt from width*width/4 + height*height/4.

Reimplemented from BIAS::ControlInterface.

Definition at line 98 of file TrackballControl.cpp.

References BIAS::Vector3< T >::CrossProduct(), BIAS::MatrixIdentity, and BIAS::Vector3< T >::Normalize().

virtual bool BIAS::ControlInterface::LeftMouseSingleClicked ( int  ,
int   
)
inlinevirtualinherited

react to left mouse single click overwrite in derived class of desired

Definition at line 89 of file ControlInterface.hh.

Referenced by BIAS::RenderContextBase::LeftMouseSingleClicked().

virtual bool BIAS::ControlInterface::LeftMouseUp ( int  ,
int   
)
inlinevirtualinherited

react to left mouse button up event overwrite in derived class of desired

Definition at line 104 of file ControlInterface.hh.

Referenced by BIAS::RenderContextBase::LeftMouseUp().

virtual bool BIAS::ControlInterface::MiddleMouseDown ( int  ,
int   
)
inlinevirtualinherited

react to middle mouse button down event overwrite in derived class of desired

Definition at line 145 of file ControlInterface.hh.

Referenced by BIAS::RenderContextBase::MiddleMouseDown().

bool TrackballControl::MiddleMouseMoved ( int  x1,
int  x2,
int  y1,
int  y2 
)
virtual

Moves the camera left/right/up/down and sets new point of interest.

Reimplemented from BIAS::ControlInterface.

Definition at line 206 of file TrackballControl.cpp.

References BIAS::HomgPoint3D::Homogenize(), BIAS::Vector3< T >::Length(), and BIAS::Vector4< T >::Sub().

virtual bool BIAS::ControlInterface::MiddleMouseUp ( int  ,
int   
)
inlinevirtualinherited

react to middle mouse button up event overwrite in derived class of desired

Definition at line 150 of file ControlInterface.hh.

Referenced by BIAS::RenderContextBase::MiddleMouseUp().

virtual bool BIAS::ControlInterface::MouseLeftWindow ( )
inlinevirtualinherited

react to mouse leaving the window overwrite in derived class of desired

Definition at line 160 of file ControlInterface.hh.

Referenced by BIAS::RenderContextBase::MouseLeftWindow().

virtual bool BIAS::ControlInterface::MouseMoved ( int  ,
int   
)
inlinevirtualinherited

react to mouse movement overwrite in derived class of desired

Reimplemented in BIAS::DistanceMeasureControl.

Definition at line 155 of file ControlInterface.hh.

Referenced by BIAS::RenderContextBase::MouseMoved().

bool TrackballControl::MouseWheelUsed ( double  stepsize)
virtual

Handles Mouse Wheel events and zooms in or out.

Reimplemented from BIAS::ControlInterface.

Definition at line 42 of file TrackballControl.cpp.

void TrackballControl::MoveInViewingDirection ( double  stepSize)
long int BIAS::Debug::Name2DebugLevel ( const std::string &  name) const
inlineinherited

looks up a debuglevel in the internal map, returns 0 if not found

Author
woelk 09/2006

Definition at line 454 of file Debug.hh.

long int BIAS::Debug::NewDebugLevel ( const std::string &  name)
inlineinherited
void BIAS::Debug::PrintDebugLevel ( std::ostream &  os = std::cout) const
inlineinherited

Definition at line 383 of file Debug.hh.

void BIAS::Debug::RemoveDebugLevel ( const long int  lv)
inlineinherited

Definition at line 369 of file Debug.hh.

void BIAS::Debug::RemoveDebugLevel ( const std::string &  name)
inlineinherited

Definition at line 376 of file Debug.hh.

virtual bool BIAS::ControlInterface::RightMouseDoubleClicked ( int  ,
int   
)
inlinevirtualinherited

react to right mouse double click overwrite in derived class of desired

Reimplemented in BIAS::OnlyRotationControl.

Definition at line 115 of file ControlInterface.hh.

Referenced by BIAS::RenderContextBase::RightMouseDoubleClicked().

virtual bool BIAS::ControlInterface::RightMouseDown ( int  ,
int   
)
inlinevirtualinherited

react to right mouse button down event overwrite in derived class of desired

Definition at line 125 of file ControlInterface.hh.

Referenced by BIAS::RenderContextBase::RightMouseDown().

bool TrackballControl::RightMouseMoved ( int  x1,
int  x2,
int  y1,
int  y2 
)
virtual

Moves the camera forward to point of interest if y2-y1 is positive else the camera is moved away from point of interest.

Reimplemented from BIAS::ControlInterface.

Definition at line 21 of file TrackballControl.cpp.

virtual bool BIAS::ControlInterface::RightMouseSingleClicked ( int  ,
int   
)
inlinevirtualinherited

react to right mouse single click event overwrite in derived class of desired

Definition at line 110 of file ControlInterface.hh.

Referenced by BIAS::RenderContextBase::RightMouseSingleClicked().

virtual bool BIAS::ControlInterface::RightMouseUp ( int  ,
int   
)
inlinevirtualinherited

react to right mouse button up event overwrite in derived class of desired

Definition at line 130 of file ControlInterface.hh.

Referenced by BIAS::RenderContextBase::RightMouseUp().

void TrackballControl::RotateAroundPOI ( BIAS::Vector3< double >  axis,
double  angleRAD 
)
void TrackballControl::RotateAroundViewingDirection ( double  rotationAngleRAD)
void BIAS::Debug::SetDebugLevel ( const long int  lv)
inlineinherited
void BIAS::Debug::SetDebugLevel ( const std::string &  name)
inlineinherited

Definition at line 325 of file Debug.hh.

void BIAS::Debug::SetDebugStream ( const std::ostream &  os)
inlineinherited

Definition at line 398 of file Debug.hh.

static void BIAS::Debug::SetGlobalDebugLevel ( long int  lev)
inlinestaticinherited

Definition at line 424 of file Debug.hh.

void TrackballControl::SetGLProjectionParametersInterface ( BIAS::GLProjectionParametersInterface projInterface)
virtual

Set the ProjectionParametersInterface (camera)

Reimplemented from BIAS::ControlInterface.

Definition at line 383 of file TrackballControl.cpp.

References BIAS::MatrixIdentity, BIAS::ControlInterface::SetGLProjectionParametersInterface(), and BIAS::Matrix3x3< T >::SetIdentity().

virtual void BIAS::ControlInterface::SetName ( std::string  name)
inlinevirtualinherited

Set the name of the controller.

Definition at line 74 of file ControlInterface.hh.

void TrackballControl::SetPointOfInterest ( const BIAS::Vector3< double > &  poi)

Set point of interest the controller will circle around.

Adapts stepsize of movement depending on scene distance to camera

Definition at line 361 of file TrackballControl.cpp.

References BIAS::Vector3< T >::NormL2().

void TrackballBase::SetStepsize ( double  stepsize)
inherited

Definition at line 17 of file TrackballBase.cpp.

void BIAS::TrackballBase::SetUseLeftDouble ( bool  ld)
inlineinherited

Definition at line 31 of file TrackballBase.hh.

void BIAS::Debug::ShowDebugLevel ( std::ostream &  os = std::cout) const
inlineinherited

prints all internally known debuglevels

Author
woelk 09/2006

Definition at line 496 of file Debug.hh.

bool TrackballBase::SpecialKeyPressed ( int  )
virtualinherited

react to press of special keys such as F1-F12, ...

overwrite in derived class of desired

Reimplemented from BIAS::ControlInterface.

Definition at line 23 of file TrackballBase.cpp.

virtual bool BIAS::ControlInterface::SpecialKeyUp ( int  )
inlinevirtualinherited

react to press of special keys such as F1-F12, ...

overwrite in derived class of desired

Definition at line 170 of file ControlInterface.hh.

Referenced by BIAS::RenderContextBase::SpecialKeyUp().

virtual bool BIAS::ControlInterface::StandardKeyPressed ( unsigned char  ,
int  ,
int   
)
inlinevirtualinherited

react to press of ascii-coded charakter plus pointer position

Reimplemented in BIAS::biasGLviewerGLUT.

Definition at line 174 of file ControlInterface.hh.

Referenced by BIAS::RenderContextBase::StandardKeyPressed().

virtual bool BIAS::ControlInterface::StandardKeyUp ( unsigned  char,
int  ,
int   
)
inlinevirtualinherited

react to press of ascii-coded charakter plus pointer position

Definition at line 178 of file ControlInterface.hh.

Referenced by BIAS::RenderContextBase::StandardKeyUp().

virtual bool BIAS::ControlInterface::TimerExpired ( )
inlinevirtualinherited

this function is called by RenderContextBase when timer is expired Overwrite and implement to do some timer dependend processing

Reimplemented in BIAS::AutoControl, and BIAS::ScreenShotListener.

Definition at line 183 of file ControlInterface.hh.

Referenced by BIAS::RenderContextBase::TimerExpired().

virtual bool BIAS::ControlInterface::WindowReshape ( int  ,
int   
)
inlinevirtualinherited

this function is called by RenderContextBase if the window is reshaped.

Overwrite and implement to do some processing upon reshape

Definition at line 188 of file ControlInterface.hh.

Referenced by BIAS::RenderContextBase::WindowReshape().

Member Data Documentation

long int BIAS::Debug::_liDebugLevel
protectedinherited

Definition at line 510 of file Debug.hh.

Referenced by BIAS::Debug::operator=(), and BIAS::ImageBase::operator=().

long int BIAS::Debug::_liNextDebugLevel
protectedinherited

new concept, debuglevel are managed here in the debug class

Definition at line 516 of file Debug.hh.

Referenced by BIAS::Debug::operator=().

std::map<std::string, long int> BIAS::Debug::_String2Debuglevel
protectedinherited

Definition at line 517 of file Debug.hh.

Referenced by BIAS::Debug::operator=().

std::ostream BIAS::Debug::_zDebugStream
staticprotectedinherited

Definition at line 511 of file Debug.hh.

Referenced by BIAS::Debug::operator=().

BIAS::GLProjectionParametersInterface* BIAS::ControlInterface::controlledObject_
protectedinherited

the camera which is controlled by this controller

Definition at line 214 of file ControlInterface.hh.

long int BIAS::Debug::GlobalDebugLevel = 0
staticprotectedinherited

Definition at line 513 of file Debug.hh.

std::string BIAS::ControlInterface::listenerName_
protectedinherited

name of listener/controller

Definition at line 208 of file ControlInterface.hh.

BIAS::Vector3<double> BIAS::TrackballControl::PointOfInterest_
protected

Definition at line 69 of file TrackballControl.hh.

double BIAS::TrackballBase::Stepsize_
protectedinherited

Definition at line 69 of file TrackballBase.hh.

bool BIAS::TrackballBase::UseLeftDouble_
protectedinherited

Definition at line 70 of file TrackballBase.hh.


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