imunano33  0.1.1
imunano33::Quaternion Class Reference

A simple quaternion class for rotations. More...

#include <quaternion.hpp>

Public Member Functions

 Quaternion ()
 Default constructor. More...
 
 Quaternion (const num_t w, const Vector3D &vec)
 Constructor for a basic quaternion. More...
 
 Quaternion (const Vector3D &vec, const num_t ang)
 Constructor for a rotation quaternion. More...
 
 Quaternion (const Quaternion &other)=default
 Copy constructor. More...
 
Quaternionoperator= (const Quaternion &other)=default
 Assignment operator.
 
 ~Quaternion ()=default
 Destructor.
 
 Quaternion (Quaternion &&)=default
 Move constructor.
 
Quaternionoperator= (Quaternion &&)=default
 Move assignment.
 
num_t w () const
 Gets the scalar component of the quaternion. More...
 
Vector3D vec () const
 Gets the vector component of the quaternion. More...
 
Quaternion conj () const
 Gets the quaternion conjugate. More...
 
Quaternion inv () const
 Gets quaternion inverse. More...
 
num_t norm () const
 Gets quaternion norm. More...
 
Quaternion unit () const
 Gets equivalent unit quaternion. More...
 
Quaternionoperator*= (const Quaternion &other)
 Multiplies a quaternion in place. More...
 
Vector3D rotate (const Vector3D &vec) const
 Rotates a vector with current quaternion object. More...
 

Static Public Member Functions

static Vector3D rotate (const Vector3D &vec, const Vector3D &axis, num_t ang)
 Rotates a vector. More...
 

Detailed Description

A simple quaternion class for rotations.

The quaternion operations and math are mainly based on this paper: https://jerabaul29.github.io/assets/quaternions/quaternions.pdf

Constructor & Destructor Documentation

◆ Quaternion() [1/4]

imunano33::Quaternion::Quaternion ( )
inline

Default constructor.

Initializes quaternion to [1, 0, 0, 0]

◆ Quaternion() [2/4]

imunano33::Quaternion::Quaternion ( const num_t  w,
const Vector3D vec 
)
inline

Constructor for a basic quaternion.

Parameters
wThe scalar component
vecThe vector component

◆ Quaternion() [3/4]

imunano33::Quaternion::Quaternion ( const Vector3D vec,
const num_t  ang 
)
inline

Constructor for a rotation quaternion.

Parameters
vecThe vector to rotate around
angThe angle to rotate around by
Note
A zero vector passed into vec will result in undefined behavior

◆ Quaternion() [4/4]

imunano33::Quaternion::Quaternion ( const Quaternion other)
default

Copy constructor.

Parameters
otherOther quaternion

Member Function Documentation

◆ conj()

Quaternion imunano33::Quaternion::conj ( ) const
inline

Gets the quaternion conjugate.

Returns
The quaternion conjugate

◆ inv()

Quaternion imunano33::Quaternion::inv ( ) const
inline

Gets quaternion inverse.

Returns
Quaternion inverse

◆ norm()

num_t imunano33::Quaternion::norm ( ) const
inline

Gets quaternion norm.

This behaves the same as a "magnitude" in 4-dimensional vector terms.

Returns
Quaternion norm

◆ operator*=()

Quaternion & imunano33::Quaternion::operator*= ( const Quaternion other)
inline

Multiplies a quaternion in place.

Parameters
otherquaternion
Returns
Quaternion multiplied in place

◆ rotate() [1/2]

Vector3D imunano33::Quaternion::rotate ( const Vector3D vec) const
inline

Rotates a vector with current quaternion object.

Parameters
vecThe vector to rotate
Returns
The rotated vector.

◆ rotate() [2/2]

Vector3D imunano33::Quaternion::rotate ( const Vector3D vec,
const Vector3D axis,
num_t  ang 
)
inlinestatic

Rotates a vector.

Parameters
vecThe vector to rotate
axisThe axis of rotation
angAngle of rotation
Returns
The rotated vector.

◆ unit()

Quaternion imunano33::Quaternion::unit ( ) const
inline

Gets equivalent unit quaternion.

This behaves the same as a "normalized" 4-dimensional vector.

Note
If the quaternion is zero, then results in undefined behavior.
Returns
Equivalent unit quaternion

◆ vec()

Vector3D imunano33::Quaternion::vec ( ) const
inline

Gets the vector component of the quaternion.

Returns
The vector component

◆ w()

num_t imunano33::Quaternion::w ( ) const
inline

Gets the scalar component of the quaternion.

Returns
The scalar component

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