#include <Eigen/Core>
#include <Eigen/Dense>
平移
x轴
Eigen::Vector3d original_point(1.0, 2.0, 3.0);std::cout << "original_point: " << std::endl << original_point << std::endl;double tx = 2.0;Eigen::Matrix4d translation_matrix = Eigen::Matrix4d::Identity();translation_matrix(0, 3) = tx;std::cout << "translation_matrix: " << std::endl << translation_matrix << std::endl;Eigen::Vector4d homogenous_point(original_point.x(), original_point.y(), original_point.z(), 1.0);Eigen::Vector4d transformed_point = translation_matrix * homogenous_point;std::cout << "Transformed point after translation along x-axis: " << transformed_point.transpose().block<1, 3>(0, 0) << std::endl;

y轴
Eigen::Vector3d original_point(1.0, 2.0, 3.0);double ty = -1.0;Eigen::Matrix4d translation_matrix = Eigen::Matrix4d::Identity();translation_matrix(1, 3) = ty;std::cout << "translation_matrix: " << std::endl << translation_matrix << std::endl;Eigen::Vector4d homogenous_point(original_point.x(), original_point.y(), original_point.z(), 1.0);Eigen::Vector4d transformed_point = translation_matrix * homogenous_point;std::cout << "Original point: " << original_point.transpose() << std::endl;std::cout << "Transformed point after translation along y-axis: " << transformed_point.transpose().block<1, 3>(0, 0) << std::endl;

z轴
Eigen::Vector3d original_point(1.0, 2.0, 3.0);double tz = 0.5;Eigen::Matrix4d translation_matrix = Eigen::Matrix4d::Identity();translation_matrix(2, 3) = tz;std::cout << "translation_matrix: " << std::endl << translation_matrix << std::endl;Eigen::Vector4d homogenous_point(original_point.x(), original_point.y(), original_point.z(), 1.0);Eigen::Vector4d transformed_point = translation_matrix * homogenous_point;std::cout << "Original point: " << original_point.transpose() << std::endl;std::cout << "Transformed point after translation along y-axis: " << transformed_point.transpose().block<1, 3>(0, 0) << std::endl;

旋转
x轴
#define M_PI 3.14159265358979323846Eigen::Vector3d original_point(0.0, 1.0, 0.0);double angle = M_PI / 4.0; Eigen::Matrix3d rotation_matrix;rotation_matrix = Eigen::AngleAxisd(angle, Eigen::Vector3d::UnitX());Eigen::Vector3d rotated_point = rotation_matrix * original_point;std::cout << "Original point: " << original_point.transpose() << std::endl;std::cout << "Rotated point after clockwise rotation around x-axis: " << rotated_point.transpose() << std::endl;
y轴
#define M_PI 3.14159265358979323846Eigen::Vector3d original_point(0.0, 1.0, 0.0);double angle = -M_PI / 3.0; Eigen::Matrix3d rotation_matrix;rotation_matrix = Eigen::AngleAxisd(angle, Eigen::Vector3d::UnitY());Eigen::Vector3d rotated_point = rotation_matrix * original_point;std::cout << "Original point: " << original_point.transpose() << std::endl;std::cout << "Rotated point after clockwise rotation around y-axis: " << rotated_point.transpose() << std::endl;
z轴
#define M_PI 3.14159265358979323846Eigen::Vector3d original_point(0.0, 1.0, 0.0);double angle = -M_PI / 6.0; Eigen::Matrix3d rotation_matrix;rotation_matrix = Eigen::AngleAxisd(angle, Eigen::Vector3d::UnitZ());Eigen::Vector3d rotated_point = rotation_matrix * original_point;std::cout << "Original point: " << original_point.transpose() << std::endl;std::cout << "Rotated point after clockwise rotation around z-axis: " << rotated_point.transpose() << std::endl;
缩放