table of contents
SbRotation(3IV)() | 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