Eigen::Isometry3d和Matrix4d::Identity的区别

Eigen::Isometry3dEigen::Matrix4d::Identity()都是在Eigen库中用于表示变换的类,但它们的用途和性质有所不同。

Eigen::Isometry3是一个特殊的4x4矩阵,用于表示欧几里得空间中的刚体变换,即旋转和平移。它保证了距离的不变性,即变换前后点之间的距离保持不变。这对于许多物理和几何应用来说是非常重要的。Eigen::Isometry3d内部使用一个旋转矩阵和一个平移向量来存储变换,这使得操作和组合这些变换更加高效。

Eigen::Matrix4d::Identity()则是一个4x4的单位矩阵。它可以用于表示任何线性变换,包括旋转、平移、缩放和剪切等。但是,它没有保证距离的不变性,也没有提供专门的接口来操作旋转和平移。

如果你需要表示和操作刚体变换(即旋转和平移),那么Eigen::Isometry3d会是一个更好的选择。如果你需要表示更一般的线性变换,那么你应该使用Eigen::Matrix4d

// 虽然称为3d,实质上是4*4的矩阵,齐次坐标
Eigen::Isometry3d Tc1w = Eigen::Isometry3d::Identity();
 
// 按照rotation_matrix进行旋转
Tc1w.rotate(rotation_matrix);
 
// 把平移向量设成t
Tc1w.pretranslate(t);                                                  
 
// 获取旋转矩阵
Eigen::Matrix3d rotation = Tc1w.rotation();
 
// 获取平移向量
Eigen::Vector3d position = Tc1w.translation();

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值