Go to the documentation of this file.
10 #ifndef EIGEN_EULERANGLESCLASS_H// TODO: Fix previous "EIGEN_EULERANGLES_H" definition?
11 #define EIGEN_EULERANGLESCLASS_H
110 template <
typename _Scalar,
class _System>
127 const Vector3& u = Vector3::Unit(System::AlphaAxisAbs - 1);
128 return System::IsAlphaOpposite ? -u : u;
133 const Vector3& u = Vector3::Unit(System::BetaAxisAbs - 1);
134 return System::IsBetaOpposite ? -u : u;
139 const Vector3& u = Vector3::Unit(System::GammaAxisAbs - 1);
140 return System::IsGammaOpposite ? -u : u;
157 template<
typename Derived>
171 template<
typename Derived>
174 bool positiveRangeAlpha,
175 bool positiveRangeBeta,
176 bool positiveRangeGamma) {
178 System::CalcEulerAngles(*
this, m, positiveRangeAlpha, positiveRangeBeta, positiveRangeGamma);
187 template<
typename Derived>
201 template<
typename Derived>
204 bool positiveRangeAlpha,
205 bool positiveRangeBeta,
206 bool positiveRangeGamma) {
208 System::CalcEulerAngles(*
this,
rot.toRotationMatrix(), positiveRangeAlpha, positiveRangeBeta, positiveRangeGamma);
261 bool PositiveRangeAlpha,
262 bool PositiveRangeBeta,
263 bool PositiveRangeGamma,
270 System::template CalcEulerAngles<
271 PositiveRangeAlpha, PositiveRangeBeta, PositiveRangeGamma, _Scalar>(e, m);
287 bool PositiveRangeAlpha,
288 bool PositiveRangeBeta,
289 bool PositiveRangeGamma,
293 return FromRotation<PositiveRangeAlpha, PositiveRangeBeta, PositiveRangeGamma>(
rot.toRotationMatrix());
311 template<
typename Derived>
315 System::CalcEulerAngles(*
this, m);
322 template<
typename Derived>
324 System::CalcEulerAngles(*
this,
rot.toRotationMatrix());
347 s << eulerAngles.
angles().transpose();
352 #define EIGEN_EULER_ANGLES_SINGLE_TYPEDEF(AXES, SCALAR_TYPE, SCALAR_POSTFIX) \
354 typedef EulerAngles<SCALAR_TYPE, EulerSystem##AXES> EulerAngles##AXES##SCALAR_POSTFIX;
356 #define EIGEN_EULER_ANGLES_TYPEDEFS(SCALAR_TYPE, SCALAR_POSTFIX) \
357 EIGEN_EULER_ANGLES_SINGLE_TYPEDEF(XYZ, SCALAR_TYPE, SCALAR_POSTFIX) \
358 EIGEN_EULER_ANGLES_SINGLE_TYPEDEF(XYX, SCALAR_TYPE, SCALAR_POSTFIX) \
359 EIGEN_EULER_ANGLES_SINGLE_TYPEDEF(XZY, SCALAR_TYPE, SCALAR_POSTFIX) \
360 EIGEN_EULER_ANGLES_SINGLE_TYPEDEF(XZX, SCALAR_TYPE, SCALAR_POSTFIX) \
362 EIGEN_EULER_ANGLES_SINGLE_TYPEDEF(YZX, SCALAR_TYPE, SCALAR_POSTFIX) \
363 EIGEN_EULER_ANGLES_SINGLE_TYPEDEF(YZY, SCALAR_TYPE, SCALAR_POSTFIX) \
364 EIGEN_EULER_ANGLES_SINGLE_TYPEDEF(YXZ, SCALAR_TYPE, SCALAR_POSTFIX) \
365 EIGEN_EULER_ANGLES_SINGLE_TYPEDEF(YXY, SCALAR_TYPE, SCALAR_POSTFIX) \
367 EIGEN_EULER_ANGLES_SINGLE_TYPEDEF(ZXY, SCALAR_TYPE, SCALAR_POSTFIX) \
368 EIGEN_EULER_ANGLES_SINGLE_TYPEDEF(ZXZ, SCALAR_TYPE, SCALAR_POSTFIX) \
369 EIGEN_EULER_ANGLES_SINGLE_TYPEDEF(ZYX, SCALAR_TYPE, SCALAR_POSTFIX) \
370 EIGEN_EULER_ANGLES_SINGLE_TYPEDEF(ZYZ, SCALAR_TYPE, SCALAR_POSTFIX)
377 template<
typename _Scalar,
class _System>
386 #endif // EIGEN_EULERANGLESCLASS_H
Represents a rotation in a 3 dimensional space as three Euler angles.
EulerAngles & operator=(const MatrixBase< Derived > &m)
Matrix< Scalar, 3, 3 > Matrix3
EulerAngles(const RotationBase< Derived, 3 > &rot, bool positiveRangeAlpha, bool positiveRangeBeta, bool positiveRangeGamma)
Matrix3 toRotationMatrix() const
EulerAngles inverse() const
EulerAngles(const MatrixBase< Derived > &m, bool positiveRangeAlpha, bool positiveRangeBeta, bool positiveRangeGamma)
#define EIGEN_STATIC_ASSERT_MATRIX_SPECIFIC_SIZE(TYPE, ROWS, COLS)
Represents a 3D rotation as a rotation angle around an arbitrary 3D axis.
EulerAngles(const MatrixBase< Derived > &m)
Quaternion< Scalar > QuaternionType
static Vector3 AlphaAxisVector()
EulerAngles & operator=(const RotationBase< Derived, 3 > &rot)
int EIGEN_BLAS_FUNC() rot(int *n, RealScalar *px, int *incx, RealScalar *py, int *incy, RealScalar *pc, RealScalar *ps)
EulerAngles(const Scalar &alpha, const Scalar &beta, const Scalar &gamma)
static Vector3 GammaAxisVector()
Matrix< Scalar, 3, 1 > Vector3
friend std::ostream & operator<<(std::ostream &s, const EulerAngles< Scalar, System > &eulerAngles)
Common base class for compact rotation representations.
const Vector3 & angles() const
static Vector3 BetaAxisVector()
static EulerAngles FromRotation(const RotationBase< Derived, 3 > &rot)
EulerAngles operator-() const
The quaternion class used to represent 3D orientations and rotations.
#define EIGEN_EULER_ANGLES_TYPEDEFS(SCALAR_TYPE, SCALAR_POSTFIX)
AngleAxis< Scalar > AngleAxisType
EulerAngles(const RotationBase< Derived, 3 > &rot)
The matrix class, also used for vectors and row-vectors.
Base class for all dense matrices, vectors, and expressions.
static EulerAngles FromRotation(const MatrixBase< Derived > &m)
control_box_rst
Author(s): Christoph Rösmann
autogenerated on Wed Mar 2 2022 00:05:45