旋转矩阵的推导过程

刚体变换

定义

一个映射g:R3R3\R^3 \to \R^3如果满足一下两个特性,则是刚体变换
1. 长度保持不变:g(p)g(q)=pq\Vert g(p)-g(q)=\Vert p-q\Vert, 所有p,qR3p,q\in\R^3
2. 叉乘保持不变:g(v×w)=g(v)×g(w)g_*(v×w)=g_*(v)×g_*(w),所有向量v,wR3v,w\in\R^3


旋转矩阵

旋转矩阵的推导过程

A坐标系

XA=[1 0 0]TX_A=[1\ 0\ 0]^T
YA=[0 1 0]TY_A =[0\ 1\ 0]^T

在A坐标系下的B坐标系

XB=cosθXA+sinθYA=[cosθ 0 0]T+[0 sinθ 0]T=[cosθ sinθ 0]TX_B=cos\theta X_A+sin\theta Y_A=[cos\theta \ 0 \ 0]^T+[0\ sin\theta\ 0]^T=[cos\theta \ sin\theta \ 0]^T
YB=sinθXA+cosθYA=[sinθ 0 0]T+[0 cosθ 0]T=[sinθ cosθ 0]TY_B=-sin\theta X_A+cos\theta Y_A=[-sin\theta \ 0 \ 0]^T+[0\ cos\theta\ 0]^T=[-sin\theta \ cos\theta \ 0]^T

构造矩阵

XB YBX_B\ Y_B放到一个矩阵里Rab=[XB YB]R_{ab}=[X_B \ Y_B],将之称为旋转矩阵

意义

将一个点的坐标值在不同的基底下进行变换
P点在B坐标系下为PB(a,b)P_B(a,b),可以进行一下变换
P=[XB YB][ab]    =aXB+bYB    =(cosθXA+sinθYA)a+(sinθXA+cosθYA)b    =[XA YA][cosθsinθsinθcosθ][ab]    =[XA YA]Rab[ab]P=[X_B\ Y_B]\begin{bmatrix} a \\b\\ \end{bmatrix}\\ \ \ \ \ =aX_B+bY_B \\ \ \ \ \ =(cos\theta X_A+sin\theta Y_A)a+(-sin\theta X_A+cos\theta Y_A)b\\ \ \ \ \ =[X_A\ Y_A]\begin{bmatrix} cos\theta & -sin\theta \\ sin\theta & cos\theta \\ \end{bmatrix}\begin{bmatrix} a \\b \\ \end{bmatrix}\\ \ \ \ \ =[X_A\ Y_A]R_{ab}\begin{bmatrix} a \\b \\ \end{bmatrix}
可以看到,我们把基底从[XB YB][X_B\ Y_B]换成了[XA YA][X_A\ Y_A],也就是同一个点,在B坐标系下的坐标为[a b]T[a \ b]^T,在A坐标系下的坐标为R[a b]TR[a \ b]^T,可以理解为是空间中同一个点在不同的坐标系中(坐标系旋转了)的表示,也可以理解为同一个坐标系下,是点在运动(假设坐标系没动,那么动的就是点)。


平移变换

刚体变换除了旋转外还有平移运动,假设变换后的坐标系B的原点在原来坐标系A下为PAB=[x1 y1]TP_{AB}=[x_1 \ y_1]^T
PA=RABPB+PABP_A=R_{AB}P_B+P_{AB}
结合以上的推导,我们可以将刚体变换写成齐次坐标的形式
PA=[RABPAB01][PB1]P_A=\begin{bmatrix} R_{AB} & P_{AB}\\ 0 & 1\end{bmatrix}\begin{bmatrix} P_{B} \\ 1\end{bmatrix}


以上的推导同样可以拓展到三维空间里

绕Z轴旋转的旋转矩阵

RZ(θ)=[cosθsinθ0sinθcosθ0001]R_Z(\theta)=\begin{bmatrix} cos\theta & -sin\theta &0\\ sin\theta & cos\theta & 0 \\0&0&1\end{bmatrix}

绕Y轴旋转的旋转矩阵

RY(θ)=[cosθ0sinθ010sinθ0cosθ]R_Y(\theta)=\begin{bmatrix} cos\theta &0& sin\theta \\ 0&1&0\\ -sin\theta &0& cos\theta \end{bmatrix}

绕X轴旋转的旋转矩阵

RX(θ)=[1000cosθsinθ0sinθcosθ]R_X(\theta)=\begin{bmatrix} 1&0&0\\0&cos\theta&-sin\theta \\0&sin\theta&cos\theta\end{bmatrix}