Unit-quaternion rotation representation and rotation algebra helpers.
More...
#include <quaternion.hpp>
|
| double | w |
| double | x |
| double | y |
| double | z |
Unit-quaternion rotation representation and rotation algebra helpers.
Physics principle: quaternion rotational kinematics avoids gimbal lock and provides stable composition/integration of 3D orientation. Vectors are rotated with q v q^-1 and orientation updates use angular velocity via quaternion derivatives.
References: https://en.wikipedia.org/wiki/Quaternions_and_spatial_rotation https://en.wikipedia.org/wiki/Gimbal_lock
◆ Quaternion() [1/3]
| frcsim::Quaternion::Quaternion |
( |
| ) |
|
|
inlineconstexprnoexcept |
◆ Quaternion() [2/3]
| frcsim::Quaternion::Quaternion |
( |
double | w_, |
|
|
double | x_, |
|
|
double | y_, |
|
|
double | z_ ) |
|
inlineconstexprnoexcept |
◆ Quaternion() [3/3]
| frcsim::Quaternion::Quaternion |
( |
double | w_, |
|
|
const Vector3 & | v ) |
|
inlineconstexprnoexcept |
◆ conjugate()
| Quaternion frcsim::Quaternion::conjugate |
( |
| ) |
const |
|
inlinenodiscardconstexprnoexcept |
◆ forward()
| Vector3 frcsim::Quaternion::forward |
( |
| ) |
const |
|
inlinenodiscardnoexcept |
◆ fromAngularVelocity()
| Quaternion frcsim::Quaternion::fromAngularVelocity |
( |
const Vector3 & | omega, |
|
|
double | dt ) |
|
inlinestaticnoexcept |
◆ fromAxisAngle()
| Quaternion frcsim::Quaternion::fromAxisAngle |
( |
const Vector3 & | axis, |
|
|
double | angleRad ) |
|
inlinestaticnoexcept |
◆ hasNaN()
| bool frcsim::Quaternion::hasNaN |
( |
| ) |
const |
|
inlinenodiscardnoexcept |
◆ inverse()
◆ isIdentity()
| bool frcsim::Quaternion::isIdentity |
( |
double | eps = 1e-12 | ) |
const |
|
inlinenodiscardnoexcept |
◆ norm()
| double frcsim::Quaternion::norm |
( |
| ) |
const |
|
inlinenodiscardnoexcept |
◆ norm2()
| double frcsim::Quaternion::norm2 |
( |
| ) |
const |
|
inlinenodiscardconstexprnoexcept |
◆ normalize()
| void frcsim::Quaternion::normalize |
( |
| ) |
|
|
inlinenoexcept |
◆ normalized()
| Quaternion frcsim::Quaternion::normalized |
( |
| ) |
const |
|
inlinenodiscardnoexcept |
◆ normalizeIfNeeded()
| void frcsim::Quaternion::normalizeIfNeeded |
( |
double | eps = 1e-12 | ) |
|
|
inlinenoexcept |
◆ operator!=()
| bool frcsim::Quaternion::operator!= |
( |
const Quaternion & | rhs | ) |
const |
|
inlinenodiscardconstexprnoexcept |
◆ operator*() [1/2]
|
|
inlinenodiscardconstexprnoexcept |
◆ operator*() [2/2]
| Quaternion frcsim::Quaternion::operator* |
( |
double | scalar | ) |
const |
|
inlinenodiscardconstexprnoexcept |
◆ operator+()
|
|
inlinenodiscardconstexprnoexcept |
◆ operator-()
| Quaternion frcsim::Quaternion::operator- |
( |
| ) |
const |
|
inlinenodiscardconstexprnoexcept |
◆ operator==()
| bool frcsim::Quaternion::operator== |
( |
const Quaternion & | rhs | ) |
const |
|
inlinenodiscardconstexprnoexcept |
◆ right()
| Vector3 frcsim::Quaternion::right |
( |
| ) |
const |
|
inlinenodiscardnoexcept |
◆ rotate()
◆ slerp()
◆ toAxisAngle()
| void frcsim::Quaternion::toAxisAngle |
( |
Vector3 & | axis, |
|
|
double & | angleRad ) const |
|
inlinenoexcept |
◆ toMatrix()
| void frcsim::Quaternion::toMatrix |
( |
double | m[3][3] | ) |
const |
|
inlinenoexcept |
◆ up()
| Vector3 frcsim::Quaternion::up |
( |
| ) |
const |
|
inlinenodiscardnoexcept |
◆ operator*
◆ operator<<
| std::ostream & operator<< |
( |
std::ostream & | os, |
|
|
const Quaternion & | q ) |
|
friend |
| double frcsim::Quaternion::w |
| double frcsim::Quaternion::x |
| double frcsim::Quaternion::y |
| double frcsim::Quaternion::z |
The documentation for this struct was generated from the following file: