AutoPas  3.0.0
Loading...
Searching...
No Matches
Functions
autopas::utils::quaternion Namespace Reference

Array utils specifically for handling quaternions. More...

Functions

std::vector< std::array< double, 3 > > rotateVectorOfPositions (const std::array< double, 4 > &q, const std::vector< std::array< double, 3 > > &positionVector)
 Rotates a std::vector of 3D positions.
 
std::array< double, 3 > rotatePosition (const std::array< double, 4 > &q, const std::array< double, 3 > &pos)
 Rotates a single 3D position.
 
std::array< double, 3 > rotatePositionBackwards (const std::array< double, 4 > &q, const std::array< double, 3 > &pos)
 Rotates a single 3D position backwards.
 
std::array< double, 4 > qMul (const std::array< double, 4 > &q1, const std::array< double, 4 > &q2)
 Quaternion multiplication.
 
std::array< double, 4 > qMul (const std::array< double, 4 > &q, const std::array< double, 3 > &v)
 Quaternion multiplication (converting v into a quaternion (0,v))
 
std::array< double, 4 > qMul (const std::array< double, 3 > &v, const std::array< double, 4 > &q)
 Quaternion multiplication (converting v into a quaternion (0,v))
 
std::array< double, 4 > qConjugate (const std::array< double, 4 > &q)
 Quaternion conjugation.
 
std::array< double, 3 > convertQuaternionTo3DVec (const std::array< double, 4 > &q)
 Convert quaternion to 3d-vec.
 
std::array< double, 4 > qMirror (const std::array< double, 4 > &q, const int &dimensionNormalToMirror)
 Calculate the quaternion representing the same rotation, but mirrored.
 

Detailed Description

Array utils specifically for handling quaternions.

Function Documentation

◆ convertQuaternionTo3DVec()

std::array< double, 3 > autopas::utils::quaternion::convertQuaternionTo3DVec ( const std::array< double, 4 > &  q)

Convert quaternion to 3d-vec.

Parameters
qquaternion
Returns
Quaternion without scalar part (i.e. 0th element)

◆ qConjugate()

std::array< double, 4 > autopas::utils::quaternion::qConjugate ( const std::array< double, 4 > &  q)

Quaternion conjugation.

Parameters
qquaternion
Returns
conjugated quaternion

◆ qMirror()

std::array< double, 4 > autopas::utils::quaternion::qMirror ( const std::array< double, 4 > &  q,
const int &  dimensionNormalToMirror 
)

Calculate the quaternion representing the same rotation, but mirrored.

Parameters
qquaternion to be mirrored
dimensionNormalToMirrordimension normal to mirror plane
Returns
mirrored quaternion.

◆ qMul() [1/3]

std::array< double, 4 > autopas::utils::quaternion::qMul ( const std::array< double, 3 > &  v,
const std::array< double, 4 > &  q 
)

Quaternion multiplication (converting v into a quaternion (0,v))

Parameters
v3D-vector
qquaternion
Returns
(0,v) times q

◆ qMul() [2/3]

std::array< double, 4 > autopas::utils::quaternion::qMul ( const std::array< double, 4 > &  q,
const std::array< double, 3 > &  v 
)

Quaternion multiplication (converting v into a quaternion (0,v))

Parameters
qquaternion
v3D-vector
Returns
q times (0,v)

◆ qMul() [3/3]

std::array< double, 4 > autopas::utils::quaternion::qMul ( const std::array< double, 4 > &  q1,
const std::array< double, 4 > &  q2 
)

Quaternion multiplication.

See Hamiltonian Product: https://en.wikipedia.org/wiki/Quaternion#Hamilton_product.

Parameters
q1quaternion 1
q2quaternion 2
Returns
q1 times q2

◆ rotatePosition()

std::array< double, 3 > autopas::utils::quaternion::rotatePosition ( const std::array< double, 4 > &  q,
const std::array< double, 3 > &  pos 
)

Rotates a single 3D position.

Parameters
qQuaternion defining rotation
posarray of 3 doubles, defining position
Returns
rotated position

◆ rotatePositionBackwards()

std::array< double, 3 > autopas::utils::quaternion::rotatePositionBackwards ( const std::array< double, 4 > &  q,
const std::array< double, 3 > &  pos 
)

Rotates a single 3D position backwards.

Parameters
qQuaternion defining rotation
posarray of 3 doubles, defining position
Returns
rotated position

◆ rotateVectorOfPositions()

std::vector< std::array< double, 3 > > autopas::utils::quaternion::rotateVectorOfPositions ( const std::array< double, 4 > &  q,
const std::vector< std::array< double, 3 > > &  positionVector 
)

Rotates a std::vector of 3D positions.

Parameters
qQuaternion defining rotation
positionVectorstd::vector of arrays of 3 doubles, defining positions
Returns
rotated positions
Note
we could instead pre-compute the rotation matrix -