Namespace ennui::math
Namespace List > ennui > math
namespace for general mathematical operations
Classes
| Type | Name |
|---|---|
| class | Units Fixed mathematical constants and conversion factors. |
Public Functions
| Type | Name |
|---|---|
| Matrix3x3 | R3_to_SO3 (ConstRefVector3 & x) Euler's finite rotation, stable. |
| Matrix3x3 | R3_to_so3 (const Vector3 & x) Vector to skew-symmetric matrix. |
| Matrix3x3 | R4_to_SO3 (const Vector4 & q) Quaternion to rotation matrix. |
| Matrix3x3 | euler_finite_rotation (const Eigen::Ref< const Matrix3x3 > & OmegaNormed, double xnorm) Euler's finite rotation, standard form. |
| Matrix3x3 | euler_finite_rotation_approx (const Eigen::Ref< const Matrix3x3 > & Omega, double xnorm) Euler's finite rotation, small angle approximation. |
| Matrix3x3 | mean_attitude_update (const Eigen::Ref< const Matrix3x3 > & alpha_cross, double alpha_norm) Mean attitude update from delta-theta ("exact") |
| Matrix3x3 | mean_attitude_update_approx (const Eigen::Ref< const Matrix3x3 > & alpha_cross, double alpha_norm) Approximate mean attitude update from delta-theta. |
| Matrix3x3 | normalize_SO3 (const Matrix3x3 R) Matrix normalization by SVD. |
| Matrix3x3 | normalize_SO3_Groves (const Matrix3x3 R) Matrix normalization using Grove's approximation. |
Public Functions Documentation
function R3_to_SO3
Euler's finite rotation, stable.
Parameters:
xrotation vector
Returns:
rotation matrix
Stable version of the rotation expansion. Switches between small-angle approximation and exact based on the vector magnitude to avoid numerical instability.
function R3_to_so3
Vector to skew-symmetric matrix.
function R4_to_SO3
Quaternion to rotation matrix.
function euler_finite_rotation
Euler's finite rotation, standard form.
inline Matrix3x3 ennui::math::euler_finite_rotation (
const Eigen::Ref< const Matrix3x3 > & OmegaNormed,
double xnorm
)
Parameters:
OmegaNormedskew-symmetric matrix of normalized 3-vectorxnormmagnitude of the rotation vector
Returns:
rotation matrix
Supplying Omega normed and its magnitude as separate variables avoids computing the sinc function (well-defined at 0 but problematic numerically). See eq. (5.73) groves_principles_2013
function euler_finite_rotation_approx
Euler's finite rotation, small angle approximation.
inline Matrix3x3 ennui::math::euler_finite_rotation_approx (
const Eigen::Ref< const Matrix3x3 > & Omega,
double xnorm
)
Parameters:
Omegaskew-symmetric matrix (NOT normalized)xnormmagnitude of the rotation vector
Returns:
rotation matrix
Employing the small angle approximation avoids both evaluating trigonometric functions and variable division. See eq. (5.72) groves_principles_2013
function mean_attitude_update
Mean attitude update from delta-theta ("exact")
inline Matrix3x3 ennui::math::mean_attitude_update (
const Eigen::Ref< const Matrix3x3 > & alpha_cross,
double alpha_norm
)
Parameters:
alpha_crossskew-symmetric matrix (NOT normalized)alpha_normmagnitude of the rotation vector
Returns:
general matrix (3x3)
See eq. (5.84) groves_principles_2013
function mean_attitude_update_approx
Approximate mean attitude update from delta-theta.
inline Matrix3x3 ennui::math::mean_attitude_update_approx (
const Eigen::Ref< const Matrix3x3 > & alpha_cross,
double alpha_norm
)
Parameters:
alpha_crossskew-symmetric matrix (NOT normalized)alpha_normmagnitude of the rotation vector
Returns:
general matrix (3x3)
See eq. (5.84) groves_principles_2013
function normalize_SO3
Matrix normalization by SVD.
function normalize_SO3_Groves
Matrix normalization using Grove's approximation.
The documentation for this class was generated from the following file Ennui/math/rotation.hpp