Games101-Homework0

本章内容

主要讲述Games101的作业0内容。

作业内容

  • 搭建环境,详情可参见下述链接

Games101作业环境配置(Windows):Visual Studio2019 + vcpkg

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

具体实现

根据齐次坐标的定义,P定义为(2, 1, 1),分别写出旋转矩阵rotateMat平移变换矩阵transMat,然后用p左乘rotateMat和transMat即可。

代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include<cmath>
#include<eigen3/Eigen/Core>
#include<eigen3/Eigen/Dense>
#include<iostream>

int main() {
Eigen::Vector3f p(2.0f, 1.0f, 1.0f);
Eigen::Matrix3f rotateMat, transMat;
rotateMat << std::cos(45.0 / 180.0 * acos(-1)), -std::sin(45.0 / 180.0 * acos(-1)), 0
, std::sin(45.0 / 180.0 * acos(-1)), std::cos(45.0 / 180.0 * acos(-1)), 0
, 0, 0, 1;
transMat << 1.0f, 0, 1.0f
, 0, 1.0f, 2.0f
, 0, 0, 1.0f;
p = transMat * rotateMat * p;
std::cout << "P: " << p[0] << ", " << p[1] << std::endl;
return 0;
}