三维空间中的旋转变换

来源:互联网 发布:苹果手机绘图软件 编辑:程序博客网 时间:2024/03/29 20:11

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中的矩阵是按列表示的,因此最终的公式需要变化一下,即