参考:https://blog.csdn.net/qq_36242312/article/details/105742949
①model 变换
model矩阵是MVP变换中的第一个矩阵,它用于将物体从自身局部坐标变换到世界坐标,题目要求实现三维中绕z轴旋转的变换矩阵和任意轴旋转的变换矩阵。
对于绕z轴旋转的变换矩阵有如下特点:
//以下是普通的model变换矩阵,没有考虑平移
Eigen::Matrix4f get_model_matrix(float rotation_angle)
{
Eigen::Matrix4f model = Eigen::Matrix4f::Identity();
Eigen::Matrix4f rotate(4,4); // z-axis rotation
//opencv中使用的都是弧度,所以首先要转换
float radian = rotation_angle / 180.0 * MY_PI;
rotate << cos(radian), -sin(radian), 0, 0,
sin(radian), cos(radian), 0, 0,
0, 0, 1, 0,
0, 0, 0, 1;
model = rotate * model;
return model;
}
而如果想要实现任意轴旋转,我们需要先得到一个交于原点的旋转轴和旋转角度,得到了之后只需要根据轴角公式旋转即可:
<