Eigen::Matrix4f 是先旋转还是先平移的顺序

在使用 Eigen::Matrix4f 时,默认情况下是先进行旋转再进行平移。这是因为矩阵的构造顺序遵循标准的变换规则:

  1. 旋转:旋转矩阵是一个3x3的矩阵,用于表示旋转变换。
  2. 平移:平移是通过4x4矩阵的最后一列实现的,其中前三个元素代表平移向量。

例如,在组合变换时,如果你先应用旋转,然后应用平移,可以这样构造矩阵:

#include <iostream>
#include <Eigen/Dense>

int main() {
    Eigen::Matrix4f transform = Eigen::Matrix4f::Identity();

    // 定义旋转矩阵(绕Z轴旋转45度)
    Eigen::Matrix3f rotation;
    float angle = M_PI / 4; // 45度
    rotation << cos(angle), -sin(angle), 0,
                sin(angle),  cos(angle), 0,
                0,          0,          1;

    // 将旋转矩阵放入4x4矩阵的左上角
    transform.block<3,3>(0,0) = rotation;

    // 定义平移向量
    Eigen::Vector3f translation(1, 2, 3);

    // 将平移向量设置到4x4矩阵的最后一列
    transform(0, 3) = translation(0);
    transform(1, 3) = translation(1);
    transform(2, 3) = translation(2);

    // 输出变换矩阵
    std::cout << "Transform Matrix:\n" << transform << std::endl;

    return 0;
}

解释:

  1. 旋转矩阵:先定义一个3x3旋转矩阵并将其设置到4x4矩阵的左上角。
  2. 平移向量:定义一个平移向量,并将其放置到4x4矩阵的最后一列。
  3. 变换矩阵:最终变换矩阵中,旋转变换首先应用,然后是平移变换。

当你将一个点应用到这个变换矩阵时,矩阵乘法的顺序决定了先旋转再平移。

Eigen::Matrix4fEigen库中的一个类,表示一个4x4的浮点数矩阵。它可以用于表示刚体变换矩阵,例如平移旋转。这个类提供了一系列的方法来进行矩阵的初始化、转换和计算等操作。\[1\] Eigen::Quaternionf是Eigen库中的一个类,表示一个四元数。四元数是一种用于表示旋转的数学工具,它可以用于表示三维空间中的旋转操作。Eigen::Quaternionf类提供了一系列的方法来进行四元数的初始化、转换和计算等操作。\[1\] 在机器视觉领域的应用中,Eigen::Matrix4fEigen::Quaternionf常常被用于表示相机的位姿变换和姿态信息。通过使用这两个类,可以方便地进行刚体变换和旋转操作,从而实现目标检测、定位、抓取、测量和缺陷检测等任务。\[2\] #### 引用[.reference_title] - *1* [使用Eigen实现四元数、欧拉角、旋转矩阵、旋转向量之间的转换 Eigen::Affine3f和Eigen::Matrix4f的转换 ...](https://blog.csdn.net/Enochzhu/article/details/125934638)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [Eigen入门系列 —— Eigen::Matrix常用数据类型及初始化](https://blog.csdn.net/memorynode/article/details/124534276)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值