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