c – 特征将旋转和平移组合成一个矩阵
发布时间:2020-12-16 05:44:22 所属栏目:百科 来源:网络整理
导读:我有一个旋转矩阵rot(Eigen :: Matrix3d)和一个平移向量transl(Eigen :: Vector3d),我希望它们在4×4变换矩阵中一起.我只是因为我的生活无法弄清楚如何在Eigen中做到这一点.我认为Affine可以以某种方式使用,但我不明白它是如何工作的. 基本上我想要How trans
我有一个旋转矩阵rot(Eigen :: Matrix3d)和一个平移向量transl(Eigen :: Vector3d),我希望它们在4×4变换矩阵中一起.我只是因为我的生活无法弄清楚如何在Eigen中做到这一点.我认为Affine可以以某种方式使用,但我不明白它是如何工作的.
基本上我想要How translation a matrix(4×4) in Eigen?和Multiplying Transform and Matrix types in Eigen的组合 我的代码(由于我不理解Affine如何工作而无法编译)如下所示: Eigen::Affine3d r(rot); Eigen::Affine3d t(transl); Eigen::Matrix4d m = t.matrix(); m *= r.matrix(); 解决方法
你没有发布编译错误,也没有发布什么是rot和transl.下面是一个工作
示例显示,如何创建4×4转换矩阵. #include <Eigen/Geometry> Eigen::Affine3d create_rotation_matrix(double ax,double ay,double az) { Eigen::Affine3d rx = Eigen::Affine3d(Eigen::AngleAxisd(ax,Eigen::Vector3d(1,0))); Eigen::Affine3d ry = Eigen::Affine3d(Eigen::AngleAxisd(ay,Eigen::Vector3d(0,1,0))); Eigen::Affine3d rz = Eigen::Affine3d(Eigen::AngleAxisd(az,1))); return rz * ry * rx; } int main() { Eigen::Affine3d r = create_rotation_matrix(1.0,1.0,1.0); Eigen::Affine3d t(Eigen::Translation3d(Eigen::Vector3d(1,2))); Eigen::Matrix4d m = (t * r).matrix(); // Option 1 Eigen::Matrix4d m = t.matrix(); // Option 2 m *= r.matrix(); return 0; } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |