games101 作业0 环境搭建与熟悉线性代数库
作业目标
- 在win中用WSL搭建可以运行games101作业的ubuntu环境。
- 了解CMake和基本的C++知识
- 学习探索C++线性代数库Eigen
作业说明
本文并未直接使用games101提供的虚拟机环境(环境太老旧用起来不方便),而是在网上学习了在win中用子系统的方式运行Linux。
作业内容
搭建环境
参考博客:在Windows下使用WSL和VSCode使用Games101环境
CMake知识点(了解)
makefie
参考本人文章:C++自学笔记 makefile
CMake
参考视频:南科大于老师
C++基本语法
参考课程:南科大C++
Eigen库
向量的使用:
注意:向量的点乘不能直接使用*,要使用函数dot()或转成矩阵相乘。
矩阵的使用:
Eigen::Matrix3f i,j;
上述矩阵定义方式定义的是浮点数方阵(行数为3)
要定义行列数任意的矩阵方法如下所示:
Eigen::Matrix<float, 3, 4> matA; // 固定为 3行4列
作业代码
#include<cmath>
#include<eigen3/Eigen/Core>
#include<eigen3/Eigen/Dense>
#include<iostream>int main(){// point (2, 1)Eigen::Vector3f Pv(2.0f,1.0f,1.0f);std::cout << "Show the Point\n";std::cout << Pv << std::endl;// angle45float ang45 = 45.0 / 180.0 * acos(-1);// rotation matrixEigen::Matrix3f Rmat45;Rmat45 << std::cos(ang45), -1.0 * std::sin(ang45), 0.0f,std::sin(ang45), -1.0 * std::cos(ang45), 0.0, 0.0f , 0.0f , 1.0f;std::cout << "rotation matrix\n";std::cout << Rmat45 << std::endl;// translation matrixEigen::Matrix3f Tmat1_2;Tmat1_2 << 1.0f, 0.0f, 1.0f,0.0f, 1.0f, 2.0f,0.0f, 0.0f, 1.0f;std::cout << "translation matrix\n";std::cout << Tmat1_2 << std::endl;// rotationPv = Rmat45 * Pv;std::cout << Pv << std::endl;std::cout << std::endl;Pv = Tmat1_2 * Pv;std::cout << "Result:" << std::endl;std::cout << Pv << std::endl;return 0;
}