三维旋转矩阵的详细推导过程:


我们在进行旋转矩阵推导的时候应该要明白什么是左手坐标系和右手坐标系,要知道如何判断坐标系的方向。

左手坐标系:以左手大拇指为X轴正方向食指为Y轴正方向,此时大拇指和食指成一个八字形,然后加入中指,这个时候三个手指互相垂直,中指指的方向为Z轴正方向

具体的图示如下:

三位矩阵旋转投影python 三维旋转矩阵推导_二维


右手坐标系:以以右手大拇指为X轴正方向食指为Y轴正方向,此时大拇指和食指成一个八字形,然后加入中指,这个时候三个手指互相垂直,中指指的方向为Z轴正方向

具体图示如下:

三位矩阵旋转投影python 三维旋转矩阵推导_二维_02


弄清楚了左右手坐标系,我们还要知道旋转的正方向是以逆时针为正方向的。

三维空间旋转,可以简单理解为,绕哪个轴旋转,哪个轴的值不变,然后将其转换为二维平面上的向量进行计算即可。

我们定义一个三维空间中的点P(X,Y,Z),然后这个点在XOY平面上的投影点为M(x,y,0),在XOZ平面上的投影为点N(x,0,z),在YOZ平面上的投影为点Q(0, y,z)。这个坐标系为右手坐标系。(图是网上摘录的,有错误,以描述的为准。)

三位矩阵旋转投影python 三维旋转矩阵推导_c++_03


以空间点P(X,Y,Z)在XOY平面上的投影为例,求取绕Z轴旋转的旋转矩阵,绕X轴与绕Y轴旋转的与绕Z轴的同理。

绕Z轴的投影如下图所示,旋转以逆时针为正方向旋转。

三位矩阵旋转投影python 三维旋转矩阵推导_二维_04


旋转前点P(X,Y,Z),旋转后点P’(X’,Y’,Z’),旋转前点M(x,y),旋转后点M(x’,y’);

旋转对应公式如下:

三位矩阵旋转投影python 三维旋转矩阵推导_二维_05


三位矩阵旋转投影python 三维旋转矩阵推导_二维_06


剩下的推导是手写的,因为软件打公式有些麻烦,还请大家见谅。

三位矩阵旋转投影python 三维旋转矩阵推导_三位矩阵旋转投影python_07


绕其他轴旋转的推导过程跟绕Z轴一样,这里不再细推了。

最后如果要是以Z->Y->X的顺序进行旋转,则最后的旋转矩阵应该为

R = RxRyRz这个顺序相乘,如果是X->Y->Z的顺序进行旋转,最后的旋转矩阵应该为R= RzRyRx这个顺序相乘,因为矩阵是依次左乘的。