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

简介: 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. 变换矩阵:最终变换矩阵中,旋转变换首先应用,然后是平移变换。


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

目录
相关文章
|
20天前
|
算法框架/工具 C++ Python
根据相机旋转矩阵求解三个轴的旋转角/欧拉角/姿态角 或 旋转矩阵与欧拉角(Euler Angles)之间的相互转换,以及python和C++代码实现
根据相机旋转矩阵求解三个轴的旋转角/欧拉角/姿态角 或 旋转矩阵与欧拉角(Euler Angles)之间的相互转换,以及python和C++代码实现
88 0
|
20天前
|
C++
C++ PCL 计算多个RT矩阵变换后的变换矩阵
C++ PCL 计算多个RT矩阵变换后的变换矩阵
22 0
vector打印锯齿矩阵
vector打印锯齿矩阵
|
10月前
对角矩阵(Diagonal Matrix)
对角矩阵(Diagonal Matrix)是一种特殊的矩阵,其元素仅位于主对角线上。对角矩阵通常用于线性代数和微积分等数学领域,它有以下几个特点:
451 7
三维旋转详细解读(Rodrigues‘ Roatation Formula 罗德里格旋转公式)
三维旋转详细解读(Rodrigues‘ Roatation Formula 罗德里格旋转公式)
302 0
三维旋转详细解读(Rodrigues‘ Roatation Formula 罗德里格旋转公式)
|
11月前
|
计算机视觉
OpenCV-矩阵变形reshape
OpenCV-矩阵变形reshape
114 0
复数与二维旋转
复数与二维旋转
228 0
复数与二维旋转
利用矩阵进行平移,旋转,缩放等图像变换、创建第二个一模一样的图像并使之进行缩放等操作
利用矩阵进行平移,旋转,缩放等图像变换、创建第二个一模一样的图像并使之进行缩放等操作
|
前端开发 数据可视化
Canvas——坐标系和矩阵的理解
前言 最近一直在寻找可视化文章发现没有合适的,恰好有个粉丝问了坐标系就和大家讲一下, 文字不多,内容比较简单,看完应该就能理解canvas的坐标系和getTransform 的 6 个参数什么意思哈, 后面还有一篇「Rbush」正在奋笔疾书✍️中,关于空间中如何快速搜索🔍百万或者是数十万个点的,敬请期待哈! 坐标系 canvas中的坐标是从左上角开始的,x轴沿着水平方向(按像素)向右延伸,y轴沿垂直方向向下延伸。左上角坐标为x=0,y=0的点称作原点。在默认坐标系中,每一个点的坐标都是直接映射到一个CSS像素上。 但是如果图像的每次绘制都参考一个固定点将缺少灵活性,于是在canvas中引
Canvas——坐标系和矩阵的理解