三维空间中的旋转变换

1、绕坐标轴旋转的公式:
(1)绕Z轴旋转

三维空间中的旋转变换

文章插图
(2)绕X轴旋转
三维空间中的旋转变换

文章插图
(3)绕Y轴旋转
三维空间中的旋转变换

文章插图
以上的矩阵变换公式为 : P' = P * mat;
2、绕任意轴旋转的公式:
给定具有单位长的
,则物体绕OA轴旋转变换的矩阵表示可确定如下:
三维空间中的旋转变换

文章插图
3、绕任意轴旋转在Ogre中实现
Ogre::Matrix3 I = Ogre::Matrix3::IDENTITY;Ogre::Matrix3 A = I, B = I, M = I;// (x,y,z) 是任意轴旋转到坐标原点的方向向量A[0][0] = x * x; A[0][1] = x * y; A[0][2] = x * z;A[1][0] = y * x; A[1][1] = y * y; A[1][2] = y * z;A[2][0] = z * x; A[2][1] = z * y; A[2][2] = z * z;B[0][0] =0;B[0][1] = -z;B[0][2] = y;B[1][0] =z;B[1][1] =0;B[1][2] = -x;B[2][0] = -y;B[2][1] =x;B[2][2] =0;M = A + (I - A) * Ogre::Math::Cos(angle) + B * Ogre::Math::Sin(angle);M = M.Transpose();// Trans is translate matrixOgre:: Matrix4 result = Trans.inverse() * Ogre::Matrix4(M) * Trans;
4、Ogre中实现注意的问题
【三维空间中的旋转变换】上述公式中的矩阵式按行表示的,而Ogre中的矩阵是按列表示的,因此最终的公式需要变化一下,即