三维坐标旋转矩阵及其推导过程

一.绕坐标轴逆时针旋转

任何维的旋转可以表述为向量与合适尺寸的方阵的乘积。最终一个旋转等价于在另一个不同坐标系下对点位置的重新表述。 坐标系旋转角度θ则等同于将目标点围绕坐标原点反方向旋转同样的角度θ。

若以坐标系的三个坐标轴X、Y、Z分别作为旋转轴,则点实际上只在垂直坐标轴的平面上作二维旋转。

假设三维坐标系(右手坐标系,拇指即指向X轴的正方向。伸出食指和中指,食指指向Y轴的正方向,中指所指示的方向即是Z轴的正方向。要确定轴的正旋转方向,用右手的大拇指指向轴的正方向,弯曲手指。那么手指所指示的方向即是轴的正旋转方向)中的某一向量,其在直角坐标系中的图如图1所示。其中点P在XY平面、XZ平面、YZ平面的投影分别为点M、点Q、点N。

1、绕Z轴逆时针旋转θ角

绕Z轴旋转,相当于在XY平面的投影OM绕原点逆时针旋转,如下图所示,OM旋转θ角到OM’。 


设旋转前的坐标为(x,y,z)$^T$,旋转后的坐标为(x',y',z')$^T$,则点M的坐标为(x,y)$^T$,点M'的坐标为(x',y')$^T$。由此可得:

x=OMcos\varphi                         y=OMsin\varphi

x'=OM'cos(\varphi+\theta )             y'=OM'sin(\varphi+\theta )

OM=OM'

对于和进行三角展开可得: 

x'=OM(cos\varphi cos\theta -sin\varphi sin\theta )=xcos\theta -ysin\theta

y'=OM(sin\varphi cos\theta +cos\varphi sin\theta )=ycos\theta +xsin\theta

且有z'=z;可得绕Z轴旋转角的旋转矩阵为: 

R$_z$(\theta )=\begin{bmatrix} cos\theta &-sin\theta &0 \\ sin\theta &cos\theta &0 \\ 0 &0 & 1 \end{bmatrix}

当点云处于XY平面,且正前方(如坦克炮口对准的方向)为Y轴正方向时,这里的\theta为偏航角/方位角

以此类推绕别的轴逆时针旋转的矩阵

2. 绕X轴逆时针旋转θ角

R$_x$(\theta )=\begin{bmatrix} 1 &0&0 \\ 0 &cos\theta &-sin\theta \\ 0 &sin\theta &cos\theta \end{bmatrix}

这里的\theta为俯仰角

3. 绕Y轴逆时针旋转θ角

R$_y$(\theta )=\begin{bmatrix} cos\theta &0 &sin\theta \\ 0 &1 &0 \\ -sin\theta &0 &cos\theta \end{bmatrix}

这里的\theta为横滚角

以上旋转矩阵都是在右手坐标系下计算的。三维旋转矩阵就可由以上三个矩阵相乘得到。 
这里的旋转矩阵都是需要左乘的,而且以逆时针为正。R是一个旋转矩阵,X是一个三维列向量[x,y,z]’。 
RX就是把X旋转。

二、绕坐标轴顺时针旋转

如果是顺时针旋转\theta角,则相当于逆时针旋转-\theta角,所以把上面的旋转矩阵中的\theta都用-\theta替换即可。得到旋转矩阵如下:

R$_z$(\theta )=\begin{bmatrix} cos\theta &sin\theta &0 \\ -sin\theta &cos\theta &0 \\ 0 &0 & 1 \end{bmatrix}

R$_x$(\theta )=\begin{bmatrix} 1 &0&0 \\ 0 &cos\theta &sin\theta \\ 0 &-sin\theta &cos\theta \end{bmatrix}

R$_y$(\theta )=\begin{bmatrix} cos\theta &0 &-sin\theta \\ 0 &1 &0 \\ sin\theta &0 &cos\theta \end{bmatrix}

参考资料:https://blog.csdn.net/lz20120808/article/details/50809397


版权声明:本文为liudejun8888原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。