这里回顾GAMES101 HW0。

课程主页:

课程作业:

课程视频:

相关资料:

编程题

首先使用齐次坐标:

然后使用对应的旋转矩阵:

平移矩阵:

所以代码为:

// P=(2, 1)
Eigen::Vector3f p(2.0f, 1.0f, 1.0f);
Eigen::Vector3f q(0.0f, 0.0f, 0.0f);
// 逆时针旋转45度, 平移(2, 1)
float pi = std::acos(-1);
Eigen::Matrix3f r, t;
r << std::cos(pi / 4), -std::sin(pi / 4), 0, 
     std::sin(pi / 4), std::cos(pi / 4), 
     0, 0, 0, 1;
t << 1, 0, 1, 
     0, 1, 2, 
     0, 0, 1;
std::cout << r << std::endl;
// 计算
q = t * r * p;
// 打印结果
std::cout << "p:" << std::endl;
std::cout << p << std::endl;
std::cout << "q:" << std::endl;
std::cout << q << std::endl;

编译并运行:

make -j4 && ./Transformation

p:
2
1
1
q:
1.70711
4.12132
      1

计算验证: