Eigen Transform::linear()用法

一个位姿变换可以写成:
p ′ = L p + t p^{'}=Lp+t p=Lp+t
所以转换矩阵 T = [ L t 0 1 ] T=\begin{bmatrix} L&t\\0&1\end{bmatrix} T=[L0t1]Linear部分即为左上角的Eigen::Matrix3d旋转矩阵。

  • 5
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
`Eigen::Transform`是Eigen库中的一个类,用于表示仿射变换或投影变换。它是一个模板类,可以用于表示不同维度、不同类型的变换矩阵。 `Eigen::Transform`类的定义如下: ```cpp template<typename _Scalar, int _Dim, int _Mode, int _Options> class Transform; ``` 其中,`_Scalar`表示矩阵中元素的数据类型,`_Dim`表示变换的维度,`_Mode`表示变换的模式,`_Options`表示矩阵的存储选项。 `Eigen::Transform`类提供了一些成员函数,用于进行变换操作,例如: - `translate()`:进行平移变换; - `rotate()`:进行旋转变换; - `scale()`:进行缩放变换; - `shear()`:进行剪切变换; - `matrix()`:获取变换矩阵。 例如,我们可以使用以下代码创建一个3D仿射变换,并进行平移、旋转、缩放操作: ```cpp Eigen::Transform<double, 3, Eigen::Affine> transform; transform.translate(Eigen::Vector3d(1.0, 2.0, 3.0)); transform.rotate(Eigen::AngleAxisd(M_PI / 4, Eigen::Vector3d::UnitX())); transform.scale(Eigen::Vector3d(2.0, 1.0, 0.5)); ``` 这里创建了一个3D仿射变换`transform`,首先进行了一个沿着坐标轴方向的平移变换,然后进行了一个绕x轴旋转45度的旋转变换,最后进行了一个沿着坐标轴方向的缩放变换。 我们可以使用`matrix()`函数获取变换矩阵: ```cpp Eigen::Matrix4d matrix = transform.matrix(); ``` 这里获取了变换矩阵`matrix`,类型为`Eigen::Matrix4d`,表示一个4x4的双精度浮点数矩阵。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值