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