我有一个函数可以对转换矩阵进行大量的后/右乘法。现在我想将此函数转换为使用Eigen,问题是Eigen Transformation类将乘法作为前/左乘法。这意味着它在乘法期间具有行矩阵格式,而存储是以列矩阵格式。
有没有办法将Eigen :: Transformation类成员从row major改为column major?
答案 0 :(得分:0)
Eigen Matrix
类的完整签名是
Matrix<typename Scalar,
int RowsAtCompileTime,
int ColsAtCompileTime,
int Options = 0,
int MaxRowsAtCompileTime = RowsAtCompileTime,
int MaxColsAtCompileTime = ColsAtCompileTime>
第四个参数Options
是described as
选项是一个位字段。在这里,我们只讨论一个位:
RowMajor
。 它指定此类型的矩阵使用行主存储顺序;默认情况下,存储顺序为column-major。请参阅存储订单页面。例如,此类型表示行主3x3矩阵
所以你可以说,例如,
Matrix<int, 3, 4, ColMajor> foo; // column major
Matrix<int, 4, 3, RowMajor> bar; // row major
More documentation on Storage Orders
如果您引用的转化是Eigen::Transform
,那么它也会有Options
模板参数,您也可以通过RowMajor
vs ColMajor
。它生成的任何矩阵都遵循您指定的相同约定。
Transform<typename Scalar,
int Dim,
int Mode,
int _Options = AutoAlign>
_Options
参数再次被描述为
_Options
与Matrix
课程中的含义相同。它允许指定DontAlign
和/或RowMajor
。 这些Options
会直接传递给基础矩阵类型。