Thea
MatVec.hpp
1 //============================================================================
2 //
3 // This file is part of the Thea toolkit.
4 //
5 // This software is distributed under the BSD license, as detailed in the
6 // accompanying LICENSE.txt file. Portions are derived from other works:
7 // their respective licenses and copyright information are reproduced in
8 // LICENSE.txt and/or in the relevant source files.
9 //
10 // Author: Siddhartha Chaudhuri
11 // First version: 2019
12 //
13 //============================================================================
14 
15 #ifndef __Thea_MatVec_hpp__
16 #define __Thea_MatVec_hpp__
17 
18 #include "Common.hpp"
19 #include "MatrixFormat.hpp"
20 
21 // Resolve a conflict between X.h (which #defines Success) and Eigen (which has an enum called Success). Fortunately both
22 // headers currently assign the same value to Success (0) so the #undef should be all that's needed.
23 // https://stackoverflow.com/questions/22400905/eigen-and-cimg-compatibility-issues
24 #ifdef Success
25 # undef Success
26 #endif
27 #include <Eigen/Core>
28 #include <Eigen/Geometry> // for Quaternion, and because for some weird reason Eigen defines cross() here
29 
30 #include <complex>
31 
32 namespace Thea {
33 
34 #ifdef THEA_ROW_MAJOR
35  int const DEFAULT_MATRIX_LAYOUT = MatrixLayout::ROW_MAJOR;
36 #else // nothing provided or THEA_COLUMN_MAJOR defined
37  int const DEFAULT_MATRIX_LAYOUT = MatrixLayout::COLUMN_MAJOR;
38 #endif
39 
40 // Typedef common instantiations. These are fully instantiated and have no further template parameters.
41 // Alignment is DISABLED for fixed-size vectorizable types (Vector4f, Matrix4f, Vector2d etc). These require special handling
42 // for every class which directly or indirectly has such a member, and could lead to unexpected bugs and considerably less ease
43 // of use.
44 //
45 // See:
46 // - http://eigen.tuxfamily.org/dox/group__TopicStructHavingEigenMembers.html
47 // - https://eigen.tuxfamily.org/dox/group__TopicStlContainers.html
48 // - http://eigen.tuxfamily.org/dox/group__TopicFixedSizeVectorizable.html
49 // - https://stackoverflow.com/q/41087043
50 //
51 #define THEA_DECL_MATRIX_TYPEDEFS(scalar, suffix) \
52  typedef Eigen::Matrix< scalar, 2, 2, DEFAULT_MATRIX_LAYOUT | Eigen::DontAlign > Matrix2 ## suffix; \
53  typedef Eigen::Matrix< scalar, 3, 3, DEFAULT_MATRIX_LAYOUT | Eigen::DontAlign > Matrix3 ## suffix; \
54  typedef Eigen::Matrix< scalar, 4, 4, DEFAULT_MATRIX_LAYOUT | Eigen::DontAlign > Matrix4 ## suffix; \
55  typedef Eigen::Matrix< scalar, 2, 1, MatrixLayout::COLUMN_MAJOR | Eigen::DontAlign > Vector2 ## suffix; \
56  typedef Eigen::Matrix< scalar, 3, 1, MatrixLayout::COLUMN_MAJOR | Eigen::DontAlign > Vector3 ## suffix; \
57  typedef Eigen::Matrix< scalar, 4, 1, MatrixLayout::COLUMN_MAJOR | Eigen::DontAlign > Vector4 ## suffix; \
58  typedef Eigen::Matrix< scalar, 1, 2, MatrixLayout::ROW_MAJOR | Eigen::DontAlign > RowVector2 ## suffix; \
59  typedef Eigen::Matrix< scalar, 1, 3, MatrixLayout::ROW_MAJOR | Eigen::DontAlign > RowVector3 ## suffix; \
60  typedef Eigen::Matrix< scalar, 1, 4, MatrixLayout::ROW_MAJOR | Eigen::DontAlign > RowVector4 ## suffix; \
61  typedef Eigen::Matrix< scalar, 2, Eigen::Dynamic, DEFAULT_MATRIX_LAYOUT > Matrix2X ## suffix; \
62  typedef Eigen::Matrix< scalar, 3, Eigen::Dynamic, DEFAULT_MATRIX_LAYOUT > Matrix3X ## suffix; \
63  typedef Eigen::Matrix< scalar, 4, Eigen::Dynamic, DEFAULT_MATRIX_LAYOUT > Matrix4X ## suffix; \
64  typedef Eigen::Matrix< scalar, Eigen::Dynamic, 2, DEFAULT_MATRIX_LAYOUT > MatrixX2 ## suffix; \
65  typedef Eigen::Matrix< scalar, Eigen::Dynamic, 3, DEFAULT_MATRIX_LAYOUT > MatrixX3 ## suffix; \
66  typedef Eigen::Matrix< scalar, Eigen::Dynamic, 4, DEFAULT_MATRIX_LAYOUT > MatrixX4 ## suffix;
67 
68 THEA_DECL_MATRIX_TYPEDEFS(Real, )
69 THEA_DECL_MATRIX_TYPEDEFS(float, f)
70 THEA_DECL_MATRIX_TYPEDEFS(double, d)
71 THEA_DECL_MATRIX_TYPEDEFS(std::complex<float>, cf)
72 THEA_DECL_MATRIX_TYPEDEFS(std::complex<double>, cd)
73 THEA_DECL_MATRIX_TYPEDEFS(int, i)
74 
75 #undef THEA_DECL_MATRIX_TYPEDEFS
76 
77 // Typedef additional instantiations of fully resizable matrices, NOT including the "plain X" versions which will be declared
78 // below with (fully optional) template arguments to avoid having to repeatedly type
79 // <code>Matrix<Eigen::Dynamic, Eigen::Dynamic, T></code> in templated code.
80 #define THEA_DECL_RESIZABLE_MATRIX_TYPEDEFS(scalar, suffix) \
81  typedef Eigen::Matrix< scalar, Eigen::Dynamic, Eigen::Dynamic, DEFAULT_MATRIX_LAYOUT > MatrixX ## suffix; \
82  typedef Eigen::Matrix< scalar, Eigen::Dynamic, 1 , MatrixLayout::COLUMN_MAJOR > VectorX ## suffix; \
83  typedef Eigen::Matrix< scalar, 1, Eigen::Dynamic, MatrixLayout::ROW_MAJOR > RowVectorX ## suffix;
84 
85 THEA_DECL_RESIZABLE_MATRIX_TYPEDEFS(float, f)
86 THEA_DECL_RESIZABLE_MATRIX_TYPEDEFS(double, d)
87 THEA_DECL_RESIZABLE_MATRIX_TYPEDEFS(std::complex<float>, cf)
88 THEA_DECL_RESIZABLE_MATRIX_TYPEDEFS(std::complex<double>, cd)
89 THEA_DECL_RESIZABLE_MATRIX_TYPEDEFS(int, i)
90 
91 #undef THEA_DECL_RESIZABLE_MATRIX_TYPEDEFS
92 
107 template <int Rows, int Cols, typename T = Real,
108  int Options = DEFAULT_MATRIX_LAYOUT,
109  int MaxRowsAtCompileTime = Rows,
110  int MaxColsAtCompileTime = Cols>
111 using Matrix = Eigen::Matrix<T, Rows, Cols,
112  Options | ((Options & Eigen::DontAlign) == 0 && (Rows == Eigen::Dynamic || Cols == Eigen::Dynamic)
113  ? Eigen::AutoAlign : Eigen::DontAlign),
114  MaxRowsAtCompileTime, MaxColsAtCompileTime>;
115 
120 template <typename T = Real,
121  int Options = DEFAULT_MATRIX_LAYOUT,
122  int MaxRowsAtCompileTime = Eigen::Dynamic,
123  int MaxColsAtCompileTime = Eigen::Dynamic>
124 using MatrixX = Eigen::Matrix<T, Eigen::Dynamic, Eigen::Dynamic, Options, MaxRowsAtCompileTime, MaxColsAtCompileTime>;
125 
140 template <int Size, typename T = Real,
141  int Options = MatrixLayout::COLUMN_MAJOR,
142  int MaxRowsAtCompileTime = Size>
143 using Vector = Eigen::Matrix<T, Size, 1,
144  Options | ((Options & Eigen::DontAlign) == 0 && Size == Eigen::Dynamic
145  ? Eigen::AutoAlign : Eigen::DontAlign),
146  MaxRowsAtCompileTime, 1>;
147 
152 template <typename T = Real,
153  int Options = MatrixLayout::COLUMN_MAJOR,
154  int MaxRowsAtCompileTime = Eigen::Dynamic>
155 using VectorX = Eigen::Matrix<T, Eigen::Dynamic, 1, Options, MaxRowsAtCompileTime, 1>;
156 
171 template <int Size, typename T = Real,
172  int Options = MatrixLayout::ROW_MAJOR,
173  int MaxColsAtCompileTime = Size>
174 using RowVector = Eigen::Matrix<T, 1, Size,
175  Options | ((Options & Eigen::DontAlign) == 0 && Size == Eigen::Dynamic
176  ? Eigen::AutoAlign : Eigen::DontAlign),
177  1, MaxColsAtCompileTime>;
178 
183 template <typename T = Real,
184  int Options = MatrixLayout::ROW_MAJOR,
185  int MaxColsAtCompileTime = Eigen::Dynamic>
186 using RowVectorX = Eigen::Matrix<T, 1, Eigen::Dynamic, Options, 1, MaxColsAtCompileTime>;
187 
188 //=============================================================================================================================
189 // Typedef Eigen::Map wrappers for interpreting raw data as common Eigen types.
190 //=============================================================================================================================
191 
192 #define THEA_DECL_MATRIX_MAP_TYPEDEFS(suffix) \
193  typedef Eigen::Map< Matrix2 ## suffix > Matrix2 ## suffix ## Map; \
194  typedef Eigen::Map< Matrix3 ## suffix > Matrix3 ## suffix ## Map; \
195  typedef Eigen::Map< Matrix4 ## suffix > Matrix4 ## suffix ## Map; \
196  typedef Eigen::Map< Vector2 ## suffix > Vector2 ## suffix ## Map; \
197  typedef Eigen::Map< Vector3 ## suffix > Vector3 ## suffix ## Map; \
198  typedef Eigen::Map< Vector4 ## suffix > Vector4 ## suffix ## Map; \
199  typedef Eigen::Map< RowVector2 ## suffix > RowVector2 ## suffix ## Map; \
200  typedef Eigen::Map< RowVector3 ## suffix > RowVector3 ## suffix ## Map; \
201  typedef Eigen::Map< RowVector4 ## suffix > RowVector4 ## suffix ## Map; \
202  typedef Eigen::Map< Matrix2X ## suffix > Matrix2X ## suffix ## Map; \
203  typedef Eigen::Map< Matrix3X ## suffix > Matrix3X ## suffix ## Map; \
204  typedef Eigen::Map< Matrix4X ## suffix > Matrix4X ## suffix ## Map; \
205  typedef Eigen::Map< MatrixX2 ## suffix > MatrixX2 ## suffix ## Map; \
206  typedef Eigen::Map< MatrixX3 ## suffix > MatrixX3 ## suffix ## Map; \
207  typedef Eigen::Map< MatrixX4 ## suffix > MatrixX4 ## suffix ## Map; \
208  \
209  typedef Eigen::Map< Matrix2 ## suffix const > Matrix2 ## suffix ## ConstMap; \
210  typedef Eigen::Map< Matrix3 ## suffix const > Matrix3 ## suffix ## ConstMap; \
211  typedef Eigen::Map< Matrix4 ## suffix const > Matrix4 ## suffix ## ConstMap; \
212  typedef Eigen::Map< Vector2 ## suffix const > Vector2 ## suffix ## ConstMap; \
213  typedef Eigen::Map< Vector3 ## suffix const > Vector3 ## suffix ## ConstMap; \
214  typedef Eigen::Map< Vector4 ## suffix const > Vector4 ## suffix ## ConstMap; \
215  typedef Eigen::Map< RowVector2 ## suffix const > RowVector2 ## suffix ## ConstMap; \
216  typedef Eigen::Map< RowVector3 ## suffix const > RowVector3 ## suffix ## ConstMap; \
217  typedef Eigen::Map< RowVector4 ## suffix const > RowVector4 ## suffix ## ConstMap; \
218  typedef Eigen::Map< Matrix2X ## suffix const > Matrix2X ## suffix ## ConstMap; \
219  typedef Eigen::Map< Matrix3X ## suffix const > Matrix3X ## suffix ## ConstMap; \
220  typedef Eigen::Map< Matrix4X ## suffix const > Matrix4X ## suffix ## ConstMap; \
221  typedef Eigen::Map< MatrixX2 ## suffix const > MatrixX2 ## suffix ## ConstMap; \
222  typedef Eigen::Map< MatrixX3 ## suffix const > MatrixX3 ## suffix ## ConstMap; \
223  typedef Eigen::Map< MatrixX4 ## suffix const > MatrixX4 ## suffix ## ConstMap;
224 
225 THEA_DECL_MATRIX_MAP_TYPEDEFS()
226 THEA_DECL_MATRIX_MAP_TYPEDEFS(f)
227 THEA_DECL_MATRIX_MAP_TYPEDEFS(d)
228 THEA_DECL_MATRIX_MAP_TYPEDEFS(cf)
229 THEA_DECL_MATRIX_MAP_TYPEDEFS(cd)
230 THEA_DECL_MATRIX_MAP_TYPEDEFS(i)
231 
232 #undef THEA_DECL_MATRIX_MAP_TYPEDEFS
233 
234 #define THEA_DECL_RESIZABLE_MATRIX_MAP_TYPEDEFS(suffix) \
235  typedef Eigen::Map< MatrixX ## suffix > MatrixX ## suffix ## Map; \
236  typedef Eigen::Map< VectorX ## suffix > VectorX ## suffix ## Map; \
237  typedef Eigen::Map< RowVectorX ## suffix > RowVectorX ## suffix ## Map; \
238  \
239  typedef Eigen::Map< MatrixX ## suffix const > MatrixX ## suffix ## ConstMap; \
240  typedef Eigen::Map< VectorX ## suffix const > VectorX ## suffix ## ConstMap; \
241  typedef Eigen::Map< RowVectorX ## suffix const > RowVectorX ## suffix ## ConstMap;
242 
243 THEA_DECL_RESIZABLE_MATRIX_MAP_TYPEDEFS(f)
244 THEA_DECL_RESIZABLE_MATRIX_MAP_TYPEDEFS(d)
245 THEA_DECL_RESIZABLE_MATRIX_MAP_TYPEDEFS(cf)
246 THEA_DECL_RESIZABLE_MATRIX_MAP_TYPEDEFS(cd)
247 THEA_DECL_RESIZABLE_MATRIX_MAP_TYPEDEFS(i)
248 
249 #undef THEA_DECL_RESIZABLE_MATRIX_MAP_TYPEDEFS
250 
252 template < int Rows, int Cols, typename T = Real,
253  int Options = DEFAULT_MATRIX_LAYOUT,
254  typename StrideType = Eigen::Stride<0, 0>,
255  int MapOptions = Eigen::Unaligned,
256  int MaxRowsAtCompileTime = Rows,
257  int MaxColsAtCompileTime = Cols >
258 using MatrixMap = Eigen::Map< Matrix<Rows, Cols, T, Options, MaxRowsAtCompileTime, MaxColsAtCompileTime>,
259  MapOptions, StrideType >;
260 
262 template < int Rows, int Cols, typename T = Real,
263  int Options = DEFAULT_MATRIX_LAYOUT,
264  typename StrideType = Eigen::Stride<0, 0>,
265  int MapOptions = Eigen::Unaligned,
266  int MaxRowsAtCompileTime = Rows,
267  int MaxColsAtCompileTime = Cols >
268 using MatrixConstMap = Eigen::Map< Matrix<Rows, Cols, T, Options, MaxRowsAtCompileTime, MaxColsAtCompileTime> const,
269  MapOptions, StrideType >;
270 
272 template < int Size, typename T = Real,
273  typename StrideType = Eigen::Stride<0, 0>,
274  int MapOptions = Eigen::Unaligned,
275  int Options = MatrixLayout::COLUMN_MAJOR,
276  int MaxRowsAtCompileTime = Size >
277 using VectorMap = Eigen::Map< Vector<Size, T, Options, MaxRowsAtCompileTime>, MapOptions, StrideType >;
278 
280 template < int Size, typename T = Real,
281  typename StrideType = Eigen::Stride<0, 0>,
282  int MapOptions = Eigen::Unaligned,
283  int Options = MatrixLayout::COLUMN_MAJOR,
284  int MaxRowsAtCompileTime = Size >
285 using VectorConstMap = Eigen::Map< Vector<Size, T, Options, MaxRowsAtCompileTime> const, MapOptions, StrideType >;
286 
288 template < int Size, typename T = Real,
289  typename StrideType = Eigen::Stride<0, 0>,
290  int MapOptions = Eigen::Unaligned,
291  int Options = MatrixLayout::ROW_MAJOR,
292  int MaxColsAtCompileTime = Size >
293 using RowVectorMap = Eigen::Map< RowVector<Size, T, Options, MaxColsAtCompileTime>, MapOptions, StrideType >;
294 
296 template < int Size, typename T = Real,
297  typename StrideType = Eigen::Stride<0, 0>,
298  int MapOptions = Eigen::Unaligned,
299  int Options = MatrixLayout::ROW_MAJOR,
300  int MaxColsAtCompileTime = Size >
301 using RowVectorConstMap = Eigen::Map< RowVector<Size, T, Options, MaxColsAtCompileTime> const, MapOptions, StrideType >;
302 
304 template < typename T = Real,
305  int Options = DEFAULT_MATRIX_LAYOUT,
306  typename StrideType = Eigen::Stride<0, 0>,
307  int MapOptions = Eigen::Unaligned,
308  int MaxRowsAtCompileTime = Eigen::Dynamic,
309  int MaxColsAtCompileTime = Eigen::Dynamic >
310 using MatrixXMap = Eigen::Map< MatrixX<T, Options, MaxRowsAtCompileTime, MaxColsAtCompileTime>, MapOptions, StrideType >;
311 
313 template < typename T = Real,
314  int Options = DEFAULT_MATRIX_LAYOUT,
315  typename StrideType = Eigen::Stride<0, 0>,
316  int MapOptions = Eigen::Unaligned,
317  int MaxRowsAtCompileTime = Eigen::Dynamic,
318  int MaxColsAtCompileTime = Eigen::Dynamic >
319 using MatrixXConstMap = Eigen::Map< MatrixX<T, Options, MaxRowsAtCompileTime, MaxColsAtCompileTime> const,
320  MapOptions, StrideType >;
321 
323 template < typename T = Real,
324  typename StrideType = Eigen::Stride<0, 0>,
325  int MapOptions = Eigen::Unaligned,
326  int Options = MatrixLayout::COLUMN_MAJOR,
327  int MaxRowsAtCompileTime = Eigen::Dynamic >
328 using VectorXMap = Eigen::Map< VectorX<T, Options, MaxRowsAtCompileTime>, MapOptions, StrideType >;
329 
331 template < typename T = Real,
332  typename StrideType = Eigen::Stride<0, 0>,
333  int MapOptions = Eigen::Unaligned,
334  int Options = MatrixLayout::COLUMN_MAJOR,
335  int MaxRowsAtCompileTime = Eigen::Dynamic >
336 using VectorXConstMap = Eigen::Map< VectorX<T, Options, MaxRowsAtCompileTime> const, MapOptions, StrideType >;
337 
339 template < typename T = Real,
340  typename StrideType = Eigen::Stride<0, 0>,
341  int MapOptions = Eigen::Unaligned,
342  int Options = MatrixLayout::ROW_MAJOR,
343  int MaxColsAtCompileTime = Eigen::Dynamic >
344 using RowVectorXMap = Eigen::Map< RowVectorX<T, Options, MaxColsAtCompileTime>, MapOptions, StrideType >;
345 
347 template < typename T = Real,
348  typename StrideType = Eigen::Stride<0, 0>,
349  int MapOptions = Eigen::Unaligned,
350  int Options = MatrixLayout::ROW_MAJOR,
351  int MaxColsAtCompileTime = Eigen::Dynamic >
352 using RowVectorXConstMap = Eigen::Map< RowVectorX<T, Options, MaxColsAtCompileTime> const, MapOptions, StrideType >;
353 
354 //=============================================================================================================================
355 // Typedef other useful Eigen classes.
356 //=============================================================================================================================
357 
359 template <typename T = Real> using Quaternion = Eigen::Quaternion<T>;
360 
361 } // namespace Thea
362 
363 #include "MatrixUtil.hpp"
364 
365 #endif
Eigen::Matrix< T, Size, 1, Options|((Options &Eigen::DontAlign)==0 &&Size==Eigen::Dynamic?Eigen::AutoAlign:Eigen::DontAlign), MaxRowsAtCompileTime, 1 > Vector
General 1D dense column vector template, alias for Eigen::Matrix<T, Size, 1,...>, with a custom align...
Definition: MatVec.hpp:146
Eigen::Map< Matrix< Rows, Cols, T, Options, MaxRowsAtCompileTime, MaxColsAtCompileTime >, MapOptions, StrideType > MatrixMap
Alias for Eigen::Map< Matrix<...> >.
Definition: MatVec.hpp:259
Eigen::Map< RowVectorX< T, Options, MaxColsAtCompileTime >, MapOptions, StrideType > RowVectorXMap
Alias for Eigen::Map< RowVectorX<...> >.
Definition: MatVec.hpp:344
Eigen::Quaternion< T > Quaternion
Alias for Eigen::Quaternion<...>.
Definition: MatVec.hpp:359
Root namespace for the Thea library.
STL namespace.
Eigen::Map< RowVector< Size, T, Options, MaxColsAtCompileTime >, MapOptions, StrideType > RowVectorMap
Alias for Eigen::Map< RowVector<...> >.
Definition: MatVec.hpp:293
Eigen::Matrix< T, Eigen::Dynamic, 1, Options, MaxRowsAtCompileTime, 1 > VectorX
General 1D dense column vector template with dynamic resizing, alias for Eigen::Matrix<T, Eigen::Dynamic, 1,...> with a custom default layout (row or column major).
Definition: MatVec.hpp:155
Eigen::Map< VectorX< T, Options, MaxRowsAtCompileTime >, MapOptions, StrideType > VectorXMap
Alias for Eigen::Map< VectorX<...> >.
Definition: MatVec.hpp:328
Eigen::Map< Vector< Size, T, Options, MaxRowsAtCompileTime >, MapOptions, StrideType > VectorMap
Alias for Eigen::Map< Vector<...> >.
Definition: MatVec.hpp:277
Eigen::Matrix< T, 1, Eigen::Dynamic, Options, 1, MaxColsAtCompileTime > RowVectorX
General 1D dense row vector template with dynamic resizing, alias for Eigen::Matrix<T, 1, Eigen::Dynamic,...> with a custom default layout (row or column major).
Definition: MatVec.hpp:186
Eigen::Map< MatrixX< T, Options, MaxRowsAtCompileTime, MaxColsAtCompileTime >, MapOptions, StrideType > MatrixXMap
Alias for Eigen::Map< MatrixX<...> >.
Definition: MatVec.hpp:310
Eigen::Matrix< T, 1, Size, Options|((Options &Eigen::DontAlign)==0 &&Size==Eigen::Dynamic?Eigen::AutoAlign:Eigen::DontAlign), 1, MaxColsAtCompileTime > RowVector
General 1D dense row vector template, alias for Eigen::Matrix<T, 1, Size,...>, with a custom alignmen...
Definition: MatVec.hpp:177
Eigen::Map< MatrixX< T, Options, MaxRowsAtCompileTime, MaxColsAtCompileTime > const, MapOptions, StrideType > MatrixXConstMap
Alias for Eigen::Map< MatrixX<...> const >.
Definition: MatVec.hpp:320
Eigen::Map< RowVector< Size, T, Options, MaxColsAtCompileTime > const, MapOptions, StrideType > RowVectorConstMap
Alias for Eigen::Map< RowVector<...> const >.
Definition: MatVec.hpp:301
Eigen::Map< Vector< Size, T, Options, MaxRowsAtCompileTime > const, MapOptions, StrideType > VectorConstMap
Alias for Eigen::Map< Vector<...> const >.
Definition: MatVec.hpp:285
Eigen::Map< RowVectorX< T, Options, MaxColsAtCompileTime > const, MapOptions, StrideType > RowVectorXConstMap
Alias for Eigen::Map< RowVectorX<...> const >.
Definition: MatVec.hpp:352
Eigen::Map< Matrix< Rows, Cols, T, Options, MaxRowsAtCompileTime, MaxColsAtCompileTime > const, MapOptions, StrideType > MatrixConstMap
Alias for Eigen::Map< Matrix<...> const >.
Definition: MatVec.hpp:269
Eigen::Map< VectorX< T, Options, MaxRowsAtCompileTime > const, MapOptions, StrideType > VectorXConstMap
Alias for Eigen::Map< VectorX<...> const >.
Definition: MatVec.hpp:336
Eigen::Matrix< T, Rows, Cols, Options|((Options &Eigen::DontAlign)==0 &&(Rows==Eigen::Dynamic||Cols==Eigen::Dynamic)?Eigen::AutoAlign:Eigen::DontAlign), MaxRowsAtCompileTime, MaxColsAtCompileTime > Matrix
General 2D dense matrix template, alias for Eigen::Matrix with a custom default layout (row or column...
Definition: MatVec.hpp:114
Eigen::Matrix< T, Eigen::Dynamic, Eigen::Dynamic, Options, MaxRowsAtCompileTime, MaxColsAtCompileTime > MatrixX
General 2D dense matrix template with dynamic resizing, alias for Eigen::Matrix with Eigen::Dynamic a...
Definition: MatVec.hpp:124