熟悉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;
}