---
name: "SbRotation"
section: "3iv"
platform: "linux"
package: "inventor-doc"
version: "2.1.6+ds-2"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/SbRotation/3iv"
---

# SbRotation(3iv)

class for representing a rotation

## 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**
