Loading...
Searching...
No Matches
GfDualQuath Class Referencefinal

Basic type: a real part quaternion and a dual part quaternion. More...

#include <dualQuath.h>

Public Types

typedef GfHalf ScalarType
 

Public Member Functions

 GfDualQuath ()=default
 GfDualQuath value-initializes to zero and performs no default initialization, like float or double.
 
 GfDualQuath (GfHalf realVal)
 Initialize the real part to realVal and the imaginary part to zero quaternion.
 
 GfDualQuath (const GfQuath &real)
 Initialize the real part to real quaternion and the imaginary part to zero quaternion.
 
 GfDualQuath (const GfQuath &real, const GfQuath &dual)
 This constructor initializes the real and dual parts.
 
 GfDualQuath (const GfQuath &rotation, const GfVec3h &translation)
 This constructor initializes from a rotation and a translation components.
 
GF_API GfDualQuath (const GfDualQuatd &other)
 Construct from GfDualQuatd.
 
GF_API GfDualQuath (const GfDualQuatf &other)
 Construct from GfDualQuatf.
 
void SetReal (const GfQuath &real)
 Sets the real part of the dual quaternion.
 
void SetDual (const GfQuath &dual)
 Sets the dual part of the dual quaternion.
 
const GfQuathGetReal () const
 Returns the real part of the dual quaternion.
 
const GfQuathGetDual () const
 Returns the dual part of the dual quaternion.
 
GF_API std::pair< GfHalf, GfHalfGetLength () const
 Returns geometric length of this dual quaternion.
 
GF_API GfDualQuath GetNormalized (GfHalf eps=GF_MIN_VECTOR_LENGTH) const
 Returns a normalized (unit-length) version of this dual quaternion.
 
GF_API std::pair< GfHalf, GfHalfNormalize (GfHalf eps=GF_MIN_VECTOR_LENGTH)
 Normalizes this dual quaternion in place.
 
GF_API GfDualQuath GetConjugate () const
 Returns the conjugate of this dual quaternion.
 
GF_API GfDualQuath GetInverse () const
 Returns the inverse of this dual quaternion.
 
GF_API void SetTranslation (const GfVec3h &translation)
 Set the translation component of this dual quaternion.
 
GF_API GfVec3h GetTranslation () const
 Get the translation component of this dual quaternion.
 
bool operator== (const GfDualQuath &dq) const
 Component-wise dual quaternion equality test.
 
bool operator!= (const GfDualQuath &dq) const
 Component-wise dual quaternion inequality test.
 
GfDualQuathoperator+= (const GfDualQuath &dq)
 Component-wise unary sum operator.
 
GfDualQuathoperator-= (const GfDualQuath &dq)
 Component-wise unary difference operator.
 
GF_API GfDualQuathoperator*= (const GfDualQuath &dq)
 Post-multiplies dual quaternion dq into this dual quaternion.
 
GfDualQuathoperator*= (GfHalf s)
 Scales this dual quaternion by s.
 
GfDualQuathoperator/= (GfHalf s)
 Scales this dual quaternion by 1 / s.
 
GF_API GfVec3h Transform (const GfVec3h &vec) const
 Transforms the row vector vec by the dual quaternion.
 

Static Public Member Functions

static GfDualQuath GetZero ()
 Returns the zero dual quaternion, which has a real part of (0,0,0,0) and a dual part of (0,0,0,0).
 
static GfDualQuath GetIdentity ()
 Returns the identity dual quaternion, which has a real part of (1,0,0,0) and a dual part of (0,0,0,0).
 

Friends

size_t hash_value (const GfDualQuath &dq)
 Hash.
 
GfDualQuath operator+ (const GfDualQuath &dq1, const GfDualQuath &dq2)
 Component-wise binary sum operator.
 
GfDualQuath operator- (const GfDualQuath &dq1, const GfDualQuath &dq2)
 Component-wise binary difference operator.
 
GfDualQuath operator* (const GfDualQuath &dq1, const GfDualQuath &dq2)
 Returns the product of dual quaternions dq1 and dq2.
 
GfDualQuath operator* (const GfDualQuath &dq, GfHalf s)
 Returns the product of dual quaternion dq and scalar s.
 
GfDualQuath operator* (GfHalf s, const GfDualQuath &dq)
 Returns the product of dual quaternion dq and scalar s.
 
GfDualQuath operator/ (const GfDualQuath &dq, GfHalf s)
 Returns the product of dual quaternion dq and scalar 1 / s.
 

Detailed Description

Basic type: a real part quaternion and a dual part quaternion.

This class represents a generalized dual quaternion that has a real part and a dual part quaternions. Dual quaternions are used to represent a combination of rotation and translation.

References: https://www.cs.utah.edu/~ladislav/kavan06dual/kavan06dual.pdf https://faculty.sites.iastate.edu/jia/files/inline-files/dual-quaternion.pdf

Definition at line 50 of file dualQuath.h.

Member Typedef Documentation

◆ ScalarType

typedef GfHalf ScalarType

Definition at line 53 of file dualQuath.h.

Constructor & Destructor Documentation

◆ GfDualQuath() [1/7]

GfDualQuath ( )
default

GfDualQuath value-initializes to zero and performs no default initialization, like float or double.

◆ GfDualQuath() [2/7]

GfDualQuath ( GfHalf  realVal)
inlineexplicit

Initialize the real part to realVal and the imaginary part to zero quaternion.

Since quaternions typically must be normalized, reasonable values for realVal are -1, 0, or 1. Other values are legal but are likely to be meaningless.

Definition at line 66 of file dualQuath.h.

◆ GfDualQuath() [3/7]

GfDualQuath ( const GfQuath real)
inlineexplicit

Initialize the real part to real quaternion and the imaginary part to zero quaternion.

Definition at line 71 of file dualQuath.h.

◆ GfDualQuath() [4/7]

GfDualQuath ( const GfQuath real,
const GfQuath dual 
)
inline

This constructor initializes the real and dual parts.

Definition at line 76 of file dualQuath.h.

◆ GfDualQuath() [5/7]

GfDualQuath ( const GfQuath rotation,
const GfVec3h translation 
)
inline

This constructor initializes from a rotation and a translation components.

Definition at line 81 of file dualQuath.h.

◆ GfDualQuath() [6/7]

GF_API GfDualQuath ( const GfDualQuatd other)
explicit

Construct from GfDualQuatd.

◆ GfDualQuath() [7/7]

GF_API GfDualQuath ( const GfDualQuatf other)
explicit

Construct from GfDualQuatf.

Member Function Documentation

◆ GetConjugate()

GF_API GfDualQuath GetConjugate ( ) const

Returns the conjugate of this dual quaternion.

◆ GetDual()

const GfQuath & GetDual ( ) const
inline

Returns the dual part of the dual quaternion.

Definition at line 109 of file dualQuath.h.

◆ GetIdentity()

static GfDualQuath GetIdentity ( )
inlinestatic

Returns the identity dual quaternion, which has a real part of (1,0,0,0) and a dual part of (0,0,0,0).

Definition at line 121 of file dualQuath.h.

◆ GetInverse()

GF_API GfDualQuath GetInverse ( ) const

Returns the inverse of this dual quaternion.

◆ GetLength()

GF_API std::pair< GfHalf, GfHalf > GetLength ( ) const

Returns geometric length of this dual quaternion.

◆ GetNormalized()

GF_API GfDualQuath GetNormalized ( GfHalf  eps = GF_MIN_VECTOR_LENGTH) const

Returns a normalized (unit-length) version of this dual quaternion.

If the length of this dual quaternion is smaller than eps, this returns the identity dual quaternion.

◆ GetReal()

const GfQuath & GetReal ( ) const
inline

Returns the real part of the dual quaternion.

Definition at line 104 of file dualQuath.h.

◆ GetTranslation()

GF_API GfVec3h GetTranslation ( ) const

Get the translation component of this dual quaternion.

◆ GetZero()

static GfDualQuath GetZero ( )
inlinestatic

Returns the zero dual quaternion, which has a real part of (0,0,0,0) and a dual part of (0,0,0,0).

Definition at line 115 of file dualQuath.h.

◆ Normalize()

GF_API std::pair< GfHalf, GfHalf > Normalize ( GfHalf  eps = GF_MIN_VECTOR_LENGTH)

Normalizes this dual quaternion in place.

Normalizes this dual quaternion in place to unit length, returning the length before normalization. If the length of this dual quaternion is smaller than eps, this sets the dual quaternion to identity.

◆ operator!=()

bool operator!= ( const GfDualQuath dq) const
inline

Component-wise dual quaternion inequality test.

The real and dual parts must match exactly for dual quaternions to be considered equal.

Definition at line 172 of file dualQuath.h.

◆ operator*=() [1/2]

GF_API GfDualQuath & operator*= ( const GfDualQuath dq)

Post-multiplies dual quaternion dq into this dual quaternion.

◆ operator*=() [2/2]

GfDualQuath & operator*= ( GfHalf  s)
inline

Scales this dual quaternion by s.

Definition at line 195 of file dualQuath.h.

◆ operator+=()

GfDualQuath & operator+= ( const GfDualQuath dq)
inline

Component-wise unary sum operator.

Definition at line 177 of file dualQuath.h.

◆ operator-=()

GfDualQuath & operator-= ( const GfDualQuath dq)
inline

Component-wise unary difference operator.

Definition at line 184 of file dualQuath.h.

◆ operator/=()

GfDualQuath & operator/= ( GfHalf  s)
inline

Scales this dual quaternion by 1 / s.

Definition at line 202 of file dualQuath.h.

◆ operator==()

bool operator== ( const GfDualQuath dq) const
inline

Component-wise dual quaternion equality test.

The real and dual parts must match exactly for dual quaternions to be considered equal.

Definition at line 165 of file dualQuath.h.

◆ SetDual()

void SetDual ( const GfQuath dual)
inline

Sets the dual part of the dual quaternion.

Definition at line 99 of file dualQuath.h.

◆ SetReal()

void SetReal ( const GfQuath real)
inline

Sets the real part of the dual quaternion.

Definition at line 94 of file dualQuath.h.

◆ SetTranslation()

GF_API void SetTranslation ( const GfVec3h translation)

Set the translation component of this dual quaternion.

◆ Transform()

GF_API GfVec3h Transform ( const GfVec3h vec) const

Transforms the row vector vec by the dual quaternion.

Friends And Related Function Documentation

◆ hash_value

size_t hash_value ( const GfDualQuath dq)
friend

Hash.

Definition at line 159 of file dualQuath.h.

◆ operator* [1/3]

GfDualQuath operator* ( const GfDualQuath dq,
GfHalf  s 
)
friend

Returns the product of dual quaternion dq and scalar s.

Definition at line 228 of file dualQuath.h.

◆ operator* [2/3]

GfDualQuath operator* ( const GfDualQuath dq1,
const GfDualQuath dq2 
)
friend

Returns the product of dual quaternions dq1 and dq2.

Definition at line 221 of file dualQuath.h.

◆ operator* [3/3]

GfDualQuath operator* ( GfHalf  s,
const GfDualQuath dq 
)
friend

Returns the product of dual quaternion dq and scalar s.

Definition at line 234 of file dualQuath.h.

◆ operator+

GfDualQuath operator+ ( const GfDualQuath dq1,
const GfDualQuath dq2 
)
friend

Component-wise binary sum operator.

Definition at line 207 of file dualQuath.h.

◆ operator-

GfDualQuath operator- ( const GfDualQuath dq1,
const GfDualQuath dq2 
)
friend

Component-wise binary difference operator.

Definition at line 214 of file dualQuath.h.

◆ operator/

GfDualQuath operator/ ( const GfDualQuath dq,
GfHalf  s 
)
friend

Returns the product of dual quaternion dq and scalar 1 / s.

Definition at line 240 of file dualQuath.h.


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