本文只记录结果,没有推理过程,作为个人笔记使用
推理过程可参考三维坐标旋转矩阵
绕X轴逆时针(顺时针把角度换成负的就行了)
绕Y轴逆时针
绕Z轴逆时针
Matrixf mat;
// 按列输入矩阵
mat.SetColumn(0, Vec3( cos(a[0]), sin(a[0]), 0));
mat.SetColumn(1, Vec3(-sin(a[0]), cos(a[0]), 0));
mat.SetColumn(2, Vec3(0 , 0 , 1));
int vertSize = pMesh->vert.size();
for (int i = 0; i < vertSize; ++i)
{
TVertex* pVertex = pMesh->getVertex(i);
if (!pVertex)
continue;
// 坐标转换
pVertex->P() = mat * pVertex->P();
}
pMesh->dirtyMesh(DIRTYMESH_RENDER);