Provided by: inventor-doc_2.1.5-10-18_all
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 SbRotation(3IV)()