VTK
Public Member Functions | Static Public Member Functions | List of all members
vtkQuaternion< T > Class Template Reference

templated base type for storage of quaternions. More...

#include <vtkQuaternion.h>

Inheritance diagram for vtkQuaternion< T >:
[legend]
Collaboration diagram for vtkQuaternion< T >:
[legend]

Public Member Functions

 vtkQuaternion ()
 
 vtkQuaternion (const T &scalar)
 
 vtkQuaternion (const T *init)
 
 vtkQuaternion (const T &w, const T &x, const T &y, const T &z)
 
SquaredNorm () const
 
Norm () const
 
void ToIdentity ()
 
Normalize ()
 
vtkQuaternion< T > Normalized () const
 
void Conjugate ()
 
vtkQuaternion< T > Conjugated () const
 
void Invert ()
 
vtkQuaternion< T > Inverse () const
 
void ToUnitLog ()
 
vtkQuaternion< T > UnitLog () const
 
void ToUnitExp ()
 
vtkQuaternion< T > UnitExp () const
 
void NormalizeWithAngleInDegrees ()
 
vtkQuaternion< T > NormalizedWithAngleInDegrees () const
 
template<typename CastTo >
vtkQuaternion< CastTo > Cast () const
 
void ToMatrix3x3 (T A[3][3]) const
 
void FromMatrix3x3 (const T A[3][3])
 
vtkQuaternion< T > Slerp (T t, const vtkQuaternion< T > &q) const
 
vtkQuaternion< T > operator+ (const vtkQuaternion< T > &q) const
 
vtkQuaternion< T > operator- (const vtkQuaternion< T > &q) const
 
vtkQuaternion< T > operator* (const vtkQuaternion< T > &q) const
 
vtkQuaternion< T > operator* (const T &scalar) const
 
void operator*= (const T &scalar) const
 
vtkQuaternion< T > operator/ (const vtkQuaternion< T > &q) const
 
vtkQuaternion< T > operator/ (const T &scalar) const
 
void Set (const T &w, const T &x, const T &y, const T &z)
 
void Set (T quat[4])
 
void Get (T quat[4]) const
 
void SetW (const T &w)
 
const T & GetW () const
 
void SetX (const T &x)
 
const T & GetX () const
 
void SetY (const T &y)
 
const T & GetY () const
 
void SetZ (const T &z)
 
const T & GetZ () const
 
GetRotationAngleAndAxis (T axis[3]) const
 
void SetRotationAngleAndAxis (T angle, T axis[3])
 
void SetRotationAngleAndAxis (const T &angle, const T &x, const T &y, const T &z)
 
vtkQuaternion< T > InnerPoint (const vtkQuaternion< T > &q1, const vtkQuaternion< T > &q2) const
 
void operator/= (const T &scalar)
 
- Public Member Functions inherited from vtkTuple< T, 4 >
int GetSize () const
 
 vtkTuple ()
 
 vtkTuple (const T &scalar)
 
 vtkTuple (const T *init)
 
T * GetData ()
 
const T * GetData () const
 
T & operator[] (int i)
 
const T & operator[] (int i) const
 
operator() (int i) const
 
bool Compare (const vtkTuple< T, Size > &other, const T &tol) const
 
vtkTuple< TR, Size > Cast () const
 

Static Public Member Functions

static vtkQuaternion< T > Identity ()
 

Additional Inherited Members

- Protected Attributes inherited from vtkTuple< T, 4 >
Data [Size]
 

Detailed Description

template<typename T>
class vtkQuaternion< T >

templated base type for storage of quaternions.

This class is a templated data type for storing and manipulating quaternions. The quaternions have the form [w, x, y, z]. Given a rotation of angle theta and axis v, the corresponding quaternion is [w, x, y, z] = [cos(theta/2), v*sin(theta/2)]

This class implements the Spherical Linear interpolation (SLERP) and the Spherical Spline Quaternion interpolation (SQUAD). It is advised to use the vtkQuaternionInterpolator when dealing with multiple quaternions and or interpolations.

See also
vtkQuaternionInterpolator

Definition at line 37 of file vtkQuaternion.h.

Constructor & Destructor Documentation

template<typename T>
vtkQuaternion< T >::vtkQuaternion ( )

Default constructor. Creates an identity quaternion.

template<typename T>
vtkQuaternion< T >::vtkQuaternion ( const T &  scalar)
inlineexplicit

Initialize all of the quaternion's elements with the supplied scalar.

Definition at line 44 of file vtkQuaternion.h.

template<typename T>
vtkQuaternion< T >::vtkQuaternion ( const T *  init)
inlineexplicit

Initalize the quaternion's elements with the elements of the supplied array. Note that the supplied pointer must contain at least as many elements as the quaternion, or it will result in access to out of bounds memory.

Definition at line 50 of file vtkQuaternion.h.

template<typename T>
vtkQuaternion< T >::vtkQuaternion ( const T &  w,
const T &  x,
const T &  y,
const T &  z 
)

Initialize the quaternion element explicitly.

Member Function Documentation

template<typename T>
T vtkQuaternion< T >::SquaredNorm ( ) const

Get the squared norm of the quaternion.

template<typename T>
T vtkQuaternion< T >::Norm ( ) const

Get the norm of the quaternion, i.e. its length.

template<typename T>
void vtkQuaternion< T >::ToIdentity ( )

Set the quaternion to identity in place.

template<typename T>
static vtkQuaternion<T> vtkQuaternion< T >::Identity ( )
static

Return the identity quaternion. Note that the default constructor also creates an identity quaternion.

template<typename T>
T vtkQuaternion< T >::Normalize ( )

Normalize the quaternion in place. Return the norm of the quaternion.

template<typename T>
vtkQuaternion<T> vtkQuaternion< T >::Normalized ( ) const

Return the normalized form of this quaternion.

template<typename T>
void vtkQuaternion< T >::Conjugate ( )

Conjugate the quaternion in place.

template<typename T>
vtkQuaternion<T> vtkQuaternion< T >::Conjugated ( ) const

Return the conjugate form of this quaternion.

template<typename T>
void vtkQuaternion< T >::Invert ( )

Invert the quaternion in place. This is equivalent to conjugate the quaternion and then divide it by its squared norm.

template<typename T>
vtkQuaternion<T> vtkQuaternion< T >::Inverse ( ) const

Return the inverted form of this quaternion.

template<typename T>
void vtkQuaternion< T >::ToUnitLog ( )

Convert this quaternion to a unit log quaternion. The unit log quaternion is defined by: [w, x, y, z] = [0.0, v*sin(theta)].

template<typename T>
vtkQuaternion<T> vtkQuaternion< T >::UnitLog ( ) const

Return the unit log version of this quaternion. The unit log quaternion is defined by: [w, x, y, z] = [0.0, v*sin(theta)].

template<typename T>
void vtkQuaternion< T >::ToUnitExp ( )

Convert this quaternion to a unit exponential quaternion. The unit exponential quaternion is defined by: [w, x, y, z] = [cos(theta), v*sin(theta)].

template<typename T>
vtkQuaternion<T> vtkQuaternion< T >::UnitExp ( ) const

Return the unit exponential version of this quaternion. The unit exponential quaternion is defined by: [w, x, y, z] = [cos(theta), v*sin(theta)].

template<typename T>
void vtkQuaternion< T >::NormalizeWithAngleInDegrees ( )

Normalize a quaternion in place and transform it to so its angle is in degrees and its axis normalized.

template<typename T>
vtkQuaternion<T> vtkQuaternion< T >::NormalizedWithAngleInDegrees ( ) const

Returns a quaternion normalized and transformed so its angle is in degrees and its axis normalized.

template<typename T>
void vtkQuaternion< T >::Set ( const T &  w,
const T &  x,
const T &  y,
const T &  z 
)

Set/Get the w, x, y and z components of the quaternion.

template<typename T>
void vtkQuaternion< T >::Set ( quat[4])

Set/Get the w, x, y and z components of the quaternion.

template<typename T>
void vtkQuaternion< T >::Get ( quat[4]) const

Set/Get the w, x, y and z components of the quaternion.

template<typename T>
void vtkQuaternion< T >::SetW ( const T &  w)

Set/Get the w component of the quaternion, i.e. element 0.

template<typename T>
const T& vtkQuaternion< T >::GetW ( ) const

Set/Get the w component of the quaternion, i.e. element 0.

template<typename T>
void vtkQuaternion< T >::SetX ( const T &  x)

Set/Get the x component of the quaternion, i.e. element 1.

template<typename T>
const T& vtkQuaternion< T >::GetX ( ) const

Set/Get the x component of the quaternion, i.e. element 1.

template<typename T>
void vtkQuaternion< T >::SetY ( const T &  y)

Set/Get the y component of the quaternion, i.e. element 2.

template<typename T>
const T& vtkQuaternion< T >::GetY ( ) const

Set/Get the y component of the quaternion, i.e. element 2.

template<typename T>
void vtkQuaternion< T >::SetZ ( const T &  z)

Set/Get the y component of the quaternion, i.e. element 3.

template<typename T>
const T& vtkQuaternion< T >::GetZ ( ) const

Set/Get the y component of the quaternion, i.e. element 3.

template<typename T>
T vtkQuaternion< T >::GetRotationAngleAndAxis ( axis[3]) const

Set/Get the angle (in radians) and the axis corresponding to the axis-angle rotation of this quaternion.

template<typename T>
void vtkQuaternion< T >::SetRotationAngleAndAxis ( angle,
axis[3] 
)

Set/Get the angle (in radians) and the axis corresponding to the axis-angle rotation of this quaternion.

template<typename T>
void vtkQuaternion< T >::SetRotationAngleAndAxis ( const T &  angle,
const T &  x,
const T &  y,
const T &  z 
)

Set/Get the angle (in radians) and the axis corresponding to the axis-angle rotation of this quaternion.

template<typename T>
template<typename CastTo >
vtkQuaternion<CastTo> vtkQuaternion< T >::Cast ( ) const

Cast the quaternion to the specified type and return the result.

template<typename T>
void vtkQuaternion< T >::ToMatrix3x3 ( A[3][3]) const

Convert a quaternion to a 3x3 rotation matrix. The quaternion does not have to be normalized beforehand.

See also
FromMatrix3x3()
template<typename T>
void vtkQuaternion< T >::FromMatrix3x3 ( const T  A[3][3])

Convert a 3x3 matrix into a quaternion. This will provide the best possible answer even if the matrix is not a pure rotation matrix. The method used is that of B.K.P. Horn.

See also
ToMatrix3x3()
template<typename T>
vtkQuaternion<T> vtkQuaternion< T >::Slerp ( t,
const vtkQuaternion< T > &  q 
) const

Interpolate quaternions using spherical linear interpolation between this quaternion and q1 to produce the output. The parametric coordinate t belongs to [0,1] and lies between (this,q1).

See also
vtkQuaternionInterpolator
template<typename T>
vtkQuaternion<T> vtkQuaternion< T >::InnerPoint ( const vtkQuaternion< T > &  q1,
const vtkQuaternion< T > &  q2 
) const

Interpolates between quaternions, using spherical quadrangle interpolation.

See also
vtkQuaternionInterpolator
template<typename T>
vtkQuaternion<T> vtkQuaternion< T >::operator+ ( const vtkQuaternion< T > &  q) const

Performs addition of quaternion of the same basic type.

template<typename T>
vtkQuaternion<T> vtkQuaternion< T >::operator- ( const vtkQuaternion< T > &  q) const

Performs subtraction of quaternions of the same basic type.

template<typename T>
vtkQuaternion<T> vtkQuaternion< T >::operator* ( const vtkQuaternion< T > &  q) const

Performs multiplication of quaternion of the same basic type.

template<typename T>
vtkQuaternion<T> vtkQuaternion< T >::operator* ( const T &  scalar) const

Performs multiplication of the quaternions by a scalar value.

template<typename T>
void vtkQuaternion< T >::operator*= ( const T &  scalar) const

Performs in place multiplication of the quaternions by a scalar value.

template<typename T>
vtkQuaternion<T> vtkQuaternion< T >::operator/ ( const vtkQuaternion< T > &  q) const

Performs division of quaternions of the same type.

template<typename T>
vtkQuaternion<T> vtkQuaternion< T >::operator/ ( const T &  scalar) const

Performs division of the quaternions by a scalar value.

template<typename T>
void vtkQuaternion< T >::operator/= ( const T &  scalar)

Performs in place division of the quaternions by a scalar value.


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