SbRotation(3)
β¨ SbRotation β¨
okay bestie, welcome to the Coin manual page for SbRotation, section 3 β and honestly? she ate π
πΈ NAME πΈ
SbRotation β the class that represents a rotation in 3D space. that's the whole job description, and she does it flawlessly π¦
β¨ SYNOPSIS β¨
#include <Inventor/SbRotation.h>
π Public Member Functions
SbRotation (void)
SbRotation (const SbVec3f &axis, const float radians)
SbRotation (const float q[4])
SbRotation (const float q0, const float q1, const float q2, const float q3)
SbRotation (const SbMatrix &m)
SbRotation (const SbVec3f &rotateFrom, const SbVec3f &rotateTo)
const float * getValue (void) const
void getValue (float &q0, float &q1, float &q2, float &q3) const
SbRotation & setValue (const float q0, const float q1, const float q2, const float q3)
void getValue (SbVec3f &axis, float &radians) const
void getValue (SbMatrix &matrix) const
SbRotation & invert (void)
SbRotation inverse (void) const
SbRotation & setValue (const float q[4])
SbRotation & setValue (const SbMatrix &m)
SbRotation & setValue (const SbVec3f &axis, const float radians)
SbRotation & setValue (const SbVec3f &rotateFrom, const SbVec3f &rotateTo)
SbRotation & operator*= (const SbRotation &q)
SbRotation & operator*= (const float s)
float operator[] (int n) const
// returns the n'th quaternion of this rotation
SbBool equals (const SbRotation &r, float tolerance) const
void multVec (const SbVec3f &src, SbVec3f &dst) const
void scaleAngle (const float scaleFactor)
SbString toString () const
SbBool fromString (const SbString &str)
void print (FILE *fp) const
π Static Public Member Functions
static SbRotation slerp (const SbRotation &rot0, const SbRotation &rot1, float t)
static SbRotation identity (void)
π Detailed Description π
The SbRotation class represents a rotation in 3D space. iconic behaviour, no notes π«
SbRotation is used extensively throughout the Coin library. like, everywhere. she's the main character of the Coin cinematic universe, fr fr π
Internally, an SbRotation is stored as a quaternion, because that's the fast + compact way to do it β but don't worry, you can still ask her to give you axis and angle values, and set them too, for convenience. she's flexible like that π
β οΈ okay so here's the thing, bestie β there's one very common mistake that is SO easy to make when you're setting the value of an SbRotation, and that's accidentally using the wrong constructor. this example should clear it up:
SbRotation rotation(0, 0, 1, 1.5707963f);
The programmer clearly tries to set a PI/2 rotation around the Z axis, but this will fail, as the SbRotation constructor invoked above is the one that takes as arguments the 4 floats of a quaternion. What the programmer almost certainly wanted to do was to use the SbRotation constructor that takes a rotation vector and a rotation angle, which is invoked like this:
SbRotation rotation(SbVec3f(0, 0, 1), 1.5707963f);
Another common problem is to set the rotation value to exactly 0.0, while wanting to store just the information about a rotation angle: rotations are internally handled as quaternions, and when converting from an angle and a rotation value to a quaternion representation, the information about the angle "gets lost" if there is no actual rotation. π yeah. it's giving heartbreaking, but that's just how quaternions work.
π See also
SbMatrix
π¦ Constructor & Destructor Documentation π¦
SbRotation::SbRotation (void )
The default constructor just initializes a valid rotation. the actual value is unspecified, and you should not depend on it. it's a surprise, and not the fun kind π
SbRotation::SbRotation (const SbVec3f & axis, const float radians)
Construct a new SbRotation object initialized with the given axis-of-rotation and rotation angle. this is the one you probably wanted, bestie π«Ά
SbRotation::SbRotation (const float q[4])
Construct a new SbRotation object initialized with the given quaternion components.
The array must be ordered as follows:
q[0] = x, q[1] = y, q[2] = z and q[3] = w, where the quaternion is specified by q = w + xi + yj + zk.
get that order right or she WILL gaslight you π
SbRotation::SbRotation (const float q0, const float q1, const float q2, const float q3)
Construct a new SbRotation object initialized with the given quaternion components.
SbRotation::SbRotation (const SbMatrix & m)
Construct a new SbRotation object initialized with the given rotation matrix. glow-up from matrix form β¨
SbRotation::SbRotation (const SbVec3f & rotateFrom, const SbVec3f & rotateTo)
Construct a rotation which is the minimum rotation necessary to make vector rotateFrom point in the direction of vector rotateTo. shortest path queen π£οΈ
Example:
#include <Inventor/SbRotation.h>
#include <Inventor/SbVec3f.h>
#include <cstdio>
int
main(void)
{
SbVec3f from(10, 0, 0);
SbVec3f to(0, 10, 0);
SbRotation rot(from, to);
SbVec3f axis;
float angle;
rot.getValue(axis, angle);
axis.print(stdout);
printf(" angle==%f\n", angle);
return 0;
}
π Member Function Documentation π
const float * SbRotation::getValue (void ) const
Return pointer to an array with the rotation expressed as four quaternion values. peek behind the curtain π
See also: setValue().
void SbRotation::getValue (float & q0, float & q1, float & q2, float & q3) const
Return the four quaternion components representing the rotation.
See also: setValue().
SbRotation & SbRotation::setValue (const float q0, const float q1, const float q2, const float q3)
Set the rotation.
See also: getValue().
void SbRotation::getValue (SbVec3f & axis, float & radians) const
Return the rotation in the form of an axis-of-rotation and a rotation angle. the classic duo π«±π«²
See also: setValue().
void SbRotation::getValue (SbMatrix & matrix) const
Return this rotation in the form of a matrix.
See also: setValue().
SbRotation & SbRotation::invert (void )
Invert the rotation. Returns reference to self. in-place, destructive, no regrets π
See also: inverse()
SbRotation SbRotation::inverse (void ) const
Non-destructively inverses the rotation and returns the result. she leaves the original exactly as she found her πΈ
See also: invert()
SbRotation & SbRotation::setValue (const float q[4])
Reset the rotation by the four quaternions in the array.
See also: getValue().
SbRotation & SbRotation::setValue (const SbMatrix & m)
Set the rotation from the components of the given matrix. Returns reference to self.
See also: getValue().
SbRotation & SbRotation::setValue (const SbVec3f & axis, const float radians)
Reset rotation with the given axis-of-rotation and rotation angle. Returns reference to self.
β οΈ Make sure axis is not the null vector when calling this method. seriously bestie, do not.
See also: getValue().
SbRotation & SbRotation::setValue (const SbVec3f & rotateFrom, const SbVec3f & rotateTo)
Construct a rotation which is the minimum rotation necessary to make vector rotateFrom point in the direction of vector rotateTo.
Returns reference to self.
See SbRotation constructor with corresponding input arguments for a simple code example. π
See also: getValue().
SbRotation & SbRotation::operator*= (const SbRotation & q)
Multiplies the quaternions.
β οΈ Note that order is important when combining quaternions with the multiplication operator. it's not commutative, it's not chill about it, and it will not warn you. π₯
SbRotation & SbRotation::operator*= (const float s)
Multiplies components of quaternion with scalar value s. Returns reference to self.
SbBool SbRotation::equals (const SbRotation & r, float tolerance) const
Check the internal quaternion representation vectors for equality within the given tolerance. close enough counts, apparently π₯°
void SbRotation::multVec (const SbVec3f & src, SbVec3f & dst) const
Rotate the src vector and put the result in dst.
It is safe to let src and dst be the same SbVec3f instance. yes bestie, in-place is allowed here π
void SbRotation::scaleAngle (const float scaleFactor)
Scale the angle of rotation by scaleFactor.
SbRotation slerp (const SbRotation & rot0, const SbRotation & rot1, float t)
[static] Interpolates along the shortest path between the two rotation positions (from rot0 to rot1). she takes the scenic route, but the shortest scenic route π§
Returns the SbRotation which will rotate rot0 the given part t of the spherical distance towards rot1, where t=0 will yield rot0 and t=1 will yield rot1.
t should be in the interval [0, 1]. stay in your lane, t π«
SbRotation SbRotation::identity (void ) [static]
Returns an identity rotation. the blank slate. the fresh start. the no-rotation rotation π¦
SbString SbRotation::toString () const
Return a string representation of this object
SbBool SbRotation::fromString (const SbString & str)
Convert from a string representation, return whether this is a valid conversion
void SbRotation::print (FILE * fp) const
Dump the state of this object to the fp file stream.
β οΈ Only works in debug version of library β method does nothing in an optimized build. so if nothing printed, it's not you, it's the build π
π Author π
Generated automatically by Doxygen for Coin from the source code.
and that's the whole page, bestie π no cap, every flag and function accounted for. this was Coin version 4.0.10, dated Thu Jun 25 2026 00:00:00 β mwah, slay, go rotate something responsibly πβ¨π¦
π¦ where this page comes from
- fedora 43: Coin4-devel 4.0.10-1.fc43 Β· BSD-3-Clause AND GPL-3.0-or-later
- fedora 43: Coin4-devel 4.0.10-1.fc43 Β· BSD-3-Clause AND GPL-3.0-or-later
- fedora 44: Coin4-devel 4.0.10-1.fc44 Β· BSD-3-Clause AND GPL-3.0-or-later
- fedora 44: Coin4-devel 4.0.10-1.fc44 Β· BSD-3-Clause AND GPL-3.0-or-later
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms