SbRotation(3IV)NAMESbRotation (SbRot) - class for representing a rotation
INHERITS FROMSbRotationSYNOPSIS
#include <Inventor_c/SbLinear.h>
typedef SbRotation SbRot
Functions from class SbRotation:
void SbRotGetAxisAngle(const SbRot *this, SbVec3f *axis,
float *radians)
void SbRotGetMx(const SbRot *this, SbMatrix *matrix)
SbRotation * SbRotInvert(SbRot *this)
SbRotation SbRotInverse(const SbRot *this)
SbRotation * SbRotSetMx(SbRot *this, const SbMatrix *m)
SbRotation * SbRotSetAxisAngle(SbRot *this, const SbVec3f *axis,
float radians)
SbRotation * SbRotSetFromTo(SbRot *this, const SbVec3f
*rotateFrom, const SbVec3f *rotateTo)
int SbRotIsEq(SbRot *this, const SbRotation *q1, const
SbRotation *q2)
int SbRotIsNEq(SbRot *this, const SbRotation *q1, const
SbRotation *q2)
SbBool SbRotEquals(const SbRot *this, const SbRotation *r,
float tolerance)
SbRotation SbRotMult(SbRot *this, const SbRotation *q1, const
SbRotation *q2)
void SbRotMultVec(const SbRot *this, const SbVec3f *src,
SbVec3f *dst)
void SbRotScaleAngle(SbRot *this, float scaleFactor )
SbRotation SbRotSlerp(const SbRotation *rot0, const SbRotation
*rot1, float t)
SbRotationSbRotIdent()
Macros from class SbRotation:
SbRotGetQuat(float *dest, SbRotation *src)
SbRotGetQ_U_A_T(float q0, float q1, float q2, float q3,
SbRotation *src)
SbRotSetQuat(SbRotation *dest, float *src)
SbRotSetQ_U_A_T(SbRotation *dest, float q0, float q1,
float q2, float q3)
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. This
Page 1SbRotation(3IV)
object does not have Create or Delete functions because it is a simple
datatype. C programmers should declare and/or malloc rotations as
standard C structs. Access the components of the vector as though it is a
simple structure or use the access and operation functions described in
this reference page:
/* This is defined in Inventor_c/SbLinear.h: */
struct SbRotation {
float quat[4];
};
typedef SbRotation SbRot
/* This is what your code should look like: */
SbRot r1, r2;
/* The next two lines produce equivalent rotations. */
r1.quat[0] = 1.0; r1.quat[1] = r1.quat[2] = 0.0; r1.quat[3] = 1.0;
SbRotSetQ_U_A_T( v2, 1.0, 0.0, 0.0, 1.0 );
FUNCTIONS
void SbRotGetAxisAngle(const SbRot *this, SbVec3f *axis,
float *radians)
Returns corresponding 3D rotation axis vector and angle in radians.
void SbRotGetMx(const SbRot *this, SbMatrix *matrix)
Returns corresponding 4x4 rotation matrix.
SbRotation * SbRotInvert(SbRot *this)
Changes a rotation to be its inverse.
SbRotation SbRotInverse(const SbRot *this)
Returns the inverse of a rotation.
SbRotation * SbRotSetMx(SbRot *this, const SbMatrix *m)
Sets value of rotation from a rotation matrix.
SbRotation * SbRotSetAxisAngle(SbRot *this, const SbVec3f *axis,
float radians)
Sets value of vector from 3D rotation axis vector and angle in
radians.
SbRotation * SbRotSetFromTo(SbRot *this, 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.
int SbRotIsEq(SbRot *this, const SbRotation *q1, const
SbRotation *q2)
Page 2SbRotation(3IV)
int SbRotIsNEq(SbRot *this, const SbRotation *q1, const
SbRotation *q2)
Equality comparison operators.
SbBool SbRotEquals(const SbRot *this, const SbRotation *r,
float tolerance)
Equality comparison within given tolerance - the square of the
length of the maximum distance between the two quaternion vectors.
SbRotation SbRotMult(SbRot *this, const SbRotation *q1, const
SbRotation *q2)
Multiplication of two rotations; results in product of rotations.
void SbRotMultVec(const SbRot *this, const SbVec3f *src,
SbVec3f *dst)
Multiplies the given vector by the matrix of this rotation.
void SbRotScaleAngle(SbRot *this, float scaleFactor )
Keep the axis the same. Multiply the angle of rotation by the amount
scaleFactor.
SbRotation SbRotSlerp(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.
SbRotationSbRotIdent()
Returns a null rotation.
MACROS
SbRotGetQuat(float *dest, SbRotation *src)
SbRotGetQ_U_A_T(float q0, float q1, float q2, float q3,
SbRotation *src)
SbRotSetQuat(SbRotation *dest, float *src)
SbRotSetQ_U_A_T(SbRotation *dest, float q0, float q1,
float q2, float q3)
Sets and gets rotations in the form of quaternions. The quaternion
may be passed either as an array of length 4 or as 4 separate
components.
FILE FORMAT/DEFAULTS
Rotation {
}
NOTES
Rotations are stored internally as quaternions.
SEE ALSO
SbVec3f, SbMatrix
Page 3SbRotation(3IV)Page 4