game101 作业0

作业0

给定一个点P =(2,1), 将该点绕原点先逆时针旋转45◦,再平移(1,2), 计算出变换后点的坐标(要求用齐次坐标进行计算)。

注:math.h中定义了PI,使用该头文件中的PI可以在#include<math.h>前加上#define _USE_MATH_DEFINES

逆时针旋转45°,平移(1,2)根据所学,带入公式
在这里插入图片描述

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include<cmath>
#include<eigen3/Eigen/Core>
#include<eigen3/Eigen/Dense>
#include<iostream>
#include<cmath>
#define _USE_MATH_DEFINES
using namespace std;
int main(){
// 这里要用齐次坐标,所以变成了(2,1,1)
Eigen::Vector3d skl(2.0f,1.0f,1.0f);
Eigen::Matrix3d rota;
Eigen::Matrix3d tran;
// 弧度制
double theta = 45/180*M_PI;
rota<<cos(theta),-1*sin(theta),0,
sin(theta),cos(theta),0,
0,0,1;
tran<<1,0,1,
0,1,2,
0,0,1;
skl = tran*rota*skl;
cout<<skl<<endl;
return 0;
}

game101 作业0
http://example.com/2021/03/29/game101 作业0/
作者
shoukailiang
发布于
2021年3月29日
许可协议