作业描述:给定一个点 P=(2,1), 将该点绕原点先逆时针旋转 45◦,再平移 (1,2), 计算出变换后点的坐标(要求用齐次坐标进行计算)。
解体思路:
先让点p乘以旋转矩阵,然后平移(1,2),但由于题目要求齐次坐标,所以直接做一个仿射变换。矩阵表示如下
代码
// 定义点p
Eigen::Vector3f p(2.0, 1.0, 1.0);
// 定义仿射变换矩阵
Eigen::Matrix3f Trans;
Trans << std::cos(45 * para), -std::sin(45 * para), 1.0
, std::sin(45 * para), std::cos(45* para), 2.0
, 0.0, 0.0, 1.0;
// 然后矩阵乘法
std::cout << Trans * p << std::endl;