11#ifndef EIGEN_EULERANGLESCLASS_H
12#define EIGEN_EULERANGLESCLASS_H
15#include "./InternalHeaderCheck.h"
103template <
typename Scalar_,
class _System>
163 template <
typename Derived>
179 template <
typename Derived>
228 res.m_angles = -m_angles;
246 template <
class Derived>
249 (std::is_same<Scalar, typename Derived::Scalar>::value),
250 YOU_MIXED_DIFFERENT_NUMERIC_TYPES__YOU_NEED_TO_USE_THE_CAST_METHOD_OF_MATRIXBASE_TO_CAST_NUMERIC_TYPES_EXPLICITLY)
252 internal::eulerangles_assign_impl<System, Derived>::run(*
this, other.derived());
263 template <
typename Derived>
295 template <
typename NewScalarType>
303#define EIGEN_EULER_ANGLES_SINGLE_TYPEDEF(AXES, SCALAR_TYPE, SCALAR_POSTFIX) \
305 typedef EulerAngles<SCALAR_TYPE, EulerSystem##AXES> EulerAngles##AXES##SCALAR_POSTFIX;
307#define EIGEN_EULER_ANGLES_TYPEDEFS(SCALAR_TYPE, SCALAR_POSTFIX) \
308 EIGEN_EULER_ANGLES_SINGLE_TYPEDEF(XYZ, SCALAR_TYPE, SCALAR_POSTFIX) \
309 EIGEN_EULER_ANGLES_SINGLE_TYPEDEF(XYX, SCALAR_TYPE, SCALAR_POSTFIX) \
310 EIGEN_EULER_ANGLES_SINGLE_TYPEDEF(XZY, SCALAR_TYPE, SCALAR_POSTFIX) \
311 EIGEN_EULER_ANGLES_SINGLE_TYPEDEF(XZX, SCALAR_TYPE, SCALAR_POSTFIX) \
313 EIGEN_EULER_ANGLES_SINGLE_TYPEDEF(YZX, SCALAR_TYPE, SCALAR_POSTFIX) \
314 EIGEN_EULER_ANGLES_SINGLE_TYPEDEF(YZY, SCALAR_TYPE, SCALAR_POSTFIX) \
315 EIGEN_EULER_ANGLES_SINGLE_TYPEDEF(YXZ, SCALAR_TYPE, SCALAR_POSTFIX) \
316 EIGEN_EULER_ANGLES_SINGLE_TYPEDEF(YXY, SCALAR_TYPE, SCALAR_POSTFIX) \
318 EIGEN_EULER_ANGLES_SINGLE_TYPEDEF(ZXY, SCALAR_TYPE, SCALAR_POSTFIX) \
319 EIGEN_EULER_ANGLES_SINGLE_TYPEDEF(ZXZ, SCALAR_TYPE, SCALAR_POSTFIX) \
320 EIGEN_EULER_ANGLES_SINGLE_TYPEDEF(ZYX, SCALAR_TYPE, SCALAR_POSTFIX) \
321 EIGEN_EULER_ANGLES_SINGLE_TYPEDEF(ZYZ, SCALAR_TYPE, SCALAR_POSTFIX)
323EIGEN_EULER_ANGLES_TYPEDEFS(
float, f)
324EIGEN_EULER_ANGLES_TYPEDEFS(
double, d)
326#undef EIGEN_EULER_ANGLES_TYPEDEFS
327#undef EIGEN_EULER_ANGLES_SINGLE_TYPEDEF
340template <
typename Scalar_,
class _System>
342 typedef Scalar_ Scalar;
346template <
class System,
class Other>
347struct eulerangles_assign_impl<System, Other, 3, 3> {
348 typedef typename Other::Scalar Scalar;
353template <
class System,
class Other>
354struct eulerangles_assign_impl<System, Other, 3, 1> {
355 typedef typename Other::Scalar Scalar;
Represents a rotation in a 3 dimensional space as three Euler angles.
Definition EulerAngles.h:104
Scalar & gamma()
Definition EulerAngles.h:216
_System System
Definition EulerAngles.h:113
Scalar & alpha()
Definition EulerAngles.h:206
static Vector3 GammaAxisVector()
Definition EulerAngles.h:133
Scalar alpha() const
Definition EulerAngles.h:204
static Vector3 AlphaAxisVector()
Definition EulerAngles.h:121
Vector3 & angles()
Definition EulerAngles.h:201
Quaternion< Scalar > QuaternionType
Definition EulerAngles.h:117
const Vector3 & angles() const
Definition EulerAngles.h:199
EulerAngles(const Scalar &alpha, const Scalar &beta, const Scalar &gamma)
Definition EulerAngles.h:145
EulerAngles(const Scalar *data)
Definition EulerAngles.h:149
EulerAngles< NewScalarType, System > cast() const
Definition EulerAngles.h:296
AngleAxis< Scalar > AngleAxisType
Definition EulerAngles.h:118
Matrix3 toRotationMatrix() const
Definition EulerAngles.h:278
EulerAngles & operator=(const MatrixBase< Derived > &other)
Definition EulerAngles.h:247
Scalar gamma() const
Definition EulerAngles.h:214
Scalar_ Scalar
Definition EulerAngles.h:109
Scalar & beta()
Definition EulerAngles.h:211
static Vector3 BetaAxisVector()
Definition EulerAngles.h:127
Scalar beta() const
Definition EulerAngles.h:209
EulerAngles inverse() const
Definition EulerAngles.h:226
EulerAngles(const MatrixBase< Derived > &other)
Definition EulerAngles.h:164
EulerAngles operator-() const
Definition EulerAngles.h:237
Matrix< Scalar, 3, 3 > Matrix3
Definition EulerAngles.h:115
EulerAngles(const RotationBase< Derived, 3 > &rot)
Definition EulerAngles.h:180
EulerAngles & operator=(const RotationBase< Derived, 3 > &rot)
Definition EulerAngles.h:264
bool isApprox(const EulerAngles &other, const RealScalar &prec=NumTraits< Scalar >::dummy_precision()) const
Definition EulerAngles.h:273
EulerAngles()
Definition EulerAngles.h:143
Matrix< Scalar, 3, 1 > Vector3
Definition EulerAngles.h:116
@ GammaAxisAbs
Definition EulerSystem.h:132
@ IsGammaOpposite
Definition EulerSystem.h:136
@ IsAlphaOpposite
Definition EulerSystem.h:134
@ AlphaAxisAbs
Definition EulerSystem.h:130
@ BetaAxisAbs
Definition EulerSystem.h:131
@ IsBetaOpposite
Definition EulerSystem.h:135
RotationMatrixType toRotationMatrix() const
Matrix< Scalar, 3, 1 > eulerAngles(Index a0, Index a1, Index a2) const
Matrix< Type, 3, 1 > Vector3
Namespace containing all symbols from the Eigen library.