简介
作业用来校验自己做的是否正确。请不用copy,因为这是cheat youself。
题目
给定一个点 P=(2,1), 将该点绕原点先逆时针旋转 45◦,再平移 (1,2), 计算出变换后点的坐标(要求用齐次坐标进行计算)。
code
#include<cmath>
#include<eigen3/Eigen/Core>
#include<eigen3/Eigen/Dense>
#include<iostream>
#define _USE_MATH_DEFINES
int main(){
Eigen::Vector3d test(2.0f,1.0f,1.0f);
Eigen::Matrix3d rota;
Eigen::Matrix3d tran;
double theta = 45.0/180.0*M_PI;
rota << cos(theta), -1.0*sin(theta), 0,
sin(theta), cos(theta), 0,
0, 0, 1;
tran << 1, 0, 1,
0, 1, 2,
0, 0, 1;
test = tran * rota * test;
std::cout << test << std::endl;
std::cout << "After rotation and transform the point sits at "
<< test[0] << "," << test[1] << std::endl;
return 0;
}
参考资料
book 《fundamental of Computer Graphics》 page 130
---------------------------我的天空里没有太阳,总是黑夜,但并不暗,因为有东西代替了太阳。虽然没有太阳那么明亮,但对我来说已经足够。凭借着这份光,我便能把黑夜当成白天。我从来就没有太阳,所以不怕失去。
--------《白夜行》