SbRotation(3IV)

NAME
SbRotation — class for representing a rotation

INHERITS FROM
SbRotation

SYNOPSIS
#include <Inventor/SbLinear.h>

Methods from class SbRotation:

SbRotation()

SbRotation(const SbVec3f &axis, float radians)

SbRotation(const float v[4])

SbRotation(float q0, float q1, float q2, float q3)

SbRotation(const SbMatrix &m)

SbRotation(const SbVec3f &rotateFrom, const SbVec3f &rotateTo)
const float *
getValue() const
void
getValue(float &q0, float &q1, float &q2, float &q3) const
SbRotation &
setValue(float q0, float q1, float q2, float q3)
void
getValue(SbVec3f &axis, float &radians) const
void
getValue(SbMatrix &matrix) const
SbRotation &
invert()
SbRotation
inverse() const
SbRotation &
setValue(const float q[4])
SbRotation &
setValue(const SbMatrix &m)
SbRotation &
setValue(const SbVec3f &axis, float radians)
SbRotation &
setValue(const SbVec3f &rotateFrom, const SbVec3f &rotateTo)
SbRotation &
operator *=(const SbRotation &q)
int
operator ==(const SbRotation &q1, const SbRotation &q2)
int
operator !=(const SbRotation &q1, const SbRotation &q2)
SbBool
equals(const SbRotation &r, float tolerance) const
SbRotation
operator *(const SbRotation &q1, const SbRotation &q2)
void
multVec(const SbVec3f &src, SbVec3f &dst) const
void
scaleAngle(float scaleFactor )
static SbRotation
slerp(const SbRotation &rot0, const SbRotation &rot1, float t)
static SbRotation
identity()

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.

METHODS

SbRotation()

SbRotation(const SbVec3f &axis, float radians)

SbRotation(const float v[4])

SbRotation(float q0, float q1, float q2, float q3)

SbRotation(const SbMatrix &m)

SbRotation(const SbVec3f &rotateFrom, const SbVec3f &rotateTo)
Constructors for rotation. 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.

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.

SbRotation &
setValue(float q0, float q1, float q2, float q3)
Sets value of rotation from 4 individual components of a 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.

SbRotation &
invert()
Changes a rotation to be its inverse.

SbRotation
inverse() const
Returns the inverse of a rotation.

SbRotation &
setValue(const float q[4])
Sets value of rotation from array of 4 components of a quaternion.

SbRotation &
setValue(const SbMatrix &m)
Sets value of rotation from a rotation matrix.

SbRotation &
setValue(const SbVec3f &axis, float radians)
Sets value of vector from 3D rotation axis vector and angle in radians.

SbRotation &
setValue(const SbVec3f &rotateFrom, const SbVec3f &rotateTo)
Sets rotation to rotate one direction vector to another. The rotateFrom and rotateTo arguments are normalized before the rotation is calculated.

SbRotation &
operator *=(const SbRotation &q)
Multiplies by another rotation; results in product of rotations.

int
operator ==(const SbRotation &q1, const SbRotation &q2)
int
operator !=(const SbRotation &q1, const SbRotation &q2)
Equality comparison operators.

SbBool
equals(const SbRotation &r, float tolerance) const
Equality comparison within given tolerance — the square of the length of the maximum distance between the two quaternion vectors.

SbRotation
operator *(const SbRotation &q1, const SbRotation &q2)
Multiplication of two rotations; results in product of rotations.

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. Multiply the angle of rotation by the amount scaleFactor.

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.

NOTES
Rotations are stored internally as quaternions.

SEE ALSO
SbVec3f, SbMatrix