#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.14159265358979323846
Eigen::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.14159265358979323846
Eigen::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.14159265358979323846
Eigen::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;
缩放