![]() |
VR-Forces Developer's Guide
|
A utility Quaternion class.
Public Member Functions | |
| DtQuat () | |
| DtQuat (double x, double y, double z, double w) | |
| DtQuat (const DtVector &i, double real) | |
| DtQuat (double theta_z, double theta_y, double theta_x) | |
| DtQuat (const DtVector &angles) | |
| void | set (double x, double y, double z, double w) |
| DtQuat & | operator= (const DtQuat &q) |
| DtQuat | operator+ (const DtQuat &q) const |
| DtQuat | operator- (const DtQuat &q) const |
| DtQuat | operator* (const DtQuat &q) const |
| DtQuat | operator/ (const DtQuat &q) const |
| DtQuat | operator* (double scale) const |
| DtQuat | operator/ (double scale) const |
| DtQuat | operator- () const |
| const DtQuat & | operator+= (const DtQuat &q) |
| const DtQuat & | operator-= (const DtQuat &q) |
| const DtQuat & | operator*= (const DtQuat &q) |
| const DtQuat & | operator*= (double scale) |
| const DtQuat & | operator/= (double scale) |
| double | length () const |
| double | length_squared () const |
| void | normalize () |
| DtQuat | normalized () const |
| void | conjugate () |
| void | invert () |
| DtQuat | log () const |
| DtQuat | exp () const |
| void | getMatrix4 (double matrix[16]) const |
| void | getMatrix3 (double matrix[9]) const |
| void | to_axis_angle (DtVector &axis, double &angle) const |
| DtVector | rotate (const DtVector &v) const |
| DtVector | euler_angles () const |
Static Public Member Functions | |
| static double | dot (const DtQuat &q1, const DtQuat &q2) |
| static DtQuat | lerp (const DtQuat &q1, const DtQuat &q2, double t) |
| static DtQuat | slerp (const DtQuat &q1, const DtQuat &q2, double t) |
| static DtQuat | slerpNoInvert (const DtQuat &q1, const DtQuat &q2, double t) |
| static DtQuat | squad (const DtQuat &q1, const DtQuat &q2, const DtQuat &a, const DtQuat &b, double t) |
| static DtQuat | bezier (const DtQuat &q1, const DtQuat &q2, const DtQuat &a, const DtQuat &b, double t) |
| static DtQuat | spline (const DtQuat &qnm1, const DtQuat &qn, const DtQuat &qnp1) |
| static DtQuat | from_axis_angle (const DtVector &axis, double angle) |
Public Attributes | |
| DtVector | xyz |
| double | w |
Friends | |
| std::ostream & | operator<< (std::ostream &os, const DtQuat &) |
|
inline |
constructors
|
inline |
from 3 euler angles Note: This takes Z Y X, not xyz.
|
inline |
from 3 euler angles
|
inline |
|
inline |
gets the length of this quaternion
|
inline |
gets the squared length of this quaternion
|
inline |
normalizes this quaternion
|
inline |
returns the normalized version of this quaternion
|
inline |
computes the conjugate of this quaternion
|
inline |
inverts this quaternion
|
inline |
returns the logarithm of a quaternion = v*a where q = [cos(a),v*sin(a)]
|
inline |
returns e^quaternion = exp(v*a) = [cos(a),vsin(a)]
|
inline |
casting to a 4x4 isomorphic matrix for right multiplication with vector
|
inline |
Get a 3x3 rotation matrix.
computes the dot product of 2 quaternions
linear quaternion interpolation
spherical linear interpolation
|
inlinestatic |
This version of slerp, used by squad, does not check for theta > 90.
|
inlinestatic |
spherical cubic interpolation
|
inlinestatic |
Shoemake-Bezier interpolation using De Castlejau algorithm.
|
inlinestatic |
Given 3 quaternions, qn-1,qn and qn+1, calculate a control point to be used in spline interpolation.
converts from a normalized axis - angle pair rotation to a quaternion
|
inline |
returns the axis and angle of this unit quaternion
|
inline |
rotates v by this quaternion (quaternion must be unit)
|
inline |
returns the euler angles from a rotation quaternion
|
friend |
| DtVector makVrv::DtQuat::xyz |
the imaginary components
| double makVrv::DtQuat::w |
the real component