EulerAngles< Scalar_ > Class Template Reference

Public Types

enum  { Dim = 3 }
 
typedef Scalar_ Scalar
 
typedef Matrix< Scalar, 3, 3 > Matrix3
 
typedef Matrix< Scalar, 3, 1 > Vector3
 
typedef Quaternion< ScalarQuaternionType
 

Public Member Functions

 EulerAngles ()
 
 EulerAngles (Scalar a0, Scalar a1, Scalar a2)
 
 EulerAngles (const QuaternionType &q)
 
const Vector3coeffs () const
 
Vector3coeffs ()
 
EulerAnglesoperator= (const QuaternionType &q)
 
EulerAnglesoperator= (const Matrix3 &m)
 
Matrix3 toRotationMatrix (void) const
 
 operator QuaternionType ()
 

Protected Attributes

Vector3 m_angles
 

Member Typedef Documentation

◆ Matrix3

template<typename Scalar_ >
typedef Matrix<Scalar, 3, 3> EulerAngles< Scalar_ >::Matrix3

◆ QuaternionType

template<typename Scalar_ >
typedef Quaternion<Scalar> EulerAngles< Scalar_ >::QuaternionType

◆ Scalar

template<typename Scalar_ >
typedef Scalar_ EulerAngles< Scalar_ >::Scalar

◆ Vector3

template<typename Scalar_ >
typedef Matrix<Scalar, 3, 1> EulerAngles< Scalar_ >::Vector3

Member Enumeration Documentation

◆ anonymous enum

template<typename Scalar_ >
anonymous enum
Enumerator
Dim 
126 { Dim = 3 };
@ Dim
Definition: quaternion_demo.cpp:126

Constructor & Destructor Documentation

◆ EulerAngles() [1/3]

template<typename Scalar_ >
EulerAngles< Scalar_ >::EulerAngles ( )
inline
136 {}

◆ EulerAngles() [2/3]

template<typename Scalar_ >
EulerAngles< Scalar_ >::EulerAngles ( Scalar  a0,
Scalar  a1,
Scalar  a2 
)
inline
137 : m_angles(a0, a1, a2) {}
Vector3 m_angles
Definition: quaternion_demo.cpp:133

◆ EulerAngles() [3/3]

template<typename Scalar_ >
EulerAngles< Scalar_ >::EulerAngles ( const QuaternionType q)
inline
138 { *this = q; }
EIGEN_DEVICE_FUNC const Scalar & q
Definition: SpecialFunctionsImpl.h:2019

References Eigen::numext::q.

Member Function Documentation

◆ coeffs() [1/2]

template<typename Scalar_ >
Vector3& EulerAngles< Scalar_ >::coeffs ( )
inline

◆ coeffs() [2/2]

template<typename Scalar_ >
const Vector3& EulerAngles< Scalar_ >::coeffs ( ) const
inline

◆ operator QuaternionType()

template<typename Scalar_ >
EulerAngles< Scalar_ >::operator QuaternionType ( )
inline
168 { return QuaternionType(toRotationMatrix()); }
Matrix3 toRotationMatrix(void) const
Definition: quaternion_demo.cpp:158
Quaternion< Scalar > QuaternionType
Definition: quaternion_demo.cpp:130

References Eigen::EulerAngles< Scalar_, _System >::toRotationMatrix().

◆ operator=() [1/2]

template<typename Scalar_ >
EulerAngles& EulerAngles< Scalar_ >::operator= ( const Matrix3 m)
inline
148  {
149  // mat = cy*cz -cy*sz sy
150  // cz*sx*sy+cx*sz cx*cz-sx*sy*sz -cy*sx
151  // -cx*cz*sy+sx*sz cz*sx+cx*sy*sz cx*cy
152  m_angles.coeffRef(1) = std::asin(m.coeff(0, 2));
153  m_angles.coeffRef(0) = std::atan2(-m.coeff(1, 2), m.coeff(2, 2));
154  m_angles.coeffRef(2) = std::atan2(-m.coeff(0, 1), m.coeff(0, 0));
155  return *this;
156  }
AnnoyingScalar atan2(const AnnoyingScalar &y, const AnnoyingScalar &x)
Definition: AnnoyingScalar.h:139
EIGEN_DEVICE_FUNC constexpr EIGEN_STRONG_INLINE Scalar & coeffRef(Index rowId, Index colId)
Definition: PlainObjectBase.h:217
int * m
Definition: level2_cplx_impl.h:294
EIGEN_STRONG_INLINE EIGEN_DEVICE_FUNC bfloat16 asin(const bfloat16 &a)
Definition: BFloat16.h:634

References Eigen::bfloat16_impl::asin(), atan2(), Eigen::Matrix< Scalar_, Rows_, Cols_, Options_, MaxRows_, MaxCols_ >::coeffRef(), m, and Eigen::EulerAngles< Scalar_, _System >::m_angles.

◆ operator=() [2/2]

template<typename Scalar_ >
EulerAngles& EulerAngles< Scalar_ >::operator= ( const QuaternionType q)
inline
143  {
144  Matrix3 m = q.toRotationMatrix();
145  return *this = m;
146  }
Matrix< Scalar, 3, 3 > Matrix3
Definition: quaternion_demo.cpp:128

References m, and Eigen::numext::q.

◆ toRotationMatrix()

template<typename Scalar_ >
Matrix3 EulerAngles< Scalar_ >::toRotationMatrix ( void  ) const
inline
158  {
159  Vector3 c = m_angles.array().cos();
160  Vector3 s = m_angles.array().sin();
161  Matrix3 res;
162  res << c.y() * c.z(), -c.y() * s.z(), s.y(), c.z() * s.x() * s.y() + c.x() * s.z(),
163  c.x() * c.z() - s.x() * s.y() * s.z(), -c.y() * s.x(), -c.x() * c.z() * s.y() + s.x() * s.z(),
164  c.z() * s.x() + c.x() * s.y() * s.z(), c.x() * c.y();
165  return res;
166  }
cout<< "Here is the matrix m:"<< endl<< m<< endl;Matrix< ptrdiff_t, 3, 1 > res
Definition: PartialRedux_count.cpp:3
Matrix< Scalar, 3, 1 > Vector3
Definition: quaternion_demo.cpp:129
RealScalar s
Definition: level1_cplx_impl.h:130
int c
Definition: calibrate.py:100

References calibrate::c, Eigen::EulerAngles< Scalar_, _System >::m_angles, res, and s.

Member Data Documentation

◆ m_angles

template<typename Scalar_ >
Vector3 EulerAngles< Scalar_ >::m_angles
protected

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