XII Release 0.1.0
Loading...
Searching...
No Matches
xiiSimdQuatd Class Reference

Public Member Functions

 XII_DECLARE_POD_TYPE ()
 
 xiiSimdQuatd (const xiiSimdVec4d &v)
 
void Normalize ()
 Normalizes the quaternion to unit length. ALL rotation-quaternions should be normalized at all times (automatically).
 
xiiResult GetRotationAxisAndAngle (xiiSimdVec4d &ref_vAxis, xiiSimdDouble &ref_fAngle, const xiiSimdDouble &fEpsilon=xiiMath::DefaultEpsilon< double >()) const
 Returns the rotation-axis and angle (in Radians), that this quaternion rotates around.
 
xiiSimdMat4d GetAsMat4 () const
 Returns the Quaternion as a matrix.
 
bool IsValid (const xiiSimdDouble &fEpsilon=xiiMath::DefaultEpsilon< double >()) const
 Checks whether all components are neither NaN nor infinite and that the quaternion is normalized.
 
bool IsNaN () const
 Checks whether any component is NaN.
 
bool IsEqualRotation (const xiiSimdQuatd &other, const xiiSimdDouble &fEpsilon) const
 Determines whether this and qOther represent the same rotation. This is a rather slow operation.
 
xiiSimdQuatd operator- () const
 Returns a Quaternion that represents the negative / inverted rotation.
 
xiiSimdVec4d operator* (const xiiSimdVec4d &v) const
 Rotates v by q.
 
xiiSimdQuatd operator* (const xiiSimdQuatd &q2) const
 Concatenates the rotations of q1 and q2.
 
bool operator== (const xiiSimdQuatd &q2) const
 
bool operator!= (const xiiSimdQuatd &q2) const
 

Static Public Member Functions

static const xiiSimdQuatd MakeIdentity ()
 Static function that returns a quaternion that represents the identity rotation (none).
 
static xiiSimdQuatd MakeFromElements (xiiSimdDouble x, xiiSimdDouble y, xiiSimdDouble z, xiiSimdDouble w)
 Sets the individual elements of the quaternion directly. Note that x,y,z do NOT represent a rotation axis, and w does NOT represent an angle.
 
static xiiSimdQuatd MakeFromAxisAndAngle (const xiiSimdVec4d &vRotationAxis, const xiiSimdDouble &fAngle)
 Creates a quaternion from a rotation-axis and an angle (angle is given in Radians or as a xiiAngle)
 
static xiiSimdQuatd MakeShortestRotation (const xiiSimdVec4d &vDirFrom, const xiiSimdVec4d &vDirTo)
 Creates a quaternion, that rotates through the shortest arc from "vDirFrom" to "vDirTo".
 
static xiiSimdQuatd MakeSlerp (const xiiSimdQuatd &qFrom, const xiiSimdQuatd &qTo, const xiiSimdDouble &t)
 Returns a quaternion that is the spherical linear interpolation of the other two.
 

Public Attributes

xiiSimdVec4d m_v
 

Member Function Documentation

◆ GetRotationAxisAndAngle()

xiiResult xiiSimdQuatd::GetRotationAxisAndAngle ( xiiSimdVec4d & ref_vAxis,
xiiSimdDouble & ref_fAngle,
const xiiSimdDouble & fEpsilon = xiiMath::DefaultEpsilon<double>() ) const
inline

Returns the rotation-axis and angle (in Radians), that this quaternion rotates around.

Todo
optimize

◆ IsEqualRotation()

bool xiiSimdQuatd::IsEqualRotation ( const xiiSimdQuatd & other,
const xiiSimdDouble & fEpsilon ) const

Determines whether this and qOther represent the same rotation. This is a rather slow operation.

Currently it fails when one of the given quaternions is identity (so no rotation, at all), as it tries to compare rotation axis' and angles, which is undefined for the identity quaternion (also there are infinite representations for 'identity', so it's difficult to check for it).

◆ MakeFromAxisAndAngle()

xiiSimdQuatd xiiSimdQuatd::MakeFromAxisAndAngle ( const xiiSimdVec4d & vRotationAxis,
const xiiSimdDouble & fAngle )
inlinestaticnodiscard

Creates a quaternion from a rotation-axis and an angle (angle is given in Radians or as a xiiAngle)

Todo
optimize

◆ MakeFromElements()

XII_ALWAYS_INLINE xiiSimdQuatd xiiSimdQuatd::MakeFromElements ( xiiSimdDouble x,
xiiSimdDouble y,
xiiSimdDouble z,
xiiSimdDouble w )
staticnodiscard

Sets the individual elements of the quaternion directly. Note that x,y,z do NOT represent a rotation axis, and w does NOT represent an angle.

Use this function only if you have good understanding of quaternion math and know exactly what you are doing.


The documentation for this class was generated from the following files: