1

给定一个Eigen::Affine3d变换,你如何有效地提取一个Eigen::Matrix3d由仿射 4×4 矩阵的左上角 3×3 角组成的?

目前我使用以下非优雅(但有效)的语法:

Eigen::Affine3d m_world;
:
Eigen::Matrix3d normMatrix;
normMatrix.col(0) = Vec3(m_world(0,0),m_world(1,0),m_world(2,0));
normMatrix.col(1) = Vec3(m_world(0,1),m_world(1,1),m_world(2,1));
normMatrix.col(2) = Vec3(m_world(0,2),m_world(1,2),m_world(2,2));
4

1 回答 1

2

您可以Eigen::Transform<>::linear()为此目的使用该方法:

normMatrix = m_world.linear();

这是该方法的快捷MatrixBase::topLeftCorner()方式:

normMatrix = m_world.matrix().topLeftCorner<3,3>();
于 2014-12-26T20:51:24.863 回答