[GAMES101]计算机图形学 Assignment 0

熟悉Eigen库的操作

Abstract

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


对于二维向量,首先构建一个旋转矩阵,再构建一个平移矩阵,再左结合地点乘即可。

代码

#include<cmath>
#include<eigen3/Eigen/Core>
#include<eigen3/Eigen/Dense>
#include<iostream>

int main(){

    Eigen::Vector3f pOriginal(2.0f, 1.0f, 1.0f);

    Eigen::Matrix3f mR, mT;

    double theta = 45.0 / 180.0 * acos(-1);

    mR << cos(theta), -sin(theta), 0 
        , sin(theta), cos(theta) , 0
        , 0      , 0       , 1;
    mT << 1, 0, 1, 
          0, 1, 2, 
          0, 0, 1;

    Eigen::Vector3f pTarget = mT * mR * pOriginal;

    std::cout << "Result:" << std::endl;
    std::cout << pTarget << std::endl;

    return 0;
}
原文地址:https://www.cnblogs.com/1Kasshole/p/13992362.html