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


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

目录
相关文章
|
3月前
|
算法框架/工具 C++ Python
根据相机旋转矩阵求解三个轴的旋转角/欧拉角/姿态角 或 旋转矩阵与欧拉角(Euler Angles)之间的相互转换,以及python和C++代码实现
根据相机旋转矩阵求解三个轴的旋转角/欧拉角/姿态角 或 旋转矩阵与欧拉角(Euler Angles)之间的相互转换,以及python和C++代码实现
234 0
|
3月前
第4章-变换-4.3-四元数
第4章-变换-4.3-四元数
36 3
|
3月前
|
C++
C++ PCL 计算多个RT矩阵变换后的变换矩阵
C++ PCL 计算多个RT矩阵变换后的变换矩阵
45 0
vector打印锯齿矩阵
vector打印锯齿矩阵
对角矩阵(Diagonal Matrix)
对角矩阵(Diagonal Matrix)是一种特殊的矩阵,其元素仅位于主对角线上。对角矩阵通常用于线性代数和微积分等数学领域,它有以下几个特点:
660 7
|
计算机视觉
OpenCV-矩阵变形reshape
OpenCV-矩阵变形reshape
147 0
|
定位技术
BFS:一维坐标的移动
BFS:一维坐标的移动
|
Windows
【OpenGL】二十、OpenGL 矩阵变换 ( 矩阵缩放变换 | 矩阵旋转变换 | 矩阵平移变换 )(二)
【OpenGL】二十、OpenGL 矩阵变换 ( 矩阵缩放变换 | 矩阵旋转变换 | 矩阵平移变换 )(二)
154 0
【OpenGL】二十、OpenGL 矩阵变换 ( 矩阵缩放变换 | 矩阵旋转变换 | 矩阵平移变换 )(二)