OGRE
1.11.6
Object-Oriented Graphics Rendering Engine
|
Implementation of a Quaternion, i.e. More...
#include <OgreQuaternion.h>
Public Member Functions | |
Quaternion () | |
Default constructor, initializes to identity rotation (aka 0°) More... | |
Quaternion (Real fW, Real fX, Real fY, Real fZ) | |
Construct from an explicit list of values. More... | |
Quaternion (const Matrix3 &rot) | |
Construct a quaternion from a rotation matrix. More... | |
Quaternion (const Radian &rfAngle, const Vector3 &rkAxis) | |
Construct a quaternion from an angle/axis. More... | |
Quaternion (const Vector3 &xaxis, const Vector3 &yaxis, const Vector3 &zaxis) | |
Construct a quaternion from 3 orthonormal local axes. More... | |
Quaternion (const Vector3 *akAxis) | |
Construct a quaternion from 3 orthonormal local axes. More... | |
Quaternion (Real *valptr) | |
Construct a quaternion from 4 manual w/x/y/z values. More... | |
Real | Dot (const Quaternion &rkQ) const |
Returns the dot product of the quaternion. More... | |
bool | equals (const Quaternion &rhs, const Radian &tolerance) const |
Equality with tolerance (tolerance is max angle difference) More... | |
Quaternion | Exp () const |
Apply to unit-length quaternion. More... | |
void | FromAngleAxis (const Radian &rfAngle, const Vector3 &rkAxis) |
Setups the quaternion using the supplied vector, and "roll" around that vector by the specified radians. More... | |
void | FromAxes (const Vector3 *akAxis) |
Constructs the quaternion using 3 axes, the axes are assumed to be orthonormal. More... | |
void | FromAxes (const Vector3 &xAxis, const Vector3 &yAxis, const Vector3 &zAxis) |
void | FromRotationMatrix (const Matrix3 &kRot) |
Radian | getPitch (bool reprojectAxis=true) const |
Calculate the local pitch element of this quaternion. More... | |
Radian | getRoll (bool reprojectAxis=true) const |
Calculate the local roll element of this quaternion. More... | |
Radian | getYaw (bool reprojectAxis=true) const |
Calculate the local yaw element of this quaternion. More... | |
Quaternion | Inverse () const |
bool | isNaN () const |
Check whether this quaternion contains valid values. More... | |
Quaternion | Log () const |
Real | Norm () const |
Returns the normal length of this quaternion. More... | |
Real | normalise (void) |
Normalises this quaternion, and returns the previous length. More... | |
bool | operator!= (const Quaternion &rhs) const |
Quaternion | operator* (const Quaternion &rkQ) const |
Quaternion | operator* (Real s) const |
Vector3 | operator* (const Vector3 &rkVector) const |
Rotation of a vector by a quaternion. More... | |
Quaternion | operator+ (const Quaternion &rkQ) const |
Quaternion | operator- (const Quaternion &rkQ) const |
Quaternion | operator- () const |
Quaternion & | operator= (const Quaternion &rkQ) |
bool | operator== (const Quaternion &rhs) const |
Real | operator[] (const size_t i) const |
Array accessor operator. More... | |
Real & | operator[] (const size_t i) |
Array accessor operator. More... | |
bool | orientationEquals (const Quaternion &other, Real tolerance=1e-3f) const |
Compare two quaternions which are assumed to be used as orientations. More... | |
Real * | ptr () |
Pointer accessor for direct copying. More... | |
const Real * | ptr () const |
Pointer accessor for direct copying. More... | |
void | swap (Quaternion &other) |
Exchange the contents of this quaternion with another. More... | |
void | ToAngleAxis (Radian &rfAngle, Vector3 &rkAxis) const |
void | ToAngleAxis (Degree &dAngle, Vector3 &rkAxis) const |
void | ToAxes (Vector3 *akAxis) const |
Gets the 3 orthonormal axes defining the quaternion. More... | |
void | ToAxes (Vector3 &xAxis, Vector3 &yAxis, Vector3 &zAxis) const |
void | ToRotationMatrix (Matrix3 &kRot) const |
Quaternion | UnitInverse () const |
Apply to non-zero quaternion. More... | |
Vector3 | xAxis (void) const |
Returns the X orthonormal axis defining the quaternion. More... | |
Vector3 | yAxis (void) const |
Returns the Y orthonormal axis defining the quaternion. More... | |
Vector3 | zAxis (void) const |
Returns the Z orthonormal axis defining the quaternion. More... | |
Static Public Member Functions | |
static void | Intermediate (const Quaternion &rkQ0, const Quaternion &rkQ1, const Quaternion &rkQ2, Quaternion &rka, Quaternion &rkB) |
Setup for spherical quadratic interpolation. More... | |
static Quaternion | nlerp (Real fT, const Quaternion &rkP, const Quaternion &rkQ, bool shortestPath=false) |
Performs Normalised linear interpolation between two quaternions, and returns the result. More... | |
static Quaternion | Slerp (Real fT, const Quaternion &rkP, const Quaternion &rkQ, bool shortestPath=false) |
Performs Spherical linear interpolation between two quaternions, and returns the result. More... | |
static Quaternion | SlerpExtraSpins (Real fT, const Quaternion &rkP, const Quaternion &rkQ, int iExtraSpins) |
static Quaternion | Squad (Real fT, const Quaternion &rkP, const Quaternion &rkA, const Quaternion &rkB, const Quaternion &rkQ, bool shortestPath=false) |
Spherical quadratic interpolation. More... | |
Public Attributes | |
Real | w |
Real | x |
Real | y |
Real | z |
Static Public Attributes | |
static const Quaternion | IDENTITY |
static const Real | msEpsilon |
Cutoff for sine near zero. More... | |
static const Quaternion | ZERO |
Friends | |
Quaternion | operator* (Real s, const Quaternion &q) |
std::ostream & | operator<< (std::ostream &o, const Quaternion &q) |
Function for writing to a stream. More... | |
Implementation of a Quaternion, i.e.
a rotation around an axis. For more information about Quaternions and the theory behind it, we recommend reading: http://www.ogre3d.org/tikiwiki/Quaternion+and+Rotation+Primer and http://www.cprogramming.com/tutorial/3d/quaternions.html and http://www.gamedev.net/page/resources/_/reference/programming/math-and-physics/quaternions/quaternion-powers-r1095
|
inline |
Default constructor, initializes to identity rotation (aka 0°)
Construct from an explicit list of values.
|
inline |
Construct a quaternion from a rotation matrix.
Construct a quaternion from an angle/axis.
|
inline |
Construct a quaternion from 3 orthonormal local axes.
|
inline |
Construct a quaternion from 3 orthonormal local axes.
|
inline |
Construct a quaternion from 4 manual w/x/y/z values.
|
inline |
Exchange the contents of this quaternion with another.
References std::swap(), w, x, y, and z.
|
inline |
Array accessor operator.
|
inline |
Array accessor operator.
|
inline |
Pointer accessor for direct copying.
|
inline |
Pointer accessor for direct copying.
void Ogre::Quaternion::FromRotationMatrix | ( | const Matrix3 & | kRot | ) |
void Ogre::Quaternion::ToRotationMatrix | ( | Matrix3 & | kRot | ) | const |
Referenced by Ogre::Matrix4::Matrix4().
Setups the quaternion using the supplied vector, and "roll" around that vector by the specified radians.
Referenced by Ogre::VectorBase< 3, Real >::randomDeviant().
void Ogre::Quaternion::FromAxes | ( | const Vector3 * | akAxis | ) |
Constructs the quaternion using 3 axes, the axes are assumed to be orthonormal.
void Ogre::Quaternion::FromAxes | ( | const Vector3 & | xAxis, |
const Vector3 & | yAxis, | ||
const Vector3 & | zAxis | ||
) |
void Ogre::Quaternion::ToAxes | ( | Vector3 * | akAxis | ) | const |
Gets the 3 orthonormal axes defining the quaternion.
Vector3 Ogre::Quaternion::xAxis | ( | void | ) | const |
Returns the X orthonormal axis defining the quaternion.
Same as doing xAxis = Vector3::UNIT_X * this. Also called the local X-axis
Vector3 Ogre::Quaternion::yAxis | ( | void | ) | const |
Returns the Y orthonormal axis defining the quaternion.
Same as doing yAxis = Vector3::UNIT_Y * this. Also called the local Y-axis
Vector3 Ogre::Quaternion::zAxis | ( | void | ) | const |
Returns the Z orthonormal axis defining the quaternion.
Same as doing zAxis = Vector3::UNIT_Z * this. Also called the local Z-axis
|
inline |
References Ogre::operator*(), Ogre::operator+(), Ogre::operator-(), w, x, y, and z.
Quaternion Ogre::Quaternion::operator+ | ( | const Quaternion & | rkQ | ) | const |
Quaternion Ogre::Quaternion::operator- | ( | const Quaternion & | rkQ | ) | const |
Quaternion Ogre::Quaternion::operator* | ( | const Quaternion & | rkQ | ) | const |
|
inline |
|
inline |
|
inline |
|
inline |
References Ogre::operator==().
|
inline |
|
inline |
Returns the normal length of this quaternion.
References Ogre::Math::Sqrt().
|
inline |
Normalises this quaternion, and returns the previous length.
References Ogre::operator*().
Referenced by Ogre::VectorBase< 3, Real >::getRotationTo().
Quaternion Ogre::Quaternion::Inverse | ( | ) | const |
Quaternion Ogre::Quaternion::UnitInverse | ( | ) | const |
Apply to non-zero quaternion.
Quaternion Ogre::Quaternion::Exp | ( | ) | const |
Apply to unit-length quaternion.
Quaternion Ogre::Quaternion::Log | ( | ) | const |
Rotation of a vector by a quaternion.
Radian Ogre::Quaternion::getRoll | ( | bool | reprojectAxis = true | ) | const |
Calculate the local roll element of this quaternion.
reprojectAxis | By default the method returns the 'intuitive' result that is, if you projected the local X of the quaternion onto the XY plane, the angle between it and global X is returned. The co-domain of the returned value is from -180 to 180 degrees. If set to false though, the result is the rotation around Z axis that could be used to implement the quaternion using some non-intuitive order of rotations. This behavior is preserved for backward compatibility, to decompose quaternion into yaw, pitch and roll use q.ToRotationMatrix().ToEulerAnglesYXZ(yaw, pitch, roll) instead. |
Radian Ogre::Quaternion::getPitch | ( | bool | reprojectAxis = true | ) | const |
Calculate the local pitch element of this quaternion.
reprojectAxis | By default the method returns the 'intuitive' result that is, if you projected the local Y of the quaternion onto the YZ plane, the angle between it and global Y is returned. The co-domain of the returned value is from -180 to 180 degrees. If set to false though, the result is the rotation around X axis that could be used to implement the quaternion using some non-intuitive order of rotations. This behavior is preserved for backward compatibility, to decompose quaternion into yaw, pitch and roll use q.ToRotationMatrix().ToEulerAnglesYXZ(yaw, pitch, roll) instead. |
Radian Ogre::Quaternion::getYaw | ( | bool | reprojectAxis = true | ) | const |
Calculate the local yaw element of this quaternion.
reprojectAxis | By default the method returns the 'intuitive' result that is, if you projected the local Z of the quaternion onto the ZX plane, the angle between it and global Z is returned. The co-domain of the returned value is from -180 to 180 degrees. If set to false though, the result is the rotation around Y axis that could be used to implement the quaternion using some non-intuitive order of rotations. This behavior is preserved for backward compatibility, to decompose quaternion into yaw, pitch and roll use q.ToRotationMatrix().ToEulerAnglesYXZ(yaw, pitch, roll) instead. |
|
inline |
Equality with tolerance (tolerance is max angle difference)
References Ogre::Math::Abs(), Ogre::Math::ACos(), and Ogre::Radian::valueRadians().
|
inline |
Compare two quaternions which are assumed to be used as orientations.
|
static |
Performs Spherical linear interpolation between two quaternions, and returns the result.
Slerp ( 0.0f, A, B ) = A Slerp ( 1.0f, A, B ) = B
|
static |
|
static |
Setup for spherical quadratic interpolation.
|
static |
Spherical quadratic interpolation.
|
static |
Performs Normalised linear interpolation between two quaternions, and returns the result.
nlerp ( 0.0f, A, B ) = A nlerp ( 1.0f, A, B ) = B
|
inline |
Check whether this quaternion contains valid values.
References Ogre::Math::isNaN().
|
friend |
|
friend |
Function for writing to a stream.
Outputs "Quaternion(w, x, y, z)" with w,x,y,z being the member values of the quaternion.
|
static |
Cutoff for sine near zero.
|
static |
|
static |
Real Ogre::Quaternion::w |
Referenced by Dot(), operator=(), operator==(), and swap().
Real Ogre::Quaternion::x |
Referenced by Dot(), operator=(), operator==(), and swap().
Real Ogre::Quaternion::y |
Referenced by Dot(), operator=(), operator==(), and swap().
Real Ogre::Quaternion::z |
Referenced by Dot(), operator=(), operator==(), and swap().