10#ifndef EIGEN_EULERANGLESCLASS_H
11#define EIGEN_EULERANGLESCLASS_H
99 template <
typename _Scalar,
class _System>
119 const Vector3& u = Vector3::Unit(System::AlphaAxisAbs - 1);
120 return System::IsAlphaOpposite ? -u : u;
125 const Vector3& u = Vector3::Unit(System::BetaAxisAbs - 1);
126 return System::IsBetaOpposite ? -u : u;
131 const Vector3& u = Vector3::Unit(System::GammaAxisAbs - 1);
132 return System::IsGammaOpposite ? -u : u;
161 template<
typename Derived>
175 template<
typename Derived>
218 res.m_angles = -m_angles;
237 template<
class Derived>
241 YOU_MIXED_DIFFERENT_NUMERIC_TYPES__YOU_NEED_TO_USE_THE_CAST_METHOD_OF_MATRIXBASE_TO_CAST_NUMERIC_TYPES_EXPLICITLY)
254 template<
typename Derived>
256 System::CalcEulerAngles(*
this,
rot.toRotationMatrix());
286 s << eulerAngles.
angles().transpose();
291 template <
typename NewScalarType>
300#define EIGEN_EULER_ANGLES_SINGLE_TYPEDEF(AXES, SCALAR_TYPE, SCALAR_POSTFIX) \
302 typedef EulerAngles<SCALAR_TYPE, EulerSystem##AXES> EulerAngles##AXES##SCALAR_POSTFIX;
304#define EIGEN_EULER_ANGLES_TYPEDEFS(SCALAR_TYPE, SCALAR_POSTFIX) \
305 EIGEN_EULER_ANGLES_SINGLE_TYPEDEF(XYZ, SCALAR_TYPE, SCALAR_POSTFIX) \
306 EIGEN_EULER_ANGLES_SINGLE_TYPEDEF(XYX, SCALAR_TYPE, SCALAR_POSTFIX) \
307 EIGEN_EULER_ANGLES_SINGLE_TYPEDEF(XZY, SCALAR_TYPE, SCALAR_POSTFIX) \
308 EIGEN_EULER_ANGLES_SINGLE_TYPEDEF(XZX, SCALAR_TYPE, SCALAR_POSTFIX) \
310 EIGEN_EULER_ANGLES_SINGLE_TYPEDEF(YZX, SCALAR_TYPE, SCALAR_POSTFIX) \
311 EIGEN_EULER_ANGLES_SINGLE_TYPEDEF(YZY, SCALAR_TYPE, SCALAR_POSTFIX) \
312 EIGEN_EULER_ANGLES_SINGLE_TYPEDEF(YXZ, SCALAR_TYPE, SCALAR_POSTFIX) \
313 EIGEN_EULER_ANGLES_SINGLE_TYPEDEF(YXY, SCALAR_TYPE, SCALAR_POSTFIX) \
315 EIGEN_EULER_ANGLES_SINGLE_TYPEDEF(ZXY, SCALAR_TYPE, SCALAR_POSTFIX) \
316 EIGEN_EULER_ANGLES_SINGLE_TYPEDEF(ZXZ, SCALAR_TYPE, SCALAR_POSTFIX) \
317 EIGEN_EULER_ANGLES_SINGLE_TYPEDEF(ZYX, SCALAR_TYPE, SCALAR_POSTFIX) \
318 EIGEN_EULER_ANGLES_SINGLE_TYPEDEF(ZYZ, SCALAR_TYPE, SCALAR_POSTFIX)
325 template<
typename _Scalar,
class _System>
332 template<
class System,
class Other>
338 System::CalcEulerAngles(
e,
m);
343 template<
class System,
class Other>
Matrix3f m
Definition AngleAxis_mimic_euler.cpp:1
Array< double, 1, 3 > e(1./3., 0.5, 2.)
int data[]
Definition Map_placement_new.cpp:1
cout<< "Here is the matrix m:"<< endl<< m<< endl;Matrix< ptrdiff_t, 3, 1 > res
Definition PartialRedux_count.cpp:3
#define EIGEN_STATIC_ASSERT(CONDITION, MSG)
Definition StaticAssert.h:127
Represents a 3D rotation as a rotation angle around an arbitrary 3D axis.
Definition AngleAxis.h:50
Represents a rotation in a 3 dimensional space as three Euler angles.
Definition EulerAngles.h:101
RotationBase< EulerAngles< _Scalar, _System >, 3 > Base
Definition EulerAngles.h:103
Vector3 & angles()
Definition EulerAngles.h:195
AngleAxis< Scalar > AngleAxisType
Definition EulerAngles.h:115
Matrix3 toRotationMatrix() const
Definition EulerAngles.h:269
_System System
Definition EulerAngles.h:110
Scalar beta() const
Definition EulerAngles.h:203
EulerAngles inverse() const
Definition EulerAngles.h:215
EulerAngles(const RotationBase< Derived, 3 > &rot)
Definition EulerAngles.h:176
friend std::ostream & operator<<(std::ostream &s, const EulerAngles< Scalar, System > &eulerAngles)
Definition EulerAngles.h:284
EulerAngles operator-() const
Definition EulerAngles.h:225
_Scalar Scalar
Definition EulerAngles.h:106
static Vector3 AlphaAxisVector()
Definition EulerAngles.h:118
EulerAngles()
Definition EulerAngles.h:140
EulerAngles & operator=(const RotationBase< Derived, 3 > &rot)
Definition EulerAngles.h:255
EulerAngles(const Scalar *data)
Definition EulerAngles.h:147
Scalar alpha() const
Definition EulerAngles.h:198
EulerAngles(const Scalar &alpha, const Scalar &beta, const Scalar &gamma)
Definition EulerAngles.h:142
const Vector3 & angles() const
Definition EulerAngles.h:193
static Vector3 GammaAxisVector()
Definition EulerAngles.h:130
bool isApprox(const EulerAngles &other, const RealScalar &prec=NumTraits< Scalar >::dummy_precision()) const
Definition EulerAngles.h:264
EulerAngles< NewScalarType, System > cast() const
Definition EulerAngles.h:292
Scalar gamma() const
Definition EulerAngles.h:208
EulerAngles(const MatrixBase< Derived > &other)
Definition EulerAngles.h:162
Scalar & gamma()
Definition EulerAngles.h:210
NumTraits< Scalar >::Real RealScalar
Definition EulerAngles.h:107
Matrix< Scalar, 3, 3 > Matrix3
Definition EulerAngles.h:112
EulerAngles & operator=(const MatrixBase< Derived > &other)
Definition EulerAngles.h:238
Quaternion< Scalar > QuaternionType
Definition EulerAngles.h:114
Scalar & alpha()
Definition EulerAngles.h:200
Scalar & beta()
Definition EulerAngles.h:205
static Vector3 BetaAxisVector()
Definition EulerAngles.h:124
Matrix< Scalar, 3, 1 > Vector3
Definition EulerAngles.h:113
Base class for all dense matrices, vectors, and expressions.
Definition MatrixBase.h:50
The matrix class, also used for vectors and row-vectors.
Definition Matrix.h:180
EIGEN_DEVICE_FUNC Matrix3 toRotationMatrix() const
Definition Quaternion.h:592
The quaternion class used to represent 3D orientations and rotations.
Definition Quaternion.h:274
Common base class for compact rotation representations.
Definition RotationBase.h:30
RealScalar s
Definition level1_cplx_impl.h:126
int EIGEN_BLAS_FUNC() rot(int *n, RealScalar *px, int *incx, RealScalar *py, int *incy, RealScalar *pc, RealScalar *ps)
Definition level1_real_impl.h:79
Namespace containing all symbols from the Eigen library.
Definition bench_norm.cpp:85
Definition BandTriangularSolver.h:13
Holds information about the various numeric (i.e. scalar) types allowed by Eigen.
Definition NumTraits.h:233
Other::Scalar Scalar
Definition EulerAngles.h:346
static void run(EulerAngles< Scalar, System > &e, const Other &vec)
Definition EulerAngles.h:347
Other::Scalar Scalar
Definition EulerAngles.h:335
static void run(EulerAngles< Scalar, System > &e, const Other &m)
Definition EulerAngles.h:336
Definition EulerSystem.h:44
_Scalar Scalar
Definition EulerAngles.h:328
Definition ForwardDeclarations.h:17
#define EIGEN_EULER_ANGLES_TYPEDEFS(SCALAR_TYPE, SCALAR_POSTFIX)
Definition EulerAngles.h:304