Skip to content

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.

inline Matrix3x3 ennui::math::R3_to_SO3 (
    ConstRefVector3 & x
) 

Parameters:

  • x rotation 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.

inline Matrix3x3 ennui::math::R3_to_so3 (
    const Vector3 & x
) 


function R4_to_SO3

Quaternion to rotation matrix.

inline Matrix3x3 ennui::math::R4_to_SO3 (
    const Vector4 & q
) 


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:

  • OmegaNormed skew-symmetric matrix of normalized 3-vector
  • xnorm magnitude 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:

  • Omega skew-symmetric matrix (NOT normalized)
  • xnorm magnitude 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_cross skew-symmetric matrix (NOT normalized)
  • alpha_norm magnitude 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_cross skew-symmetric matrix (NOT normalized)
  • alpha_norm magnitude of the rotation vector

Returns:

general matrix (3x3)

See eq. (5.84) groves_principles_2013


function normalize_SO3

Matrix normalization by SVD.

inline Matrix3x3 ennui::math::normalize_SO3 (
    const Matrix3x3 R
) 


function normalize_SO3_Groves

Matrix normalization using Grove's approximation.

inline Matrix3x3 ennui::math::normalize_SO3_Groves (
    const Matrix3x3 R
) 



The documentation for this class was generated from the following file Ennui/math/rotation.hpp