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
即可!