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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM