This is a quaternion class. For more information on quaternion mathematics consult a mathematics source on complex numbers. More...
#include <PxQuat.h>
Public Member Functions | |
PX_CUDA_CALLABLE PX_FORCE_INLINE | PxQuat () |
Default constructor, does not do any initialization. More... | |
PX_CUDA_CALLABLE PX_INLINE | PxQuat (PxIDENTITY r) |
identity constructor More... | |
PX_CUDA_CALLABLE PX_FORCE_INLINE | PxQuat (float r) |
Constructor from a scalar: sets the real part w to the scalar value, and the imaginary parts (x,y,z) to zero. More... | |
PX_CUDA_CALLABLE PX_FORCE_INLINE | PxQuat (float nx, float ny, float nz, float nw) |
Constructor. Take note of the order of the elements! More... | |
PX_CUDA_CALLABLE PX_INLINE | PxQuat (float angleRadians, const PxVec3 &unitAxis) |
Creates from angle-axis representation. More... | |
PX_CUDA_CALLABLE PX_FORCE_INLINE | PxQuat (const PxQuat &v) |
Copy ctor. More... | |
PX_CUDA_CALLABLE PX_INLINE | PxQuat (const PxMat33 &m) |
Creates from orientation matrix. More... | |
PX_CUDA_CALLABLE PX_FORCE_INLINE bool | isIdentity () const |
returns true if quat is identity More... | |
PX_CUDA_CALLABLE bool | isFinite () const |
returns true if all elements are finite (not NAN or INF, etc.) More... | |
PX_CUDA_CALLABLE bool | isUnit () const |
returns true if finite and magnitude is close to unit More... | |
PX_CUDA_CALLABLE bool | isSane () const |
returns true if finite and magnitude is reasonably close to unit to allow for some accumulation of error vs isValid More... | |
PX_CUDA_CALLABLE PX_INLINE bool | operator== (const PxQuat &q) const |
returns true if the two quaternions are exactly equal More... | |
PX_CUDA_CALLABLE PX_INLINE void | toRadiansAndUnitAxis (float &angle, PxVec3 &axis) const |
converts this quaternion to angle-axis representation More... | |
PX_CUDA_CALLABLE PX_INLINE float | getAngle () const |
Gets the angle between this quat and the identity quaternion. More... | |
PX_CUDA_CALLABLE PX_INLINE float | getAngle (const PxQuat &q) const |
Gets the angle between this quat and the argument. More... | |
PX_CUDA_CALLABLE PX_FORCE_INLINE float | magnitudeSquared () const |
This is the squared 4D vector length, should be 1 for unit quaternions. More... | |
PX_CUDA_CALLABLE PX_FORCE_INLINE float | dot (const PxQuat &v) const |
returns the scalar product of this and other. More... | |
PX_CUDA_CALLABLE PX_INLINE PxQuat | getNormalized () const |
PX_CUDA_CALLABLE PX_INLINE float | magnitude () const |
PX_CUDA_CALLABLE PX_INLINE float | normalize () |
maps to the closest unit quaternion. More... | |
PX_CUDA_CALLABLE PX_INLINE PxQuat | getConjugate () const |
PX_CUDA_CALLABLE PX_INLINE PxVec3 | getImaginaryPart () const |
PX_CUDA_CALLABLE PX_FORCE_INLINE PxVec3 | getBasisVector0 () const |
PX_CUDA_CALLABLE PX_FORCE_INLINE PxVec3 | getBasisVector1 () const |
PX_CUDA_CALLABLE PX_FORCE_INLINE PxVec3 | getBasisVector2 () const |
PX_CUDA_CALLABLE PX_FORCE_INLINE const PxVec3 | rotate (const PxVec3 &v) const |
PX_CUDA_CALLABLE PX_FORCE_INLINE const PxVec3 | rotateInv (const PxVec3 &v) const |
PX_CUDA_CALLABLE PX_FORCE_INLINE PxQuat & | operator= (const PxQuat &p) |
Assignment operator. More... | |
PX_CUDA_CALLABLE PX_FORCE_INLINE PxQuat & | operator*= (const PxQuat &q) |
PX_CUDA_CALLABLE PX_FORCE_INLINE PxQuat & | operator+= (const PxQuat &q) |
PX_CUDA_CALLABLE PX_FORCE_INLINE PxQuat & | operator-= (const PxQuat &q) |
PX_CUDA_CALLABLE PX_FORCE_INLINE PxQuat & | operator*= (const float s) |
PX_CUDA_CALLABLE PX_INLINE PxQuat | operator* (const PxQuat &q) const |
PX_CUDA_CALLABLE PX_FORCE_INLINE PxQuat | operator+ (const PxQuat &q) const |
PX_CUDA_CALLABLE PX_FORCE_INLINE PxQuat | operator- () const |
PX_CUDA_CALLABLE PX_FORCE_INLINE PxQuat | operator- (const PxQuat &q) const |
PX_CUDA_CALLABLE PX_FORCE_INLINE PxQuat | operator* (float r) const |
Public Attributes | |
float | x |
float | y |
float | z |
float | w |
This is a quaternion class. For more information on quaternion mathematics consult a mathematics source on complex numbers.
|
inline |
Default constructor, does not do any initialization.
|
inline |
identity constructor
References PX_UNUSED().
|
inlineexplicit |
Constructor from a scalar: sets the real part w to the scalar value, and the imaginary parts (x,y,z) to zero.
|
inline |
Constructor. Take note of the order of the elements!
|
inline |
Creates from angle-axis representation.
Axis must be normalized!
Angle is in radians!
Unit: Radians
References PxVec3::magnitude(), PX_SHARED_ASSERT, PxAbs(), PxCos(), PxSin(), PxVec3::x, PxVec3::y, and PxVec3::z.
|
inline |
Copy ctor.
|
inline |
|
inline |
|
inline |
|
inline |
brief computes rotation of x-axis
|
inline |
brief computes rotation of y-axis
|
inline |
brief computes rotation of z-axis
|
inline |
Referenced by PxTransform::getInverse(), PxMassProperties::scaleInertia(), and PxTransform::transformInv().
|
inline |
|
inline |
Referenced by PxTransform::getNormalized().
|
inline |
returns true if all elements are finite (not NAN or INF, etc.)
References PxIsFinite().
Referenced by PxMassProperties::getMassSpaceInertia(), PxTransform::isFinite(), and PxTransform::isValid().
|
inline |
returns true if quat is identity
|
inline |
returns true if finite and magnitude is reasonably close to unit to allow for some accumulation of error vs isValid
References physx::intrinsics::isFinite(), and PxAbs().
Referenced by PxTransform::isSane(), and PxTransform::PxTransform().
|
inline |
returns true if finite and magnitude is close to unit
References physx::intrinsics::isFinite(), and PxAbs().
Referenced by PxTransform::isValid(), PxMeshScale::PxMeshScale(), PxMassProperties::rotateInertia(), and PxMassProperties::scaleInertia().
|
inline |
References PxSqrt().
|
inline |
This is the squared 4D vector length, should be 1 for unit quaternions.
|
inline |
maps to the closest unit quaternion.
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
quaternion subtraction
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
rotates passed vec by this (assumed unitary)
References PxVec3::x, PxVec3::y, and PxVec3::z.
Referenced by PxMassProperties::PxMassProperties(), PxTransform::rotate(), PxTransform::transform(), and PxTransform::transformInv().
|
inline |
inverse rotates passed vec by this (assumed unitary)
References PxVec3::x, PxVec3::y, and PxVec3::z.
Referenced by PxTransform::getInverse(), PxMassProperties::PxMassProperties(), PxTransform::rotateInv(), and PxTransform::transformInv().
|
inline |
converts this quaternion to angle-axis representation
References PxAbs(), PxAtan2(), PxPi, and PxRecipSqrt().
float PxQuat::w |
Referenced by dot(), operator*(), operator*=(), operator+(), operator+=(), operator-(), operator-=(), operator=(), operator==(), PxMat33::PxMat33(), and PxMat44::PxMat44().
float PxQuat::x |
the quaternion elements
Referenced by dot(), operator*(), operator*=(), operator+(), operator+=(), operator-(), operator-=(), operator=(), operator==(), PxMat33::PxMat33(), and PxMat44::PxMat44().
float PxQuat::y |
Referenced by dot(), operator*(), operator*=(), operator+(), operator+=(), operator-(), operator-=(), operator=(), operator==(), PxMat33::PxMat33(), and PxMat44::PxMat44().
float PxQuat::z |
Referenced by dot(), operator*(), operator*=(), operator+(), operator+=(), operator-(), operator-=(), operator=(), operator==(), PxMat33::PxMat33(), and PxMat44::PxMat44().