本文为闫令琪老师的GAMES 101课程的作业1的个人实现与一些简单的思考,文中如有错漏欢迎指出。
作业要求
本次作业的任务是填写一个旋转矩阵和一个透视投影矩阵。给定三维下三个点v0(2.0, 0.0, −2.0), v1(0.0, 2.0, −2.0), v2(−2.0, 0.0, −2.0), 你需要将这三个点的坐标变换为屏幕坐标并在屏幕上绘制出对应的线框三角形。
代码实现
这里需要实现的是get_model_matrix
和get_projection_matrix
这两个方法,分别对应着模型和投影变换。
在模型变换中,要实现绕z轴旋转rotation_angle
角度的变换矩阵,即为如下所示的矩阵:
R z ( α ) = [ c o s α − s i n α 0 0 s i n α c o s α 0 0 0 0 1 0 0 0 0 1 ] R_{z}(\alpha)=\left[ \begin{matrix} cos\alpha & -sin\alpha & 0 & 0 \\ sin\alpha & cos\alpha & 0 &0 \\0 & 0 & 1& 0 \\0 & 0 & 0 & 1 \end{matrix} \right] Rz(α)=⎣⎢⎢⎡cosαsinα00−sinαcosα000010