Open Inventor Reference
SbRotation Class Reference

Class for representing a rotation. More...

#include <Inventor/SbLinear.h>

List of all members.

Public Member Functions

 SbRotation ()
 SbRotation (const float v[4])
 SbRotation (float q0, float q1, float q2, float q3)
 SbRotation (const SbMatrix &m)
 SbRotation (const SbVec3f &axis, float radians)
 SbRotation (const SbVec3f &rotateFrom, const SbVec3f &rotateTo)
 Constructors for rotation.
const float * getValue () const
 Returns pointer to array of 4 components defining quaternion.
void getValue (float &q0, float &q1, float &q2, float &q3) const
 Returns 4 individual components of rotation quaternion.
void getValue (SbVec3f &axis, float &radians) const
 Returns corresponding 3D rotation axis vector and angle in radians.
void getValue (SbMatrix &matrix) const
 Returns corresponding 4x4 rotation matrix.
SbRotationinvert ()
 Changes a rotation to be its inverse.
SbRotation inverse () const
 Returns the inverse of a rotation.
SbRotationsetValue (const float q[4])
 Sets value of rotation from array of 4 components of a quaternion.
SbRotationsetValue (float q0, float q1, float q2, float q3)
 Sets value of rotation from 4 individual components of a quaternion.
SbRotationsetValue (const SbMatrix &m)
 Sets value of rotation from a rotation matrix.
SbRotationsetValue (const SbVec3f &axis, float radians)
 Sets value of vector from 3D rotation axis vector and angle in radians.
SbRotationsetValue (const SbVec3f &rotateFrom, const SbVec3f &rotateTo)
 Sets rotation to rotate one direction vector to another.
SbRotationoperator*= (const SbRotation &q)
 Multiplies by another rotation; results in product of rotations.
SbBool equals (const SbRotation &r, float tolerance) const
 Equality comparison within given tolerance em the square of the length of the maximum distance between the two quaternion vectors.
void multVec (const SbVec3f &src, SbVec3f &dst) const
 Multiplies the given vector by the matrix of this rotation.
void scaleAngle (float scaleFactor)
 Keep the axis the same.

Static Public Member Functions

static SbRotation slerp (const SbRotation &rot0, const SbRotation &rot1, float t)
 Spherical linear interpolation: as t goes from 0 to 1, returned value goes from rot0 to rot1.
static SbRotation identity ()
 Returns a null rotation.

Friends

INVENTOR_API int operator== (const SbRotation &q1, const SbRotation &q2)
 Equality comparison operator.
INVENTOR_API int operator!= (const SbRotation &q1, const SbRotation &q2)
INVENTOR_API SbRotation operator* (const SbRotation &q1, const SbRotation &q2)
 Multiplication of two rotations; results in product of rotations.

Detailed Description

Object that stores a rotation. There are several ways to specify a rotation: quaternion (4 floats), 4x4 rotation matrix, or axis and angle. All angles are in radians and all rotations are right-handed. {}

NOTES

Rotations are stored internally as quaternions.

See Also
SbVec3f, SbMatrix

Definition at line 621 of file SbLinear.h.


Constructor & Destructor Documentation

SbRotation::SbRotation ( ) [inline]
SbRotation::SbRotation ( const float  v[4]) [inline]
SbRotation::SbRotation ( float  q0,
float  q1,
float  q2,
float  q3 
) [inline]
SbRotation::SbRotation ( const SbMatrix m) [inline]
SbRotation::SbRotation ( const SbVec3f axis,
float  radians 
) [inline]
SbRotation::SbRotation ( const SbVec3f rotateFrom,
const SbVec3f rotateTo 
) [inline]

The axis/radians constructor creates a rotation of angle radians about the given axis. The constructors that take four floats create a quaternion from those floats (careful, this differs from the four numbers in an axis/radian definition). Matrix constructor requires a valid rotation matrix. The rotateFrom/To constructor defines rotation that rotates from one vector into another. The rotateFrom and rotateTo vectors are normalized by the constructor before calculating the rotation.

Definition at line 653 of file SbLinear.h.


Member Function Documentation

SbBool SbRotation::equals ( const SbRotation r,
float  tolerance 
) const
void SbRotation::getValue ( float &  q0,
float &  q1,
float &  q2,
float &  q3 
) const
void SbRotation::getValue ( SbMatrix matrix) const
const float* SbRotation::getValue ( ) const [inline]

Definition at line 657 of file SbLinear.h.

void SbRotation::getValue ( SbVec3f axis,
float &  radians 
) const
static SbRotation SbRotation::identity ( ) [inline, static]

Definition at line 721 of file SbLinear.h.

SbRotation SbRotation::inverse ( ) const [inline]

Definition at line 674 of file SbLinear.h.

References invert().

SbRotation& SbRotation::invert ( )

Referenced by inverse().

void SbRotation::multVec ( const SbVec3f src,
SbVec3f dst 
) const
SbRotation& SbRotation::operator*= ( const SbRotation q)
void SbRotation::scaleAngle ( float  scaleFactor)

Multiply the angle of rotation by the amount scaleFactor.

SbRotation& SbRotation::setValue ( const float  q[4])
SbRotation& SbRotation::setValue ( const SbVec3f axis,
float  radians 
)
SbRotation& SbRotation::setValue ( const SbVec3f rotateFrom,
const SbVec3f rotateTo 
)
SbRotation& SbRotation::setValue ( float  q0,
float  q1,
float  q2,
float  q3 
)
SbRotation& SbRotation::setValue ( const SbMatrix m)
static SbRotation SbRotation::slerp ( const SbRotation rot0,
const SbRotation rot1,
float  t 
) [static]

Friends And Related Function Documentation

INVENTOR_API int operator!= ( const SbRotation q1,
const SbRotation q2 
) [friend]

Definition at line 698 of file SbLinear.h.

INVENTOR_API SbRotation operator* ( const SbRotation q1,
const SbRotation q2 
) [friend]
INVENTOR_API int operator== ( const SbRotation q1,
const SbRotation q2 
) [friend]

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