libQGLViewer  Version 2.3.17
 All Classes Namespaces Files Functions Variables Enumerations Enumerator Friends Macros
Public Member Functions
ManipulatedCameraFrame Class Reference

The ManipulatedCameraFrame class represents a ManipulatedFrame with Camera specific mouse bindings. More...

List of all members.

void setRotationSensitivity (float sensitivity)
void setTranslationSensitivity (float sensitivity)
void setSpinningSensitivity (float sensitivity)
void setWheelSensitivity (float sensitivity)
void setSpinningQuaternion (const Quaternion &spinningQuaternion)
virtual void startSpinning (int updateInterval)
virtual void stopSpinning ()

Public Member Functions

 ManipulatedCameraFrame ()
virtual ~ManipulatedCameraFrame ()
 ManipulatedCameraFrame (const ManipulatedCameraFrame &mcf)
ManipulatedCameraFrame & operator= (const ManipulatedCameraFrame &mcf)
- Public Member Functions inherited from ManipulatedFrame
 ManipulatedFrame ()
virtual ~ManipulatedFrame ()
 ManipulatedFrame (const ManipulatedFrame &mf)
ManipulatedFrameoperator= (const ManipulatedFrame &mf)
float rotationSensitivity () const
float translationSensitivity () const
float spinningSensitivity () const
float wheelSensitivity () const
bool isSpinning () const
Quaternion spinningQuaternion () const
bool isManipulated () const
virtual void checkIfGrabsMouse (int x, int y, const Camera *const camera)
- Public Member Functions inherited from Frame
 Frame ()
virtual ~Frame ()
 Frame (const Frame &frame)
Frameoperator= (const Frame &frame)
 Frame (const Vec &position, const Quaternion &orientation)
void setPosition (const Vec &position)
void setPosition (float x, float y, float z)
void setPositionWithConstraint (Vec &position)
void setOrientation (const Quaternion &orientation)
void setOrientation (double q0, double q1, double q2, double q3)
void setOrientationWithConstraint (Quaternion &orientation)
void setPositionAndOrientation (const Vec &position, const Quaternion &orientation)
void setPositionAndOrientationWithConstraint (Vec &position, Quaternion &orientation)
Vec position () const
Quaternion orientation () const
void getPosition (float &x, float &y, float &z) const
void getOrientation (double &q0, double &q1, double &q2, double &q3) const
void setTranslation (const Vec &translation)
void setTranslation (float x, float y, float z)
void setTranslationWithConstraint (Vec &translation)
void setRotation (const Quaternion &rotation)
void setRotation (double q0, double q1, double q2, double q3)
void setRotationWithConstraint (Quaternion &rotation)
void setTranslationAndRotation (const Vec &translation, const Quaternion &rotation)
void setTranslationAndRotationWithConstraint (Vec &translation, Quaternion &rotation)
Vec translation () const
Quaternion rotation () const
void getTranslation (float &x, float &y, float &z) const
void getRotation (double &q0, double &q1, double &q2, double &q3) const
const FramereferenceFrame () const
void setReferenceFrame (const Frame *const refFrame)
bool settingAsReferenceFrameWillCreateALoop (const Frame *const frame)
void translate (Vec &t)
void translate (const Vec &t)
void translate (float x, float y, float z)
void translate (float &x, float &y, float &z)
void rotate (Quaternion &q)
void rotate (const Quaternion &q)
void rotate (double q0, double q1, double q2, double q3)
void rotate (double &q0, double &q1, double &q2, double &q3)
void rotateAroundPoint (Quaternion &rotation, const Vec &point)
void rotateAroundPoint (const Quaternion &rotation, const Vec &point)
void alignWithFrame (const Frame *const frame, bool move=false, float threshold=0.85f)
void projectOnLine (const Vec &origin, const Vec &direction)
Vec coordinatesOf (const Vec &src) const
Vec inverseCoordinatesOf (const Vec &src) const
Vec localCoordinatesOf (const Vec &src) const
Vec localInverseCoordinatesOf (const Vec &src) const
Vec coordinatesOfIn (const Vec &src, const Frame *const in) const
Vec coordinatesOfFrom (const Vec &src, const Frame *const from) const
void getCoordinatesOf (const float src[3], float res[3]) const
void getInverseCoordinatesOf (const float src[3], float res[3]) const
void getLocalCoordinatesOf (const float src[3], float res[3]) const
void getLocalInverseCoordinatesOf (const float src[3], float res[3]) const
void getCoordinatesOfIn (const float src[3], float res[3], const Frame *const in) const
void getCoordinatesOfFrom (const float src[3], float res[3], const Frame *const from) const
Vec transformOf (const Vec &src) const
Vec inverseTransformOf (const Vec &src) const
Vec localTransformOf (const Vec &src) const
Vec localInverseTransformOf (const Vec &src) const
Vec transformOfIn (const Vec &src, const Frame *const in) const
Vec transformOfFrom (const Vec &src, const Frame *const from) const
void getTransformOf (const float src[3], float res[3]) const
void getInverseTransformOf (const float src[3], float res[3]) const
void getLocalTransformOf (const float src[3], float res[3]) const
void getLocalInverseTransformOf (const float src[3], float res[3]) const
void getTransformOfIn (const float src[3], float res[3], const Frame *const in) const
void getTransformOfFrom (const float src[3], float res[3], const Frame *const from) const
Constraintconstraint () const
void setConstraint (Constraint *const constraint)
const GLdouble * matrix () const
void getMatrix (GLdouble m[4][4]) const
void getMatrix (GLdouble m[16]) const
const GLdouble * worldMatrix () const
void getWorldMatrix (GLdouble m[4][4]) const
void getWorldMatrix (GLdouble m[16]) const
void setFromMatrix (const GLdouble m[4][4])
void setFromMatrix (const GLdouble m[16])
Frame inverse () const
Frame worldInverse () const
- Public Member Functions inherited from MouseGrabber
 MouseGrabber ()
virtual ~MouseGrabber ()
bool grabsMouse () const
bool isInMouseGrabberPool () const
void addInMouseGrabberPool ()
void removeFromMouseGrabberPool ()
void clearMouseGrabberPool (bool autoDelete=false)
virtual void mousePressEvent (QMouseEvent *const event, Camera *const camera)
virtual void mouseDoubleClickEvent (QMouseEvent *const event, Camera *const camera)
void setGrabsMouse (bool grabs)

Revolve around point

Vec revolveAroundPoint () const
void setRevolveAroundPoint (const Vec &revolveAroundPoint)

Fly parameters

float flySpeed () const
Vec flyUpVector () const
void setFlySpeed (float speed)
void setFlyUpVector (const Vec &up)

Mouse event handlers

virtual void mouseReleaseEvent (QMouseEvent *const event, Camera *const camera)
virtual void mouseMoveEvent (QMouseEvent *const event, Camera *const camera)
virtual void wheelEvent (QWheelEvent *const event, Camera *const camera)

Spinning

virtual void spin ()

XML representation

virtual QDomElement domElement (const QString &name, QDomDocument &document) const
virtual void initFromDOMElement (const QDomElement &element)

Additional Inherited Members

- Signals inherited from ManipulatedFrame
void manipulated ()
void spun ()
- Signals inherited from Frame
void modified ()
void interpolated ()

Detailed Description

The ManipulatedCameraFrame class represents a ManipulatedFrame with Camera specific mouse bindings.

A ManipulatedCameraFrame is a specialization of a ManipulatedFrame, designed to be set as the Camera::frame(). Mouse motions are basically interpreted in a negated way: when the mouse goes to the right, the ManipulatedFrame translation goes to the right, while the ManipulatedCameraFrame has to go to the left, so that the scene seems to move to the right.

A ManipulatedCameraFrame rotates around its revolveAroundPoint(), which corresponds to the associated Camera::revolveAroundPoint().

A ManipulatedCameraFrame can also "fly" in the scene. It basically moves forward, and turns according to the mouse motion. See flySpeed(), flyUpVector() and the MOVE_FORWARD and MOVE_BACKWARD QGLViewer::MouseAction.

See the mouse page for a description of the possible actions that can be performed using the mouse and their bindings.


Constructor & Destructor Documentation

ManipulatedCameraFrame ( )

Default constructor.

flySpeed() is set to 0.0 and flyUpVector() is (0,1,0). The revolveAroundPoint() is set to (0,0,0).

Attention:
Created object is removeFromMouseGrabberPool().
virtual ~ManipulatedCameraFrame ( )
virtual

Virtual destructor. Empty.

ManipulatedCameraFrame ( const ManipulatedCameraFrame &  mcf)

Copy constructor. Performs a deep copy of all members using operator=().


Member Function Documentation

QDomElement domElement ( const QString &  name,
QDomDocument &  document 
) const
virtual

Returns an XML QDomElement that represents the ManipulatedCameraFrame.

Adds to the ManipulatedFrame::domElement() the ManipulatedCameraFrame specific informations in a ManipulatedCameraParameters child QDomElement.

name is the name of the QDomElement tag. doc is the QDomDocument factory used to create QDomElement.

Use initFromDOMElement() to restore the ManipulatedCameraFrame state from the resulting QDomElement.

See Vec::domElement() for a complete example. See also Quaternion::domElement(), Frame::domElement(), Camera::domElement()...

Reimplemented from ManipulatedFrame.

float flySpeed ( ) const

Returns the fly speed, expressed in OpenGL units.

It corresponds to the incremental displacement that is periodically applied to the ManipulatedCameraFrame position when a MOVE_FORWARD or MOVE_BACKWARD QGLViewer::MouseAction is proceeded.

Attention:
When the ManipulatedCameraFrame is set as the Camera::frame(), this value is set according to the QGLViewer::sceneRadius() by QGLViewer::setSceneRadius().
Vec flyUpVector ( ) const

Returns the up vector used in fly mode, expressed in the world coordinate system.

Fly mode corresponds to the MOVE_FORWARD and MOVE_BACKWARD QGLViewer::MouseAction bindings. In these modes, horizontal displacements of the mouse rotate the ManipulatedCameraFrame around this vector. Vertical displacements rotate always around the Camera X axis.

Default value is (0,1,0), but it is updated by the Camera when set as its Camera::frame(). Camera::setOrientation() and Camera::setUpVector()) modify this value and should be used instead.

void initFromDOMElement ( const QDomElement &  element)
virtualslot

Restores the ManipulatedCameraFrame state from a QDomElement created by domElement().

First calls ManipulatedFrame::initFromDOMElement() and then initializes ManipulatedCameraFrame specific parameters.

Reimplemented from ManipulatedFrame.

void mouseMoveEvent ( QMouseEvent *const  event,
Camera *const  camera 
)
protectedvirtual

Overloading of ManipulatedFrame::mouseMoveEvent().

Motion depends on mouse binding (see mouse page for details). The resulting displacements are basically inverted from those of a ManipulatedFrame.

Reimplemented from ManipulatedFrame.

void mouseReleaseEvent ( QMouseEvent *const  event,
Camera *const  camera 
)
protectedvirtual

This is an overload of ManipulatedFrame::mouseReleaseEvent(). The QGLViewer::MouseAction is terminated.

Reimplemented from ManipulatedFrame.

ManipulatedCameraFrame & operator= ( const ManipulatedCameraFrame &  mcf)

Equal operator. Calls ManipulatedFrame::operator=() and then copy attributes.

Vec revolveAroundPoint ( ) const

Returns the point the ManipulatedCameraFrame revolves around when rotated.

It is defined in the world coordinate system. Default value is (0,0,0).

When the ManipulatedCameraFrame is associated to a Camera, Camera::revolveAroundPoint() also returns this value. This point can interactively be changed using the mouse (see RAP_FROM_PIXEL and RAP_IS_CENTER in the mouse page).

void setFlySpeed ( float  speed)
slot

Sets the flySpeed(), defined in OpenGL units.

Default value is 0.0, but it is modified according to the QGLViewer::sceneRadius() when the ManipulatedCameraFrame is set as the Camera::frame().

void setFlyUpVector ( const Vec up)
slot

Sets the flyUpVector(), defined in the world coordinate system.

Default value is (0,1,0), but it is updated by the Camera when set as its Camera::frame(). Use Camera::setUpVector() instead in that case.

void setRevolveAroundPoint ( const Vec revolveAroundPoint)

Sets the revolveAroundPoint(), defined in the world coordinate system.

void spin ( )
protectedvirtualslot

Overloading of ManipulatedFrame::spin().

Rotates the ManipulatedCameraFrame around its revolveAroundPoint() instead of its origin.

Reimplemented from ManipulatedFrame.

void wheelEvent ( QWheelEvent *const  event,
Camera *const  camera 
)
protectedvirtual

This is an overload of ManipulatedFrame::wheelEvent().

The wheel behavior depends on the wheel binded action. Current possible actions are ZOOM, MOVE_FORWARD, MOVE_BACKWARD. ZOOM speed depends on wheelSensitivity() while MOVE_FORWARD and MOVE_BACKWARD depend on flySpeed(). See QGLViewer::setWheelBinding() to customize the binding.

Reimplemented from ManipulatedFrame.