c++中三角函数计算使用的弧度,如计算sin30:sin(30.0/180.0*acos(-1))
,其中acos(-1)代表π。
因为要求用齐次坐标表示,所以点P(2,1,0)
旋转矩阵M=(cos45,-sin45,1)(sin45,cos45,2)(0,0,1)
因为矩阵是先进行线性变换再进行平移变换,所以直接将上述矩阵左乘到点P即可。代码如下
Eigen::Vector3f P(2.0f,1.0f,1.0f);
Eigen::Matrix3f M;
M << std::cos(45.0/180.0*acos(-1)),-1.0 * std::sin(45.0/180.0*acos(-1)),1.0,
std::sin(45.0/180.0*acos(-1)),std::cos(45.0/180.0*acos(-1)),2.0,
0.0,0.0,1.0;
std::cout<<M<<std::endl;
std::cout<< M * P<<std::endl;
运行: