OpenVDB  12.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/Mat.h>

Public Types

using value_type = T
 
using ValueType = T
 

Public Member Functions

 Quat ()=default
 
 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

using value_type = T
using ValueType = T

Constructor & Destructor Documentation

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 ( x,
y,
z,
w 
)
inline

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

Quat ( T *  a)
inline

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

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

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

Quat ( math::Axis  axis,
angle 
)
inline

Constructor given rotation as axis and angle.

Quat ( const Mat3< T1 > &  rot)
inline

Constructor given a rotation matrix.

Member Function Documentation

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);

T angle ( ) const
inline

Return angle of rotation.

Vec3<T> axis ( ) const
inline

Return axis of rotation.

Quat conjugate ( ) const
inline

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

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

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

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

Dot product.

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

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

Vec3<T> eulerAngles ( RotationOrder  rotationOrder) const
inline

Returns vector of x,y,z rotational components.

static Quat identity ( )
inlinestatic
Quat& init ( x,
y,
z,
w 
)
inline

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

Quat& init ( )
inline

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

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

returns inverse of this

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);

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

this = normalized this

static unsigned numElements ( )
inlinestatic
operator const T * ( ) const
inline
operator T * ( )
inline

Cast to T*.

T& operator() ( int  i)
inline

Alternative indexed reference to the elements.

T operator() ( int  i) const
inline

Alternative indexed constant reference to the elements,.

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

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

Quat operator* ( scalar) const
inline

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

Quat& operator*= ( scalar)
inline

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

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

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

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

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

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

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

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

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

Quat operator- ( ) const
inline

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

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

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

Quat operator/ ( scalar) const
inline

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

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

Equality operator, does exact floating point comparisons.

T& operator[] ( int  i)
inline

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

T operator[] ( int  i) const
inline

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

void read ( std::istream &  is)
inline
Vec3<T> rotateVector ( const Vec3< T > &  v) const
inline

Return rotated vector by "this" quaternion.

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);

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

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

Quat& setIdentity ( )
inline

Set "this" vector to identity.

Quat& setZero ( )
inline

Set "this" vector to zero.

std::string str ( ) const
inline
Returns
string representation of Classname
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);

Quat unit ( ) const
inline

this = normalized this

T& w ( )
inline
T w ( ) const
inline
void write ( std::ostream &  os) const
inline
T& x ( )
inline

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

T x ( ) const
inline

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

T& y ( )
inline
T y ( ) const
inline
T& z ( )
inline
T z ( ) const
inline
static Quat zero ( )
inlinestatic

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

Friends And Related Function Documentation

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

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

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

Member Data Documentation

T mm[4]
protected
const int size = 4
static