mf
Media Framework
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
eigen.h
Go to the documentation of this file.
1 #ifndef MF_EIGEN_H_
2 #define MF_EIGEN_H_
3 
4 #pragma GCC diagnostic push
5 #pragma GCC diagnostic ignored "-Wdeprecated-register"
6 // Eigen uses C++14 deprecated 'register' keyword
7 
8 #include <Eigen/Eigen>
9 #include <Eigen/Geometry>
10 
11 #pragma GCC diagnostic pop
12 
13 #include "common.h"
14 #include "elem.h"
15 
16 namespace mf {
17 
20 
21 template<std::size_t Rows, std::size_t Cols>
22 using Eigen_mat = Eigen::Matrix<Eigen_scalar, Rows, Cols>;
23 
27 
31 
32 using Eigen_translation2 = Eigen::Translation<Eigen_scalar, 2>;
33 using Eigen_translation3 = Eigen::Translation<Eigen_scalar, 3>;
34 using Eigen_angleaxis = Eigen::AngleAxis<Eigen_scalar>;
35 
36 using Eigen_affine2 = Eigen::Transform<Eigen_scalar, 2, Eigen::Affine>;
37 using Eigen_affine3 = Eigen::Transform<Eigen_scalar, 3, Eigen::Affine>;
38 
39 using Eigen_projective2 = Eigen::Transform<Eigen_scalar, 2, Eigen::Projective>;
40 using Eigen_projective3 = Eigen::Transform<Eigen_scalar, 3, Eigen::Projective>;
41 
42 using Eigen_hyperplane2 = Eigen::Hyperplane<Eigen_scalar, 2>;
43 using Eigen_hyperplane3 = Eigen::Hyperplane<Eigen_scalar, 3>;
44 
45 using Eigen_quaternion = Eigen::Quaternion<Eigen_scalar>;
46 
47 
49 
50 template<typename Scalar, std::size_t Rows, std::size_t Columns>
51 struct elem_traits<Eigen::Matrix<Scalar, Rows, Columns>> :
53  Eigen::Matrix<Scalar, Rows, Columns>,
54  Scalar,
55  Rows * Columns,
56  false
57  > { };
58 
59 
60 }
61 
62 #endif
Eigen::Transform< Eigen_scalar, 2, Eigen::Affine > Eigen_affine2
Definition: eigen.h:36
float real
Real number type.
Definition: common.h:48
Eigen_mat< 2, 2 > Eigen_mat2
Definition: eigen.h:28
Eigen_mat< 3, 3 > Eigen_mat3
Definition: eigen.h:29
real Eigen_scalar
Floating point type used for Eigen objects.
Definition: eigen.h:19
Eigen::AngleAxis< Eigen_scalar > Eigen_angleaxis
Definition: eigen.h:34
Eigen_mat< 2, 1 > Eigen_vec2
Definition: eigen.h:24
Eigen::Transform< Eigen_scalar, 3, Eigen::Affine > Eigen_affine3
Definition: eigen.h:37
Eigen::Transform< Eigen_scalar, 2, Eigen::Projective > Eigen_projective2
Definition: eigen.h:39
Elem traits base class with the required members.
Definition: elem.h:14
Eigen::Quaternion< Eigen_scalar > Eigen_quaternion
Definition: eigen.h:45
Eigen::Matrix< Eigen_scalar, Rows, Cols > Eigen_mat
Definition: eigen.h:22
Eigen::Transform< Eigen_scalar, 3, Eigen::Projective > Eigen_projective3
Definition: eigen.h:40
Eigen::Translation< Eigen_scalar, 3 > Eigen_translation3
Definition: eigen.h:33
Default elem traits, using Elem as standard layout scalar type.
Definition: elem.h:30
Eigen::Translation< Eigen_scalar, 2 > Eigen_translation2
Definition: eigen.h:32
Eigen::Hyperplane< Eigen_scalar, 2 > Eigen_hyperplane2
Definition: eigen.h:42
Eigen::Hyperplane< Eigen_scalar, 3 > Eigen_hyperplane3
Definition: eigen.h:43
Eigen_mat< 4, 1 > Eigen_vec4
Definition: eigen.h:26
Eigen_mat< 3, 1 > Eigen_vec3
Definition: eigen.h:25
Eigen_mat< 4, 4 > Eigen_mat4
Definition: eigen.h:30