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
    即可!
posted @ 2020-11-19 20:38  levelly  阅读(4167)  评论(1)    收藏  举报