ezEngine  Release 25.03
ezSimdQuat Class Reference

Public Member Functions

 EZ_DECLARE_POD_TYPE ()
 
 ezSimdQuat (const ezSimdVec4f &v)
 
void Normalize ()
 Normalizes the quaternion to unit length. ALL rotation-quaternions should be normalized at all times (automatically).
 
ezResult GetRotationAxisAndAngle (ezSimdVec4f &ref_vAxis, ezSimdFloat &ref_fAngle, const ezSimdFloat &fEpsilon=ezMath::DefaultEpsilon< float >()) const
 Returns the rotation-axis and angle (in Radians), that this quaternion rotates around. More...
 
ezSimdMat4f GetAsMat4 () const
 Returns the Quaternion as a matrix.
 
bool IsValid (const ezSimdFloat &fEpsilon=ezMath::DefaultEpsilon< float >()) 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 ezSimdQuat &qOther, const ezSimdFloat &fEpsilon) const
 Determines whether this and qOther represent the same rotation. This is a rather slow operation. More...
 
ezSimdQuat operator- () const
 Returns a Quaternion that represents the negative / inverted rotation.
 
ezSimdVec4f operator* (const ezSimdVec4f &v) const
 Rotates v by q.
 
ezSimdQuat operator* (const ezSimdQuat &q2) const
 Concatenates the rotations of q1 and q2.
 
bool operator== (const ezSimdQuat &q2) const
 
bool operator!= (const ezSimdQuat &q2) const
 

Static Public Member Functions

static const ezSimdQuat MakeIdentity ()
 Static function that returns a quaternion that represents the identity rotation (none).
 
static ezSimdQuat MakeFromElements (ezSimdFloat x, ezSimdFloat y, ezSimdFloat z, ezSimdFloat 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. More...
 
static ezSimdQuat MakeFromAxisAndAngle (const ezSimdVec4f &vRotationAxis, const ezSimdFloat &fAngle)
 Creates a quaternion from a rotation-axis and an angle (angle is given in Radians or as an ezAngle) More...
 
static ezSimdQuat MakeShortestRotation (const ezSimdVec4f &vDirFrom, const ezSimdVec4f &vDirTo)
 Creates a quaternion, that rotates through the shortest arc from "vDirFrom" to "vDirTo".
 
static ezSimdQuat MakeSlerp (const ezSimdQuat &qFrom, const ezSimdQuat &qTo, const ezSimdFloat &t)
 Returns a quaternion that is the spherical linear interpolation of the other two.
 

Public Attributes

ezSimdVec4f m_v
 

Member Function Documentation

◆ GetRotationAxisAndAngle()

ezResult ezSimdQuat::GetRotationAxisAndAngle ( ezSimdVec4f ref_vAxis,
ezSimdFloat ref_fAngle,
const ezSimdFloat fEpsilon = ezMath::DefaultEpsilon<float>() 
) const
inline

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

Todo:
optimize

◆ IsEqualRotation()

bool ezSimdQuat::IsEqualRotation ( const ezSimdQuat qOther,
const ezSimdFloat 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()

ezSimdQuat ezSimdQuat::MakeFromAxisAndAngle ( const ezSimdVec4f vRotationAxis,
const ezSimdFloat fAngle 
)
inlinestatic

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

Todo:
optimize

◆ MakeFromElements()

EZ_ALWAYS_INLINE ezSimdQuat ezSimdQuat::MakeFromElements ( ezSimdFloat  x,
ezSimdFloat  y,
ezSimdFloat  z,
ezSimdFloat  w 
)
static

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: