![]() |
OGRE 14.3
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°) | |
| Quaternion (const Matrix3 &rot) | |
| Construct a quaternion from a rotation matrix. | |
| Quaternion (const Ogre::Quaternion &rhs) | |
| Copy constructor. | |
| Quaternion (const Radian &rfAngle, const Vector3 &rkAxis) | |
| Construct a quaternion from an angle/axis. | |
| Quaternion (const Vector3 &xaxis, const Vector3 &yaxis, const Vector3 &zaxis) | |
| Construct a quaternion from 3 orthonormal local axes. | |
| Quaternion (const Vector3 *akAxis) | |
| Construct a quaternion from 3 orthonormal local axes. | |
| Quaternion (Real *valptr) | |
| Construct a quaternion from 4 manual w/x/y/z values. | |
| Quaternion (Real fW, Real fX, Real fY, Real fZ) | |
| Construct from an explicit list of values. | |
| Real | Dot (const Quaternion &rkQ) const |
| Returns the dot product of the quaternion. | |
| bool | equals (const Quaternion &rhs, const Radian &tolerance) const |
| Equality with tolerance (tolerance is max angle difference) | |
| Quaternion | Exp () const |
| Apply to unit-length quaternion. | |
| void | FromAngleAxis (const Radian &rfAngle, const Vector3 &rkAxis) |
| Setups the quaternion using the supplied vector, and "roll" around that vector by the specified radians. | |
| void | FromAxes (const Vector3 &xAxis, const Vector3 &yAxis, const Vector3 &zAxis) |
| void | FromAxes (const Vector3 *akAxis) |
| Constructs the quaternion using 3 axes, the axes are assumed to be orthonormal. | |
| void | FromRotationMatrix (const Matrix3 &kRot) |
| Radian | getPitch (bool reprojectAxis=true) const |
| Calculate the local pitch element of this quaternion. | |
| Radian | getRoll (bool reprojectAxis=true) const |
| Calculate the local roll element of this quaternion. | |
| Radian | getYaw (bool reprojectAxis=true) const |
| Calculate the local yaw element of this quaternion. | |
| Quaternion | Inverse () const |
| bool | isNaN () const |
| Check whether this quaternion contains valid values. | |
| Quaternion | Log () const |
| Real | Norm () const |
| Returns the normal length of this quaternion. | |
| Real | normalise (void) |
| Normalises this quaternion, and returns the previous length. | |
| bool | operator!= (const Quaternion &rhs) const |
| Quaternion | operator* (const Quaternion &rkQ) const |
| Vector3 | operator* (const Vector3 &rkVector) const |
| Rotation of a vector by a quaternion. | |
| Quaternion | operator* (Real s) const |
| Quaternion | operator+ (const Quaternion &rkQ) const |
| Quaternion | operator- () const |
| Quaternion | operator- (const Quaternion &rkQ) const |
| Quaternion & | operator= (const Quaternion &rkQ) |
| bool | operator== (const Quaternion &rhs) const |
| Real & | operator[] (const size_t i) |
| Array accessor operator. | |
| Real | operator[] (const size_t i) const |
| Array accessor operator. | |
| bool | orientationEquals (const Quaternion &other, Real tolerance=1e-3f) const |
| Compare two quaternions which are assumed to be used as orientations. | |
| Real * | ptr () |
| Pointer accessor for direct copying. | |
| const Real * | ptr () const |
| Pointer accessor for direct copying. | |
| void | swap (Quaternion &other) |
| Exchange the contents of this quaternion with another. | |
| void | ToAngleAxis (Degree &dAngle, Vector3 &rkAxis) const |
| void | ToAngleAxis (Radian &rfAngle, Vector3 &rkAxis) const |
| void | ToAxes (Vector3 &xAxis, Vector3 &yAxis, Vector3 &zAxis) const |
| void | ToAxes (Vector3 *akAxis) const |
| Gets the 3 orthonormal axes defining the quaternion. | |
| void | ToRotationMatrix (Matrix3 &kRot) const |
| Quaternion | UnitInverse () const |
| Apply to non-zero quaternion. | |
| Vector3 | xAxis (void) const |
| Returns the X orthonormal axis defining the quaternion. | |
| Vector3 | yAxis (void) const |
| Returns the Y orthonormal axis defining the quaternion. | |
| Vector3 | zAxis (void) const |
| Returns the Z orthonormal axis defining the quaternion. | |
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. | |
| 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. | |
| 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. | |
| 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. | |
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. | |
| static const Quaternion | ZERO |
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°)
Referenced by Dot(), equals(), Exp(), Intermediate(), Inverse(), Log(), nlerp(), operator!=(), operator*(), operator*(), operator*, operator+(), operator-(), operator-(), operator<<, operator=(), operator==(), orientationEquals(), Slerp(), SlerpExtraSpins(), Squad(), swap(), and UnitInverse().
|
inline |
|
inline |
Construct a quaternion from a rotation matrix.
References FromRotationMatrix().
Construct a quaternion from an angle/axis.
References FromAngleAxis().
|
inline |
Construct a quaternion from 3 orthonormal local axes.
References FromAxes().
|
inline |
Construct a quaternion from 3 orthonormal local axes.
References FromAxes().
|
inline |
Construct a quaternion from 4 manual w/x/y/z values.
References w.
|
inline |
Exchange the contents of this quaternion with another.
References Quaternion(), std::swap(), w, x, y, and z.
|
inline |
Array accessor operator.
References w.
|
inline |
Pointer accessor for direct copying.
References w.
| void Ogre::Quaternion::FromRotationMatrix | ( | const Matrix3 & | kRot | ) |
Referenced by Quaternion().
| 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 Quaternion(), and Ogre::VectorBase< 3, Real >::randomDeviant().
Referenced by ToAngleAxis().
References ToAngleAxis().
| void Ogre::Quaternion::FromAxes | ( | const Vector3 * | akAxis | ) |
Constructs the quaternion using 3 axes, the axes are assumed to be orthonormal.
Referenced by Quaternion(), and Quaternion().
| 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
Referenced by FromAxes(), and ToAxes().
| 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
Referenced by FromAxes(), and ToAxes().
| 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
Referenced by FromAxes(), and ToAxes().
|
inline |
References Quaternion(), w, x, y, and z.
| Quaternion Ogre::Quaternion::operator+ | ( | const Quaternion & | rkQ | ) | const |
References Quaternion().
| Quaternion Ogre::Quaternion::operator- | ( | const Quaternion & | rkQ | ) | const |
References Quaternion().
| Quaternion Ogre::Quaternion::operator* | ( | const Quaternion & | rkQ | ) | const |
References Quaternion().
|
inline |
References Quaternion(), w, x, y, and z.
|
inline |
References Quaternion(), w, x, y, and z.
|
inline |
References Quaternion(), w, x, y, and z.
Referenced by operator!=().
|
inline |
References Quaternion(), and operator==().
|
inline |
Returns the dot product of the quaternion.
References Quaternion(), w, x, y, and z.
Referenced by equals(), and orientationEquals().
|
inline |
Returns the normal length of this quaternion.
References Ogre::Math::Sqrt(), w, x, y, and z.
Referenced by normalise().
|
inline |
Normalises this quaternion, and returns the previous length.
References Norm().
Referenced by Ogre::VectorBase< 3, Real >::getRotationTo().
| Quaternion Ogre::Quaternion::Inverse | ( | ) | const |
References Quaternion().
| Quaternion Ogre::Quaternion::UnitInverse | ( | ) | const |
Apply to non-zero quaternion.
References Quaternion().
| Quaternion Ogre::Quaternion::Exp | ( | ) | const |
Apply to unit-length quaternion.
References Quaternion().
| Quaternion Ogre::Quaternion::Log | ( | ) | const |
References Quaternion().
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 Quaternion(), Ogre::Math::Abs(), Ogre::Math::ACos(), Dot(), and Ogre::Radian::valueRadians().
|
inline |
Compare two quaternions which are assumed to be used as orientations.
References Quaternion(), and Dot().
|
static |
Performs Spherical linear interpolation between two quaternions, and returns the result.
Slerp ( 0.0f, A, B ) = A Slerp ( 1.0f, A, B ) = B
Slerp has the proprieties of performing the interpolation at constant velocity, and being torque-minimal (unless shortestPath=false). However, it's NOT commutative, which means Slerp ( 0.75f, A, B ) != Slerp ( 0.25f, B, A ); therefore be careful if your code relies in the order of the operands. This is specially important in IK animation.
References Quaternion().
|
static |
References Quaternion().
|
static |
Setup for spherical quadratic interpolation.
References Quaternion().
|
static |
Spherical quadratic interpolation.
References Quaternion().
|
static |
Performs Normalised linear interpolation between two quaternions, and returns the result.
nlerp ( 0.0f, A, B ) = A nlerp ( 1.0f, A, B ) = B
Nlerp is faster than Slerp. Nlerp has the proprieties of being commutative (
References Quaternion().
|
inline |
Check whether this quaternion contains valid values.
References Ogre::Math::isNaN(), w, x, y, and z.
|
static |
Cutoff for sine near zero.
|
static |
|
static |
Referenced by Ogre::SceneManager::_setSkyBox(), Ogre::SceneManager::_setSkyDome(), Ogre::StaticGeometry::addEntity(), Ogre::Entity::attachObjectToBone(), Ogre::Bone::createChild(), Ogre::Node::createChild(), Ogre::Node::createChild(), Ogre::PCZSceneNode::createChildSceneNode(), Ogre::PCZSceneNode::createChildSceneNode(), Ogre::SceneNode::createChildSceneNode(), Ogre::SceneNode::createChildSceneNode(), Ogre::MeshManager::createCurvedIllusionPlane(), Ogre::SkeletonInstance::createTagPointOnBone(), Ogre::VectorBase< 3, Real >::getRotationTo(), Ogre::StringConverter::parseQuaternion(), Ogre::SceneManager::setSkyBox(), and Ogre::SceneManager::setSkyDome().
| Real Ogre::Quaternion::w |
Referenced by Quaternion(), Quaternion(), Quaternion(), Quaternion(), Ogre::Bullet::convert(), Dot(), isNaN(), Norm(), operator*(), operator-(), operator=(), operator==(), operator[](), operator[](), ptr(), ptr(), and swap().
| Real Ogre::Quaternion::x |
Referenced by Quaternion(), Quaternion(), Quaternion(), Ogre::Bullet::convert(), Dot(), isNaN(), Norm(), operator*(), operator-(), operator=(), operator==(), and swap().
| Real Ogre::Quaternion::y |
Referenced by Quaternion(), Quaternion(), Quaternion(), Ogre::Bullet::convert(), Dot(), isNaN(), Norm(), operator*(), operator-(), operator=(), operator==(), and swap().
| Real Ogre::Quaternion::z |
Referenced by Quaternion(), Quaternion(), Quaternion(), Ogre::Bullet::convert(), Dot(), isNaN(), Norm(), operator*(), operator-(), operator=(), operator==(), and swap().