在Eigen中,旋转矩阵、变换矩阵、欧拉角都可以表示为Eigen库中的特定类型的矩阵。
1、旋转矩阵
旋转矩阵通常用于表示三维空间中的旋转操作。在Eigen中,可以使用Eigen::Matrix3d
类型来表示三维的旋转矩阵。通常,旋转矩阵是一个正交矩阵,其转置等于逆,因此可以使用Eigen中的Rotation3D
模块来创建和操作旋转矩阵。
例如,创建一个绕z轴旋转45度的旋转矩阵可以这样做:
#include <Eigen/Dense>
int main() {
Eigen::Matrix3d rotation_matrix;
double angle = M_PI / 4; // 45度转弧度
rotation_matrix = Eigen::AngleAxisd(angle, Eigen::Vector3d::UnitZ());
return 0;
}
2、变换矩阵
变换矩阵用于表示在欧几里得空间中的平移、旋转和缩放操作。在三维情况下,通常使用4x4的变换矩阵来表示这些变换。Eigen中可以使用Eigen::Transform
模板来创建和操作这样的变换矩阵。
例如,创建一个绕z轴旋转45度并沿x轴平移(1, 2, 3)的变换矩阵可以这样做:
#include <Eigen/Dense>
int main() {
Eigen::Affine3d transformation_matrix = Eigen::Affine3d::Identity();
double angle = M_PI / 4; // 45度转弧度
transformation_matrix.rotate(Eigen::AngleAxisd(angle, Eigen::Vector3d