1 2 3 4 5 6 7 8 9 10
| 作业01: 本次作业的任务是填写一个旋转矩阵和一个透视投影矩阵。给定三维下三个 点 v0(2.0,0.0,−2.0),v1(0.0,2.0,−2.0),v2(−2.0,0.0,−2.0), 你需要将这三个点的坐 标变换为屏幕坐标并在屏幕上绘制出对应的线框三角形 (在代码框架中,我们已 经提供了 draw_triangle 函数,所以你只需要去构建变换矩阵即可)。简而言之, 我们需要进行模型、视图、投影、视口等变换来将三角形显示在屏幕上。在提供 的代码框架中,我们留下了模型变换和投影变换的部分给你去完成。 如果你对上述概念有任何不清楚或疑问,请复习课堂笔记或询问助教。 以下是你需要在 main.cpp 中修改的函数(请不要修改任何的函数名和其他 已经填写好的函数,并保证提交的代码是已经完成且能运行的): • get_model_matrix(float rotation_angle): 逐个元素地构建模型变换矩 阵并返回该矩阵。在此函数中,你只需要实现三维中绕 z 轴旋转的变换矩阵, 而不用处理平移与缩放。 • get_projection_matrix(float eye_fov, float aspect_ratio, float zNear, float zFar):使用给定的参数逐个元素地构建透视投影矩阵并返回 该矩阵。 • [Optional] main(): 自行补充你所需的其他操作。
当你在上述函数中正确地构建了模型与投影矩阵,光栅化器会创建一个窗口 显示出线框三角形。由于光栅化器是逐帧渲染与绘制的,所以你可以使用 A 和 D 键去将该三角形绕 z 轴旋转 (此处有一项提高作业,将三角形绕任意过原点的 轴旋转)。当你按下 Esc 键时,窗口会关闭且程序终止。
代码:
|