Assignment 0
236字小于1分钟
2024-11-14
作业描述:
给定一个点P=(2,1),将该点绕原点先逆时针旋转45°,再平移(1,2),计算出变换后点的坐标(要求使用齐次坐标进行计算).
1 数学思路
首先写出点P的齐次坐标(2,1,1).
然后写出旋转矩阵
R=cos45°sin45°0−sin45°cos45°0001
然后写出平移矩阵
T=100010121
于是变换后的坐标为
P′=T⋅R⋅P
2 程序设计
int main()
{
Eigen::Vector3f p(2, 1, 1), pNew;
Eigen::Matrix3f r, t;
// 定义旋转角
float rad = 45.0 / 180.0 * M_PI;
r << cos(rad), -sin(rad), 0,
sin(rad), cos(rad), 0,
0, 0, 1;
t << 1, 0, 1,
0, 1, 2,
0, 0, 1;
pNew = t * r * p;
std::cout << "The new homogenous coordinate is " << std::endl;
std::cout << pNew << std::endl;
return 0;
}
编译运行后输出:
The new homogenous coordinate is
1.70711
4.12132
1