作业描述
给定一个点 P=(2,1), 将该点绕原点先逆时针旋转 45◦,再平移 (1,2), 计算出变换后点的坐标(要求用齐次坐标进行计算)。
解决代码
#include<cmath>
#include<eigen3/Eigen/Core>
#include<eigen3/Eigen/Dense>
#include<iostream>
int main(){
//定义点
Eigen::Vector3f p(2.0f, 1.0f, 1.0f);
//定义弧度
float radian = 45 * acos(-1) / 180 ;
//定义旋转所需参数
float cosA = cos(radian);
float sinA = sin(radian);
//定义变换矩阵
Eigen::Matrix3f m;
m <<
cosA, -sinA, 1.0f,
sinA, cosA, 2.0f,
0.0f, 0.0f, 1.0f;
//计算
p = m * p;
//输出
std::cout << p;
return 0;
}
输出结果
1.70711
4.12132
1