作业0
给定一个点P =(2,1), 将该点绕原点先逆时针旋转45◦,再平移(1,2), 计算出变换后点的坐标(要求用齐次坐标进行计算)。
注:math.h中定义了PI,使用该头文件中的PI可以在#include<math.h>前加上#define _USE_MATH_DEFINES
逆时针旋转45°,平移(1,2)根据所学,带入公式
#include<cmath>
#include<eigen3/Eigen/Core>
#include<eigen3/Eigen/Dense>
#include<iostream>
#include<cmath>
#define _USE_MATH_DEFINES
using namespace std;
int main(){
// 这里要用齐次坐标,所以变成了(2,1,1)
Eigen::Vector3d skl(2.0f,1.0f,1.0f);
Eigen::Matrix3d rota;
Eigen::Matrix3d tran;
// 弧度制
double theta = 45/180*M_PI;
rota<<cos(theta),-1*sin(theta),0,
sin(theta),cos(theta),0,
0,0,1;
tran<<1,0,1,
0,1,2,
0,0,1;
skl = tran*rota*skl;
cout<<skl<<endl;
return 0;
}