OpenVDB 9.0.0
Public Types | Public Member Functions | Static Public Member Functions | Static Public Attributes | Protected Attributes | Friends | List of all members
Quat< T > Class Template Reference

#include <openvdb/math/Quat.h>

Public Types

using value_type = T
 
using ValueType = T
 

Public Member Functions

 Quat ()=default
 Trivial constructor, the quaternion is NOT initialized. More...
 
 Quat (T x, T y, T z, T w)
 Constructor with four arguments, e.g. Quatf q(1,2,3,4);. More...
 
 Quat (T *a)
 Constructor with array argument, e.g. float a[4]; Quatf q(a);. More...
 
 Quat (const Vec3< T > &axis, T angle)
 
 Quat (math::Axis axis, T angle)
 Constructor given rotation as axis and angle. More...
 
template<typename T1 >
 Quat (const Mat3< T1 > &rot)
 Constructor given a rotation matrix. More...
 
T & x ()
 Reference to the component, e.g. q.x() = 4.5f;. More...
 
T & y ()
 
T & z ()
 
T & w ()
 
x () const
 Get the component, e.g. float f = q.w();. More...
 
y () const
 
z () const
 
w () const
 
T & operator[] (int i)
 Array style reference to the components, e.g. q[3] = 1.34f;. More...
 
operator[] (int i) const
 Array style constant reference to the components, e.g. float f = q[1];. More...
 
 operator T* ()
 Cast to T*. More...
 
 operator const T * () const
 
T & operator() (int i)
 Alternative indexed reference to the elements. More...
 
operator() (int i) const
 Alternative indexed constant reference to the elements,. More...
 
angle () const
 Return angle of rotation. More...
 
Vec3< T > axis () const
 Return axis of rotation. More...
 
Quatinit (T x, T y, T z, T w)
 "this" quaternion gets initialized to [x, y, z, w] More...
 
Quatinit ()
 "this" quaternion gets initialized to identity, same as setIdentity() More...
 
QuatsetAxisAngle (const Vec3< T > &axis, T angle)
 
QuatsetZero ()
 Set "this" vector to zero. More...
 
QuatsetIdentity ()
 Set "this" vector to identity. More...
 
Vec3< T > eulerAngles (RotationOrder rotationOrder) const
 Returns vector of x,y,z rotational components. More...
 
bool operator== (const Quat &q) const
 Equality operator, does exact floating point comparisons. More...
 
bool eq (const Quat &q, T eps=1.0e-7) const
 Test if "this" is equivalent to q with tolerance of eps value. More...
 
Quatoperator+= (const Quat &q)
 Add quaternion q to "this" quaternion, e.g. q += q1;. More...
 
Quatoperator-= (const Quat &q)
 Subtract quaternion q from "this" quaternion, e.g. q -= q1;. More...
 
Quatoperator*= (T scalar)
 Scale "this" quaternion by scalar, e.g. q *= scalar;. More...
 
Quat operator+ (const Quat &q) const
 Return (this+q), e.g. q = q1 + q2;. More...
 
Quat operator- (const Quat &q) const
 Return (this-q), e.g. q = q1 - q2;. More...
 
Quat operator* (const Quat &q) const
 Return (this*q), e.g. q = q1 * q2;. More...
 
Quat operator*= (const Quat &q)
 Assigns this to (this*q), e.g. q *= q1;. More...
 
Quat operator* (T scalar) const
 Return (this*scalar), e.g. q = q1 * scalar;. More...
 
Quat operator/ (T scalar) const
 Return (this/scalar), e.g. q = q1 / scalar;. More...
 
Quat operator- () const
 Negation operator, e.g. q = -q;. More...
 
Quatadd (const Quat &q1, const Quat &q2)
 
Quatsub (const Quat &q1, const Quat &q2)
 
Quatmult (const Quat &q1, const Quat &q2)
 
Quatscale (T scale, const Quat &q)
 
dot (const Quat &q) const
 Dot product. More...
 
Quat derivative (const Vec3< T > &omega) const
 
bool normalize (T eps=T(1.0e-8))
 this = normalized this More...
 
Quat unit () const
 this = normalized this More...
 
Quat inverse (T tolerance=T(0)) const
 returns inverse of this More...
 
Quat conjugate () const
 
Vec3< T > rotateVector (const Vec3< T > &v) const
 Return rotated vector by "this" quaternion. More...
 
std::string str () const
 
void write (std::ostream &os) const
 
void read (std::istream &is)
 

Static Public Member Functions

static unsigned numElements ()
 
static Quat zero ()
 Predefined constants, e.g. Quat q = Quat::identity();. More...
 
static Quat identity ()
 

Static Public Attributes

static const int size = 4
 

Protected Attributes

mm [4]
 

Friends

std::ostream & operator<< (std::ostream &stream, const Quat &q)
 Output to the stream, e.g. std::cout << q << std::endl;. More...
 
Quat slerp (const Quat &q1, const Quat &q2, T t, T tolerance)
 

Member Typedef Documentation

◆ value_type

using value_type = T

◆ ValueType

using ValueType = T

Constructor & Destructor Documentation

◆ Quat() [1/6]

Quat ( )
default

Trivial constructor, the quaternion is NOT initialized.

Note
destructor, copy constructor, assignment operator and move constructor are left to be defined by the compiler (default)

◆ Quat() [2/6]

Quat ( x,
y,
z,
w 
)
inline

Constructor with four arguments, e.g. Quatf q(1,2,3,4);.

◆ Quat() [3/6]

Quat ( T *  a)
inline

Constructor with array argument, e.g. float a[4]; Quatf q(a);.

◆ Quat() [4/6]

Quat ( const Vec3< T > &  axis,
angle 
)
inline

Constructor given rotation as axis and angle, the axis must be unit vector

◆ Quat() [5/6]

Quat ( math::Axis  axis,
angle 
)
inline

Constructor given rotation as axis and angle.

◆ Quat() [6/6]

Quat ( const Mat3< T1 > &  rot)
inline

Constructor given a rotation matrix.

Member Function Documentation

◆ add()

Quat & add ( const Quat< T > &  q1,
const Quat< T > &  q2 
)
inline

this = q1 + q2 "this", q1 and q2 need not be distinct objects, e.g. q.add(q1,q);

◆ angle()

T angle ( ) const
inline

Return angle of rotation.

◆ axis()

Vec3< T > axis ( ) const
inline

Return axis of rotation.

◆ conjugate()

Quat conjugate ( ) const
inline

Return the conjugate of "this", same as invert without unit quaternion test

◆ derivative()

Quat derivative ( const Vec3< T > &  omega) const
inline

Return the quaternion rate corrsponding to the angular velocity omega and "this" current rotation

◆ dot()

T dot ( const Quat< T > &  q) const
inline

Dot product.

◆ eq()

bool eq ( const Quat< T > &  q,
eps = 1.0e-7 
) const
inline

Test if "this" is equivalent to q with tolerance of eps value.

◆ eulerAngles()

Vec3< T > eulerAngles ( RotationOrder  rotationOrder) const
inline

Returns vector of x,y,z rotational components.

◆ identity()

static Quat identity ( )
inlinestatic

◆ init() [1/2]

Quat & init ( )
inline

"this" quaternion gets initialized to identity, same as setIdentity()

◆ init() [2/2]

Quat & init ( x,
y,
z,
w 
)
inline

"this" quaternion gets initialized to [x, y, z, w]

◆ inverse()

Quat inverse ( tolerance = T(0)) const
inline

returns inverse of this

◆ mult()

Quat & mult ( const Quat< T > &  q1,
const Quat< T > &  q2 
)
inline

this = q1 * q2 q1 and q2 must be distinct objects than "this", e.g. q.mult(q1,q2);

◆ normalize()

bool normalize ( eps = T(1.0e-8))
inline

this = normalized this

◆ numElements()

static unsigned numElements ( )
inlinestatic

◆ operator const T *()

operator const T * ( ) const
inline

◆ operator T*()

operator T* ( )
inline

Cast to T*.

◆ operator()() [1/2]

T & operator() ( int  i)
inline

Alternative indexed reference to the elements.

◆ operator()() [2/2]

T operator() ( int  i) const
inline

Alternative indexed constant reference to the elements,.

◆ operator*() [1/2]

Quat operator* ( const Quat< T > &  q) const
inline

Return (this*q), e.g. q = q1 * q2;.

◆ operator*() [2/2]

Quat operator* ( scalar) const
inline

Return (this*scalar), e.g. q = q1 * scalar;.

◆ operator*=() [1/2]

Quat operator*= ( const Quat< T > &  q)
inline

Assigns this to (this*q), e.g. q *= q1;.

◆ operator*=() [2/2]

Quat & operator*= ( scalar)
inline

Scale "this" quaternion by scalar, e.g. q *= scalar;.

◆ operator+()

Quat operator+ ( const Quat< T > &  q) const
inline

Return (this+q), e.g. q = q1 + q2;.

◆ operator+=()

Quat & operator+= ( const Quat< T > &  q)
inline

Add quaternion q to "this" quaternion, e.g. q += q1;.

◆ operator-() [1/2]

Quat operator- ( ) const
inline

Negation operator, e.g. q = -q;.

◆ operator-() [2/2]

Quat operator- ( const Quat< T > &  q) const
inline

Return (this-q), e.g. q = q1 - q2;.

◆ operator-=()

Quat & operator-= ( const Quat< T > &  q)
inline

Subtract quaternion q from "this" quaternion, e.g. q -= q1;.

◆ operator/()

Quat operator/ ( scalar) const
inline

Return (this/scalar), e.g. q = q1 / scalar;.

◆ operator==()

bool operator== ( const Quat< T > &  q) const
inline

Equality operator, does exact floating point comparisons.

◆ operator[]() [1/2]

T & operator[] ( int  i)
inline

Array style reference to the components, e.g. q[3] = 1.34f;.

◆ operator[]() [2/2]

T operator[] ( int  i) const
inline

Array style constant reference to the components, e.g. float f = q[1];.

◆ read()

void read ( std::istream &  is)
inline

◆ rotateVector()

Vec3< T > rotateVector ( const Vec3< T > &  v) const
inline

Return rotated vector by "this" quaternion.

◆ scale()

Quat & scale ( scale,
const Quat< T > &  q 
)
inline

this = scalar*q, q need not be distinct object than "this", e.g. q.scale(1.5,q1);

◆ setAxisAngle()

Quat & setAxisAngle ( const Vec3< T > &  axis,
angle 
)
inline

Set "this" quaternion to rotation specified by axis and angle, the axis must be unit vector

◆ setIdentity()

Quat & setIdentity ( )
inline

Set "this" vector to identity.

◆ setZero()

Quat & setZero ( )
inline

Set "this" vector to zero.

◆ str()

std::string str ( ) const
inline
Returns
string representation of Classname

◆ sub()

Quat & sub ( const Quat< T > &  q1,
const Quat< T > &  q2 
)
inline

this = q1 - q2 "this", q1 and q2 need not be distinct objects, e.g. q.sub(q1,q);

◆ unit()

Quat unit ( ) const
inline

this = normalized this

◆ w() [1/2]

T & w ( )
inline

◆ w() [2/2]

T w ( ) const
inline

◆ write()

void write ( std::ostream &  os) const
inline

◆ x() [1/2]

T & x ( )
inline

Reference to the component, e.g. q.x() = 4.5f;.

◆ x() [2/2]

T x ( ) const
inline

Get the component, e.g. float f = q.w();.

◆ y() [1/2]

T & y ( )
inline

◆ y() [2/2]

T y ( ) const
inline

◆ z() [1/2]

T & z ( )
inline

◆ z() [2/2]

T z ( ) const
inline

◆ zero()

static Quat zero ( )
inlinestatic

Predefined constants, e.g. Quat q = Quat::identity();.

Friends And Related Function Documentation

◆ operator<<

std::ostream & operator<< ( std::ostream &  stream,
const Quat< T > &  q 
)
friend

Output to the stream, e.g. std::cout << q << std::endl;.

◆ slerp

Quat slerp ( const Quat< T > &  q1,
const Quat< T > &  q2,
t,
tolerance 
)
friend

Member Data Documentation

◆ mm

T mm[4]
protected

◆ size

const int size = 4
static