10 #ifndef EIGEN_EULERSYSTEM_H
11 #define EIGEN_EULERSYSTEM_H
18 template <
typename Scalar_,
class _System>
23 template <
int Num,
bool IsPositive = (Num > 0)>
29 struct Abs<Num, false> {
38 template <
typename System,
typename Other,
int OtherRows = Other::RowsAtCompileTime,
39 int OtherCols = Other::ColsAtCompileTime>
43 #define EIGEN_EULER_ANGLES_CLASS_STATIC_ASSERT(COND, MSG) typedef char static_assertion_##MSG[(COND) ? 1 : -1]
120 template <
int _AlphaAxis,
int _BetaAxis,
int _GammaAxis>
161 ALPHA_AXIS_CANT_BE_EQUAL_TO_BETA_AXIS);
164 BETA_AXIS_CANT_BE_EQUAL_TO_GAMMA_AXIS);
174 template <
typename Derived>
198 res[0] = alphaPlusMinusGamma;
204 res[0] = alphaMinusPlusBeta;
209 template <
typename Derived>
243 template <
typename Scalar>
247 std::conditional_t<IsTaitBryan, internal::true_type, internal::false_type>());
256 template <
typename Scalar_,
class _System>
259 template <
typename System,
typename Other,
int OtherRows,
int OtherCols>
263 #define EIGEN_EULER_SYSTEM_TYPEDEF(A, B, C) \
265 typedef EulerSystem<EULER_##A, EULER_##B, EULER_##C> EulerSystem##A##B##C;
AnnoyingScalar atan2(const AnnoyingScalar &y, const AnnoyingScalar &x)
Definition: AnnoyingScalar.h:139
AnnoyingScalar sqrt(const AnnoyingScalar &x)
Definition: AnnoyingScalar.h:134
Eigen::SparseMatrix< double > mat
Definition: EigenUnitTest.cpp:10
#define EIGEN_EULER_SYSTEM_TYPEDEF(A, B, C)
Definition: EulerSystem.h:263
cout<< "Here is the matrix m:"<< endl<< m<< endl;Matrix< ptrdiff_t, 3, 1 > res
Definition: PartialRedux_count.cpp:3
SCALAR Scalar
Definition: bench_gemm.cpp:45
Represents a rotation in a 3 dimensional space as three Euler angles.
Definition: unsupported/Eigen/src/EulerAngles/EulerAngles.h:103
Represents a fixed Euler rotation system.
Definition: EulerSystem.h:121
static constexpr int AlphaAxis
Definition: EulerSystem.h:127
static const int I_
Definition: EulerSystem.h:170
static void CalcEulerAngles(EulerAngles< Scalar, EulerSystem > &res, const typename EulerAngles< Scalar, EulerSystem >::Matrix3 &mat)
Definition: EulerSystem.h:244
static constexpr int GammaAxis
Definition: EulerSystem.h:133
EIGEN_EULER_ANGLES_CLASS_STATIC_ASSERT(internal::IsValidAxis< AlphaAxis >::value, ALPHA_AXIS_IS_INVALID)
EIGEN_EULER_ANGLES_CLASS_STATIC_ASSERT(internal::IsValidAxis< BetaAxis >::value, BETA_AXIS_IS_INVALID)
static const int J_
Definition: EulerSystem.h:171
@ GammaAxisAbs
Definition: EulerSystem.h:138
@ IsOdd
Definition: EulerSystem.h:146
@ IsGammaOpposite
Definition: EulerSystem.h:142
@ IsAlphaOpposite
Definition: EulerSystem.h:140
@ IsEven
Definition: EulerSystem.h:147
@ AlphaAxisAbs
Definition: EulerSystem.h:136
@ BetaAxisAbs
Definition: EulerSystem.h:137
@ IsTaitBryan
Definition: EulerSystem.h:149
@ IsBetaOpposite
Definition: EulerSystem.h:141
EIGEN_EULER_ANGLES_CLASS_STATIC_ASSERT((unsigned) BetaAxisAbs !=(unsigned) GammaAxisAbs, BETA_AXIS_CANT_BE_EQUAL_TO_GAMMA_AXIS)
EIGEN_EULER_ANGLES_CLASS_STATIC_ASSERT((unsigned) AlphaAxisAbs !=(unsigned) BetaAxisAbs, ALPHA_AXIS_CANT_BE_EQUAL_TO_BETA_AXIS)
static void CalcEulerAngles_imp(Matrix< typename MatrixBase< Derived >::Scalar, 3, 1 > &res, const MatrixBase< Derived > &mat, internal::true_type)
Definition: EulerSystem.h:175
static void CalcEulerAngles_imp(Matrix< typename MatrixBase< Derived >::Scalar, 3, 1 > &res, const MatrixBase< Derived > &mat, internal::false_type)
Definition: EulerSystem.h:210
EIGEN_EULER_ANGLES_CLASS_STATIC_ASSERT(internal::IsValidAxis< GammaAxis >::value, GAMMA_AXIS_IS_INVALID)
static const int K_
Definition: EulerSystem.h:171
static constexpr int BetaAxis
Definition: EulerSystem.h:130
Base class for all dense matrices, vectors, and expressions.
Definition: MatrixBase.h:52
internal::traits< Derived >::Scalar Scalar
Definition: MatrixBase.h:58
The matrix class, also used for vectors and row-vectors.
Definition: Eigen/Eigen/src/Core/Matrix.h:186
Definition: quaternion_demo.cpp:124
#define X
Definition: icosphere.cpp:20
#define Z
Definition: icosphere.cpp:21
Namespace containing all symbols from the Eigen library.
Definition: bench_norm.cpp:70
AutoDiffScalar< Matrix< typename internal::traits< internal::remove_all_t< DerTypeA > >::Scalar, Dynamic, 1 > > atan2(const AutoDiffScalar< DerTypeA > &a, const AutoDiffScalar< DerTypeB > &b)
Definition: AutoDiffScalar.h:558
squared absolute value
Definition: GlobalFunctions.h:87
EulerAxis
Representation of a fixed signed rotation axis for EulerSystem.
Definition: EulerSystem.h:57
@ EULER_X
Definition: EulerSystem.h:58
@ EULER_Z
Definition: EulerSystem.h:60
@ EULER_Y
Definition: EulerSystem.h:59
void plusMinus()
Definition: skew_symmetric_matrix3.cpp:56
Definition: Eigen_Colamd.h:49
Holds information about the various numeric (i.e. scalar) types allowed by Eigen.
Definition: NumTraits.h:217
Definition: EulerSystem.h:24
@ value
Definition: EulerSystem.h:25
Definition: EulerSystem.h:34
Definition: EulerSystem.h:40
const char Y
Definition: test/EulerAngles.cpp:32