isce3 0.25.0
Loading...
Searching...
No Matches
isce3::core::Quaternion Class Reference

Quaternion representation of rotations, based on double precision Eigen::Quaterniond. More...

#include <Quaternion.h>

Inheritance diagram for isce3::core::Quaternion:

Public Member Functions

 Quaternion ()
 Default constructor (qw,qx,qy,qz) = (1,0,0,0) , no rotation, equivalent to 3x3 identity rotation matrix.
 
 Quaternion (double w, double x, double y, double z)
 Constructor from qw, qx, qy, qz.
 
 Quaternion (const Eigen::Vector4d &qvec)
 Constructor from Eigen 4-element unit quaternion vector.
 
 Quaternion (const Eigen::Vector3d &vec)
 Constructor from Eigen 3D unit vector.
 
 Quaternion (const Eigen::Matrix3d &rotmat)
 Constructor from an Eigen 3D Rotation matrix Throw exception for non-uniary matrix within 1e-6 precision.
 
 Quaternion (const Eigen::AngleAxisd &aa)
 Constructor from an Eigen AngleAxis object.
 
 Quaternion (double angle, const Eigen::Vector3d &axis)
 Constructor from an angle and 3-D vector axis.
 
 Quaternion (double yaw, double pitch, double roll)
 Constructor from Euler Angles yaw, pitch, roll.
 
 Quaternion (const EulerAngles &ypr)
 Constructor from isce3 EulerAngle Object.
 
 Quaternion (const Eigen::Quaternion< double > &other)
 Copy constructor from other Quaternion obj.
 
Eigen::Vector3d rotate (const Eigen::Vector3d &vec) const
 Rotate a 3-D vector by self quaternion object.
 
Vec3 toYPR () const
 Convert quaternion to an Eigen vector of Euler angles (yaw, pitch, roll) , all in radians.
 
EulerAngles toEulerAngles () const
 Build isce3 EulerAngles Object from Quaternion object.
 
Eigen::AngleAxisd toAngleAxis () const
 Convert from Eigen Quaternion to Eigen AngleAxis object.
 

Detailed Description

Quaternion representation of rotations, based on double precision Eigen::Quaterniond.

Element names correspond to q = w + xi + yj + zk. Uses Hamilton convention, same as SPICE toolikt (https://naif.jpl.nasa.gov/pub/naif/toolkit_docs/C/cspice/qxq_c.html). See https://arxiv.org/pdf/1801.07478.pdf for details of conventions.

Constructor & Destructor Documentation

◆ Quaternion() [1/9]

isce3::core::Quaternion::Quaternion ( double w,
double x,
double y,
double z )
inline

Constructor from qw, qx, qy, qz.

Parameters
[in]w: double scalar , real part
[in]x: double scalar, imag part along x axis
[in]y: double scalar, imag part along y axis
[in]z: double scalar, imag part along z axis

◆ Quaternion() [2/9]

isce3::core::Quaternion::Quaternion ( const Eigen::Vector4d & qvec)
inlineexplicit

Constructor from Eigen 4-element unit quaternion vector.

Parameters
[in]qvec: quaternion 4-element Eigen vector or isce3 Vec4 representing qw, qx, qy, qz.

◆ Quaternion() [3/9]

isce3::core::Quaternion::Quaternion ( const Eigen::Vector3d & vec)
inlineexplicit

Constructor from Eigen 3D unit vector.

Parameters
[in]vec: 3-D . 3-element Eigen vector or isce3 Vec3 representing qx, qy, qz.

◆ Quaternion() [4/9]

isce3::core::Quaternion::Quaternion ( const Eigen::Matrix3d & rotmat)
inline

Constructor from an Eigen 3D Rotation matrix Throw exception for non-uniary matrix within 1e-6 precision.

Parameters
[in]rotmat: 3-by-3 rotation Eigen matrix or isce3 Mat3.
Exceptions
InvalidArgument

◆ Quaternion() [5/9]

isce3::core::Quaternion::Quaternion ( const Eigen::AngleAxisd & aa)
inline

Constructor from an Eigen AngleAxis object.

Parameters
[in]aa: Eigen AngleAxisd object

◆ Quaternion() [6/9]

isce3::core::Quaternion::Quaternion ( double angle,
const Eigen::Vector3d & axis )
inline

Constructor from an angle and 3-D vector axis.

Parameters
[in]angle: scalar in radians
[in]axis: Eigen 3-D double unit vector

◆ Quaternion() [7/9]

isce3::core::Quaternion::Quaternion ( double yaw,
double pitch,
double roll )
inline

Constructor from Euler Angles yaw, pitch, roll.

Parameters
[in]yaw: scalar in radians
[in]pitch: scalar in radians
[in]roll: scalar in radians

◆ Quaternion() [8/9]

isce3::core::Quaternion::Quaternion ( const EulerAngles & ypr)
explicit

Constructor from isce3 EulerAngle Object.

Parameters
[in]ypr: isce3 EulerAngle object

◆ Quaternion() [9/9]

isce3::core::Quaternion::Quaternion ( const Eigen::Quaternion< double > & other)
inline

Copy constructor from other Quaternion obj.

Parameters
[in]other: another Eigen quaternion object

Member Function Documentation

◆ rotate()

Eigen::Vector3d isce3::core::Quaternion::rotate ( const Eigen::Vector3d & vec) const
inline

Rotate a 3-D vector by self quaternion object.

Parameters
[in]vec: Eigen Vector3 or isce3 Vec3
Returns
rotated Eigen Vector3 or isce3 Vec3

◆ toAngleAxis()

Eigen::AngleAxisd isce3::core::Quaternion::toAngleAxis ( ) const
inline

Convert from Eigen Quaternion to Eigen AngleAxis object.

Returns
Eigen AngleAxis object

◆ toEulerAngles()

EulerAngles isce3::core::Quaternion::toEulerAngles ( ) const

Build isce3 EulerAngles Object from Quaternion object.

Returns
isce3 EulerAngle object

◆ toYPR()

Vec3 isce3::core::Quaternion::toYPR ( ) const

Convert quaternion to an Eigen vector of Euler angles (yaw, pitch, roll) , all in radians.

Returns
Eigen:Vector3 or isce3 Vec3 of Yaw,Pitch,Roll angles all in radians.

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

Generated for ISCE3.0 by doxygen 1.13.2.