GAMES101作业解答-作业0
GAMES101-作业0解答
1. 搭建学习环境
- 其实环境搭建很简单,我是用继承开发环境CLion+macOS big sur,虽然闫老师不推荐CLion,但是我觉得还是挺好用的。
- 作业0并没有要求到很多计算机图形学很多库,只需要下载c++关于矩阵计算的库:eigen。
- 配置Clion的方法网上很多,这里我们先下载eigen库,然后在程序里面include就行:
brew install eigen //即可
所安装的eigen库路径位于:/usr/local/include/eigen3/Eigen
2. 代码完成作业0
- 首先作业0的问题是:给定一个点 P =(2,1), 将该点绕原点先逆时针旋转 45◦,再平移 (1,2), 计算出 变换后点的坐标(要求用齐次坐标进行计算)。
- 思考:在课程讲解时候讲得特别清楚,p点在二维平面上是一个由原点(0,0) 指向P(2,1)的向量,向量的旋转和平移很好操作。
- 代码:
#include<cmath>
#include</usr/local/include/eigen3/Eigen/Core>
#include</usr/local/include/eigen3/Eigen/Dense> // 没有使用
#include<iostream>
int main(){
Eigen::Vector3f p(2.0f,1.0f,1.0f); //定义我们的p点 写成齐次坐标形式
// 目标是先旋转后平移 所以我们在p的左边依次乘以旋转矩阵和平移矩阵、
Eigen::Matrix3f rotation; //定义旋转矩阵
Eigen::Matrix3f transform; //定义平移矩阵
double theta = 45.0/180.0*M_PI; //转换成弧度数
rotation << cos(theta), -sin(theta), 0,
sin(theta), cos(theta), 0,
0, 0, 1; //旋转矩阵写成其次坐标形式
transform << 1, 0, 1,
0, 1, 2,
0, 0, 1; // 平移矩阵
p = transform*rotation*p; // 转换过程
std::cout<<p<<std::endl; // 输出结果
return 0;
}
注释中写得很清楚了,我想听过课的应该很容易明白。
3. 编译要求
- 要求我们熟悉 cmke编译代码,所以需要写Cmakelist文件:
//文件如下
cmake_minimum_required(VERSION 3.17)
project(learnCG)
find_package(Eigen3 REQUIRED)
include_directories(${EIGEN3_INCLUDE_DIR})
set(CMAKE_CXX_STANDARD 11)
add_executable(learnCG main.cpp)
- 步骤:
切换到cmake-build-debug目录下
执行 cmake ..
完成后执行 make 编译命令
接着执行我们生成的可执行文件 ./learnCG
即可!
天青色等烟雨,而我在等你

浙公网安备 33010602011771号