10 #ifndef EIGEN_EULERANGLESCLASS_H // TODO: Fix previous "EIGEN_EULERANGLES_H" definition? 11 #define EIGEN_EULERANGLESCLASS_H 14 #include "./InternalHeaderCheck.h" 102 template <
typename Scalar_,
class _System>
121 const Vector3& u = Vector3::Unit(System::AlphaAxisAbs - 1);
122 return System::IsAlphaOpposite ? -u : u;
127 const Vector3& u = Vector3::Unit(System::BetaAxisAbs - 1);
128 return System::IsBetaOpposite ? -u : u;
133 const Vector3& u = Vector3::Unit(System::GammaAxisAbs - 1);
134 return System::IsGammaOpposite ? -u : u;
162 template <
typename Derived>
178 template <
typename Derived>
222 res.m_angles = -m_angles;
238 template <
class Derived>
241 (internal::is_same<Scalar, typename Derived::Scalar>::value),
242 YOU_MIXED_DIFFERENT_NUMERIC_TYPES__YOU_NEED_TO_USE_THE_CAST_METHOD_OF_MATRIXBASE_TO_CAST_NUMERIC_TYPES_EXPLICITLY)
244 internal::eulerangles_assign_impl<System, Derived>::run(*
this, other.
derived());
255 template <
typename Derived>
281 friend std::ostream& operator<<(std::ostream& s, const EulerAngles<Scalar, System>&
eulerAngles) {
287 template <
typename NewScalarType>
295 #define EIGEN_EULER_ANGLES_SINGLE_TYPEDEF(AXES, SCALAR_TYPE, SCALAR_POSTFIX) \ 297 typedef EulerAngles<SCALAR_TYPE, EulerSystem##AXES> EulerAngles##AXES##SCALAR_POSTFIX; 299 #define EIGEN_EULER_ANGLES_TYPEDEFS(SCALAR_TYPE, SCALAR_POSTFIX) \ 300 EIGEN_EULER_ANGLES_SINGLE_TYPEDEF(XYZ, SCALAR_TYPE, SCALAR_POSTFIX) \ 301 EIGEN_EULER_ANGLES_SINGLE_TYPEDEF(XYX, SCALAR_TYPE, SCALAR_POSTFIX) \ 302 EIGEN_EULER_ANGLES_SINGLE_TYPEDEF(XZY, SCALAR_TYPE, SCALAR_POSTFIX) \ 303 EIGEN_EULER_ANGLES_SINGLE_TYPEDEF(XZX, SCALAR_TYPE, SCALAR_POSTFIX) \ 305 EIGEN_EULER_ANGLES_SINGLE_TYPEDEF(YZX, SCALAR_TYPE, SCALAR_POSTFIX) \ 306 EIGEN_EULER_ANGLES_SINGLE_TYPEDEF(YZY, SCALAR_TYPE, SCALAR_POSTFIX) \ 307 EIGEN_EULER_ANGLES_SINGLE_TYPEDEF(YXZ, SCALAR_TYPE, SCALAR_POSTFIX) \ 308 EIGEN_EULER_ANGLES_SINGLE_TYPEDEF(YXY, SCALAR_TYPE, SCALAR_POSTFIX) \ 310 EIGEN_EULER_ANGLES_SINGLE_TYPEDEF(ZXY, SCALAR_TYPE, SCALAR_POSTFIX) \ 311 EIGEN_EULER_ANGLES_SINGLE_TYPEDEF(ZXZ, SCALAR_TYPE, SCALAR_POSTFIX) \ 312 EIGEN_EULER_ANGLES_SINGLE_TYPEDEF(ZYX, SCALAR_TYPE, SCALAR_POSTFIX) \ 313 EIGEN_EULER_ANGLES_SINGLE_TYPEDEF(ZYZ, SCALAR_TYPE, SCALAR_POSTFIX) 315 EIGEN_EULER_ANGLES_TYPEDEFS(
float, f)
316 EIGEN_EULER_ANGLES_TYPEDEFS(
double, d)
329 template <
typename Scalar_,
class _System>
331 typedef Scalar_ Scalar;
335 template <
class System,
class Other>
336 struct eulerangles_assign_impl<System, Other, 3, 3> {
337 typedef typename Other::Scalar Scalar;
342 template <
class System,
class Other>
343 struct eulerangles_assign_impl<System, Other, 3, 1> {
344 typedef typename Other::Scalar Scalar;
350 #endif // EIGEN_EULERANGLESCLASS_H EulerAngles & operator=(const MatrixBase< Derived > &other)
Definition: EulerAngles.h:239
static Vector3 BetaAxisVector()
Definition: EulerAngles.h:126
Scalar gamma() const
Definition: EulerAngles.h:213
Matrix< Scalar, 3, 1 > Vector3
Definition: EulerAngles.h:115
static Vector3 AlphaAxisVector()
Definition: EulerAngles.h:120
Scalar beta() const
Definition: EulerAngles.h:208
AngleAxis< Scalar > AngleAxisType
Definition: EulerAngles.h:117
Scalar & alpha()
Definition: EulerAngles.h:205
Scalar alpha() const
Definition: EulerAngles.h:203
Namespace containing all symbols from the Eigen library.
EulerAngles operator-() const
Definition: EulerAngles.h:229
Matrix< Scalar, 3, 1 > eulerAngles(Index a0, Index a1, Index a2) const
constexpr const Derived & derived() const
EulerAngles inverse() const
Definition: EulerAngles.h:220
EulerAngles(const Scalar *data)
Definition: EulerAngles.h:148
Matrix< Scalar, 3, 3 > Matrix3
Definition: EulerAngles.h:114
const Vector3 & angles() const
Definition: EulerAngles.h:198
static Vector3 GammaAxisVector()
Definition: EulerAngles.h:132
EulerAngles< NewScalarType, System > cast() const
Definition: EulerAngles.h:288
Matrix3 toRotationMatrix() const
Definition: EulerAngles.h:270
Represents a rotation in a 3 dimensional space as three Euler angles.
Definition: EulerAngles.h:103
RotationMatrixType toRotationMatrix() const
Vector3 & angles()
Definition: EulerAngles.h:200
Scalar & gamma()
Definition: EulerAngles.h:215
bool isApprox(const EulerAngles &other, const RealScalar &prec=NumTraits< Scalar >::dummy_precision()) const
Definition: EulerAngles.h:265
Quaternion< Scalar > QuaternionType
Definition: EulerAngles.h:116
EulerAngles(const MatrixBase< Derived > &other)
Definition: EulerAngles.h:163
EulerAngles & operator=(const RotationBase< Derived, 3 > &rot)
Definition: EulerAngles.h:256
Scalar_ Scalar
Definition: EulerAngles.h:108
EulerAngles(const RotationBase< Derived, 3 > &rot)
Definition: EulerAngles.h:179
Scalar & beta()
Definition: EulerAngles.h:210
Matrix3 toRotationMatrix() const
_System System
Definition: EulerAngles.h:112
EulerAngles(const Scalar &alpha, const Scalar &beta, const Scalar &gamma)
Definition: EulerAngles.h:144
EulerAngles()
Definition: EulerAngles.h:142