MiniTensor Version of the Day
Loading...
Searching...
No Matches
minitensor::Quaternion< T > Class Template Reference

#include <MiniTensor_Quaternion.h>

Public Member Functions

KOKKOS_INLINE_FUNCTION Quaternion ()
 
KOKKOS_INLINE_FUNCTION Quaternion (T const &s, Vector< T, 3 > const &v)
 
KOKKOS_INLINE_FUNCTION Quaternion (T const &s, T const &v0, T const &v1, T const &v2)
 
KOKKOS_INLINE_FUNCTION Quaternion (Vector< T, 4 > const &q)
 
KOKKOS_INLINE_FUNCTION T constscalar () const
 
KOKKOS_INLINE_FUNCTION Tscalar ()
 
KOKKOS_INLINE_FUNCTION Vector< T, 3 > const & vector () const
 
KOKKOS_INLINE_FUNCTION Vector< T, 3 > & vector ()
 
KOKKOS_INLINE_FUNCTION T constoperator() (Index const i) const
 
KOKKOS_INLINE_FUNCTION Toperator() (Index const i)
 
KOKKOS_INLINE_FUNCTION Vector< T, 4 > to_vector () const
 

Private Attributes

T s_ {}
 
Vector< T, 3 > v_
 

Detailed Description

template<typename T>
class minitensor::Quaternion< T >

Quaternion class. Scalar-first convention: the quaternion \( q = (q_s; q_v) \) has scalar part \( q_s \) and vector part \( q_v \in R^3 \). A unit quaternion encodes the rotation by angle \( \theta \) about the unit axis \( n \) as \( q_s = \cos(\theta/2) \), \( q_v = \sin(\theta/2)\, n \).

Definition at line 72 of file MiniTensor_Quaternion.h.

Constructor & Destructor Documentation

◆ Quaternion() [1/4]

template<typename T >
KOKKOS_INLINE_FUNCTION minitensor::Quaternion< T >::Quaternion ( )
inline

Default construction: identity quaternion \( (1; 0, 0, 0) \).

Definition at line 80 of file MiniTensor_Quaternion.h.

◆ Quaternion() [2/4]

template<typename T >
KOKKOS_INLINE_FUNCTION minitensor::Quaternion< T >::Quaternion ( T const s,
Vector< T, 3 > const v 
)
inline

Construction from scalar and vector parts.

Parameters
sscalar part
vvector part

Definition at line 90 of file MiniTensor_Quaternion.h.

◆ Quaternion() [3/4]

template<typename T >
KOKKOS_INLINE_FUNCTION minitensor::Quaternion< T >::Quaternion ( T const s,
T const v0,
T const v1,
T const v2 
)
inline

Construction from four components, scalar first.

Parameters
sscalar part
v0first component of the vector part
v1second component of the vector part
v2third component of the vector part

Definition at line 102 of file MiniTensor_Quaternion.h.

◆ Quaternion() [4/4]

template<typename T >
KOKKOS_INLINE_FUNCTION minitensor::Quaternion< T >::Quaternion ( Vector< T, 4 > const q)
inlineexplicit

Construction from a 4-vector in scalar-first order.

Parameters
q4-vector \( (q_s, q_{v0}, q_{v1}, q_{v2}) \)

Definition at line 113 of file MiniTensor_Quaternion.h.

Member Function Documentation

◆ scalar() [1/2]

template<typename T >
KOKKOS_INLINE_FUNCTION T const & minitensor::Quaternion< T >::scalar ( ) const
inline

Scalar part.

Definition at line 122 of file MiniTensor_Quaternion.h.

◆ scalar() [2/2]

template<typename T >
KOKKOS_INLINE_FUNCTION T & minitensor::Quaternion< T >::scalar ( )
inline

Scalar part, mutable.

Definition at line 132 of file MiniTensor_Quaternion.h.

◆ vector() [1/2]

template<typename T >
KOKKOS_INLINE_FUNCTION Vector< T, 3 > const & minitensor::Quaternion< T >::vector ( ) const
inline

Vector part.

Definition at line 142 of file MiniTensor_Quaternion.h.

◆ vector() [2/2]

template<typename T >
KOKKOS_INLINE_FUNCTION Vector< T, 3 > & minitensor::Quaternion< T >::vector ( )
inline

Vector part, mutable.

Definition at line 152 of file MiniTensor_Quaternion.h.

◆ operator()() [1/2]

Indexed access, scalar first.

Parameters
icomponent index: 0 is the scalar part, 1..3 the vector part

Definition at line 163 of file MiniTensor_Quaternion.h.

◆ operator()() [2/2]

Indexed access, scalar first, mutable.

Parameters
icomponent index: 0 is the scalar part, 1..3 the vector part

Definition at line 175 of file MiniTensor_Quaternion.h.

◆ to_vector()

template<typename T >
KOKKOS_INLINE_FUNCTION Vector< T, 4 > minitensor::Quaternion< T >::to_vector ( ) const
inline

Components as a 4-vector in scalar-first order.

Definition at line 186 of file MiniTensor_Quaternion.h.

Member Data Documentation

◆ s_

template<typename T >
T minitensor::Quaternion< T >::s_ {}
private

Scalar part.

Definition at line 205 of file MiniTensor_Quaternion.h.

◆ v_

template<typename T >
Vector<T, 3> minitensor::Quaternion< T >::v_
private

Vector part.

Definition at line 211 of file MiniTensor_Quaternion.h.


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