您当前的位置: 首页 >  flashinggg

GAMES101作业1-VS2019

flashinggg 发布时间:2022-04-28 17:00:38 ,浏览量:2

目录

题目概要

完善代码

绕Z轴变换矩阵

 构建透视矩阵

先展示完成的代码

参数理解

运行结果

 过程中出现一次报错

提高作业

提高作业代码

 将代码运用于图像

main.cpp完整代码

rasterizer.hpp完整代码

rasterizer.cpp完整代码

题目概要

我用的是VS2019完成的作业,所以要先手动添加Eigen和opencv库,分别把源文件和头文件加进去就行。

如果可以成功运行,什么都不修改的情况下得到的是一个直线:

完善代码 绕Z轴变换矩阵
Eigen::Matrix4f get_model_matrix(float rotation_angle)
{
    Eigen::Matrix4f model = Eigen::Matrix4f::Identity();
    Eigen::Matrix4f rot; //构建旋转矩阵
    float angle = rotation_angle / 180 * M_PI;
    rot 正交 perspective->orthographic
    Eigen::Matrix4f pertoorth;
    pertoorth {2, 0, -2}, {0, 2, -2}, {-2, 0, -2}};

    std::vector{0, 1, 2}};

    auto pos_id = r.load_positions(pos);
    auto ind_id = r.load_indices(ind);

    int key = 0;
    int frame_count = 0;

    if (command_line) {
        r.clear(rst::Buffers::Color | rst::Buffers::Depth);

        r.set_model(get_model_matrix(angle));
        r.set_view(get_view_matrix(eye_pos));
        r.set_projection(get_projection_matrix(45, 1, 0.1, 50));
        r.set_rodrigues(get_rotation(raxis, rangle));

        r.draw(pos_id, ind_id, rst::Primitive::Triangle);
        cv::Mat image(700, 700, CV_32FC3, r.frame_buffer().data());
        image.convertTo(image, CV_8UC3, 1.0f);

        cv::imwrite(filename, image);

        return 0;
    }

    bool rflag = false;

    std::cout             
关注
打赏
1688896170
查看更多评论
0.0466s