1. 程式人生 > >旋轉矩陣的推導過程

旋轉矩陣的推導過程

剛體變換

定義

一個對映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=[100]TX_A=[1\ 0\ 0]^T YA=

[010]TY_A =[0\ 1\ 0]^T

在A座標系下的B座標系

XB=cosθXA+sinθYA=[cosθ00]T+[0sinθ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θ00]T+[0cosθ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

構造矩陣

XBYBX_B\ Y_B放到一個矩陣裡Rab=[XBYB]R_{ab}=[X_B \ Y_B],將之稱為旋轉矩陣

意義

將一個點的座標值在不同的基底下進行變換 P點在B座標系下為PB(a,b)P_B(a,b),可以進行一下變換 P=[XBYB][ab]=aXB+bYB=(cosθXA+sinθYA)a+(sinθXA+cosθYA)b=[XAYA][cosθsinθsinθcosθ][ab]=[XAYA]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} 可以看到,我們把基底從[XBYB][X_B\ Y_B]換成了[XAYA][X_A\ Y_A],也就是同一個點,在B座標系下的座標為[ab]T[a \ b]^T,在A座標系下的座標為R[ab]TR[a \ b]^T,可以理解為是空間中同一個點在不同的座標系中(座標系旋轉了)的表示,也可以理解為同一個座標系下,是點在運動(假設座標系沒動,那麼動的就是點)。

平移變換

剛體變換除了旋轉外還有平移運動,假設變換後的座標系B的原點在原來座標系A下為PAB=[x1y1]TP_{AB}=[x_1 \ y_1]^TPA=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}