GAMES101 作业0

930 阅读1分钟

作业描述:给定一个点 P=(2,1), 将该点绕原点先逆时针旋转 45◦,再平移 (1,2), 计算出变换后点的坐标(要求用齐次坐标进行计算)。

解体思路
先让点p乘以旋转矩阵,然后平移(1,2),但由于题目要求齐次坐标,所以直接做一个仿射变换。矩阵表示如下
image.png
代码

    // 定义点p
    Eigen::Vector3f p(2.0, 1.0, 1.0);
    // 定义仿射变换矩阵
    Eigen::Matrix3f Trans;
    Trans << std::cos(45 * para), -std::sin(45 * para), 1.0 
        , std::sin(45 * para), std::cos(45* para), 2.0 
        , 0.0, 0.0, 1.0;
    // 然后矩阵乘法
    std::cout << Trans * p << std::endl;