Games101-0提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
- 作业描述
- 一、题解
- 二、C++
- 笔记
作业描述
给定一个点P=(2,1), 将该点绕原点先逆时针旋转45◦,再平移(1,2), 计算出变换后点的坐标(要求用齐次坐标进行计算)
$$$$
一、题解公式
(
x
′
y
′
1
)
=
(
cos
θ
−
sin
θ
1
sin
θ
cos
θ
2
0
0
1
)
⋅
(
2
1
1
)
left(begin{matrix}x' \ y' \ 1 end{matrix}right)=left(begin{matrix}cos{theta} & -sin{theta} & 1 \ sin{theta} & cos{theta} & 2 \0 & 0 & 1end{matrix}right) cdot left(begin{matrix}2 \ 1 \ 1 end{matrix}right)
⎝⎛x′y′1⎠⎞=⎝⎛cosθsinθ0−sinθcosθ0121⎠⎞⋅⎝⎛211⎠⎞
其中
θ
=
4
5
∘
{theta}=45^circ
θ=45∘角。
#include#include "Eigen/Core" #include "Eigen/Dense" #include using namespace std; int main() { Eigen::Vector3f point(2.0, 1.0, 1.0); // 定义向量 Eigen::Matrix3f transform1, transtorm3; //定义矩阵 float r = sqrt(2) / 2; // cos45 sin45 都是sqrt(2)/2 transform1 << r, -r, 1.0, r, r, 2.0, 0.0, 0.0, 1.0; Eigen::Vector3f pointCur = transform1 * point; cout << pointCur; return 0; }
笔记



