Coin3D is Free Software, published under the BSD 3-clause license. |
https://bitbucket.org/Coin3D/ http://www.kongsberg.com/kogt/ |
The SbDPRotation class represents a rotation in 3D space using double precision data. More...
#include <Inventor/SbDPRotation.h>
Public Member Functions | |
SbDPRotation (void) | |
SbDPRotation (const SbVec3d &axis, const double radians) | |
SbDPRotation (const double q[4]) | |
SbDPRotation (const double q0, const double q1, const double q2, const double q3) | |
SbDPRotation (const SbDPMatrix &m) | |
SbDPRotation (const SbVec3d &rotateFrom, const SbVec3d &rotateTo) | |
const double * | getValue (void) const |
void | getValue (double &q0, double &q1, double &q2, double &q3) const |
SbDPRotation & | setValue (const double q0, const double q1, const double q2, const double q3) |
void | getValue (SbVec3d &axis, double &radians) const |
void | getValue (SbDPMatrix &matrix) const |
SbDPRotation & | invert (void) |
SbDPRotation | inverse (void) const |
SbDPRotation & | setValue (const double q[4]) |
SbDPRotation & | setValue (const SbDPMatrix &m) |
SbDPRotation & | setValue (const SbVec3d &axis, const double radians) |
SbDPRotation & | setValue (const SbVec3d &rotateFrom, const SbVec3d &rotateTo) |
SbBool | equals (const SbDPRotation &r, double tolerance) const |
void | multVec (const SbVec3d &src, SbVec3d &dst) const |
void | scaleAngle (const double scaleFactor) |
void | print (FILE *fp) const |
SbDPRotation & | operator*= (const SbDPRotation &q) |
SbDPRotation & | operator*= (const double s) |
Static Public Member Functions | |
static SbDPRotation | slerp (const SbDPRotation &rot0, const SbDPRotation &rot1, double t) |
static SbDPRotation | identity (void) |
Friends | |
int | operator== (const SbDPRotation &q1, const SbDPRotation &q2) |
int | operator!= (const SbDPRotation &q1, const SbDPRotation &q2) |
SbDPRotation | operator* (const SbDPRotation &q1, const SbDPRotation &q2) |
The SbDPRotation class represents a rotation in 3D space using double precision data.
SbDPRotation is used extensively throughout the Coin library.
An SbDPRotation is stored internally as a quaternion for speed and storage reasons, but inquiries can be done to get and set axis and angle values for convenience.
SbDPRotation::SbDPRotation | ( | void | ) |
The default constructor just initializes a valid rotation. The actual value is unspecified, and you should not depend on it.
SbDPRotation::SbDPRotation | ( | const SbVec3d & | axis, |
const double | radians | ||
) |
Construct a new SbDPRotation object initialized with the given axis-of-rotation and rotation angle.
SbDPRotation::SbDPRotation | ( | const double | q[4] | ) |
Construct a new SbDPRotation 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.
SbDPRotation::SbDPRotation | ( | const double | q0, |
const double | q1, | ||
const double | q2, | ||
const double | q3 | ||
) |
Construct a new SbDPRotation object initialized with the given quaternion components.
SbDPRotation::SbDPRotation | ( | const SbDPMatrix & | m | ) |
Construct a new SbDPRotation object initialized with the given rotation matrix.
Construct a rotation which is the minimum rotation necessary to make vector rotateFrom point in the direction of vector rotateTo.
const double * SbDPRotation::getValue | ( | void | ) | const |
Return pointer to an array with the rotation expressed as four quaternion values.
void SbDPRotation::getValue | ( | double & | q0, |
double & | q1, | ||
double & | q2, | ||
double & | q3 | ||
) | const |
Return the four quaternion components representing the rotation.
SbDPRotation & SbDPRotation::setValue | ( | const double | q0, |
const double | q1, | ||
const double | q2, | ||
const double | q3 | ||
) |
Set the rotation.
void SbDPRotation::getValue | ( | SbVec3d & | axis, |
double & | radians | ||
) | const |
Return the rotation in the form of an axis-of-rotation and a rotation angle.
void SbDPRotation::getValue | ( | SbDPMatrix & | matrix | ) | const |
Return this rotation in the form of a matrix.
SbDPRotation & SbDPRotation::invert | ( | void | ) |
Invert the rotation. Returns reference to self.
SbDPRotation SbDPRotation::inverse | ( | void | ) | const |
Non-destructively inverses the rotation and returns the result.
SbDPRotation & SbDPRotation::setValue | ( | const double | q[4] | ) |
Reset the rotation by the four quaternions in the array.
SbDPRotation & SbDPRotation::setValue | ( | const SbDPMatrix & | m | ) |
Set the rotation from the components of the given matrix. Returns reference to self.
SbDPRotation & SbDPRotation::setValue | ( | const SbVec3d & | axis, |
const double | 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.
SbDPRotation & SbDPRotation::setValue | ( | const SbVec3d & | rotateFrom, |
const SbVec3d & | 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.
SbBool SbDPRotation::equals | ( | const SbDPRotation & | r, |
double | tolerance | ||
) | const |
Check the internal quaternion representation vectors for equality within the given tolerance.
Rotate the src vector and put the result in dst.
void SbDPRotation::scaleAngle | ( | const double | scaleFactor | ) |
Scale the angle of rotation by scaleFactor.
|
static |
Interpolates along the shortest path between the two rotation positions (from rot0 to rot1).
Returns the SbDPRotation 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].
|
static |
Returns an identity rotation.
void SbDPRotation::print | ( | FILE * | fp | ) | const |
Dump the state of this object to the file stream. Only works in debug version of library, method does nothing in an optimized compile.
SbDPRotation & SbDPRotation::operator*= | ( | const SbDPRotation & | q | ) |
Multiplies the quaternions.
Note that order is important when combining quaternions with the multiplication operator.
SbDPRotation & SbDPRotation::operator*= | ( | const double | s | ) |
Multiplies components of quaternion with scalar value s. Returns reference to self.
|
friend |
Check if the two rotations are equal.
|
friend |
Check if the two rotations are unequal.
|
friend |
Multiplies the two rotations and returns the result.
Note that order is important when combining quaternions with the multiplication operator.