三维旋转矩阵
二维旋转

先考虑二维的旋转,根据三角函数的关系,可以得到:
{x′=∣OP∣⋅cos(α+β)=∣OP∣⋅(cosα⋅cosβ−sinα⋅sinβ)=x⋅cosβ−y⋅sinβy′=∣OP∣⋅sin(α+β)=∣OP∣⋅(cosα⋅sinβ+sinα⋅cosβ)=x⋅sinβ+y⋅cosβ\begin{cases}x'=\begin{vmatrix}OP\end{vmatrix}\cdot\cos(\alpha+\beta)=\begin{vmatrix}OP\end{vmatrix}\cdot(\cos\alpha\cdot\cos\beta-\sin\alpha\cdot\sin\beta)=x\cdot\cos\beta-y\cdot\sin\beta\\y'=\begin{vmatrix}OP\end{vmatrix}\cdot\sin(\alpha+\beta)=\begin{vmatrix}OP\end{vmatrix}\cdot(\cos\alpha\cdot\sin\beta+\sin\alpha\cdot\cos\beta)=x\cdot\sin\beta+y\cdot\cos\beta\end{cases}{x′=OP⋅cos(α+β)=OP⋅(cosα⋅cosβ−sinα⋅sinβ)=x⋅cosβ−y⋅sinβy′=OP⋅sin(α+β)=OP⋅(cosα⋅sinβ+sinα⋅cosβ)=x⋅sinβ+y⋅cosβ
用矩阵形式表示:
[x′y′]=[cosβ−sinβsinβcosβ].[xy]\begin{bmatrix}x^{'}\\y^{'}\end{bmatrix}=\begin{bmatrix}\cos\beta&-\sin\beta\\\sin\beta&\cos\beta\end{bmatrix}.\begin{bmatrix}x\\y\end{bmatrix}[x′y′]=[cosβsinβ−sinβcosβ].[xy]
旋转矩阵即为:
[cosβ−sinβsinβcosβ]\begin{bmatrix}\cos\beta&-\sin\beta\\\sin\beta&\cos\beta\end{bmatrix}[cosβsinβ−sinβcosβ]
三维旋转
借助二维旋转矩阵,可以推广到三维的情况中,这里我们考虑X,Y,ZX,Y,ZX,Y,Z的情况(暂时只考虑了正方向的转动,逆方向是正向旋转矩阵的逆矩阵,由于旋转矩阵是正交阵,所以逆矩阵是转置矩阵)
1. 绕zzz轴

绕zzz轴比较简单,直接增加一个zzz轴,坐标zzz不变即可:
{x′=x⋅cosβ−y⋅sinβy′=x⋅sinβ+y⋅cosβz′=z[x′y′z′]=[cosβ−sinβ0sinβcosβ0001]⋅[xyz]\begin{gathered}
\begin{cases}x^{'}=x\cdot\cos\beta-y\cdot\sin\beta\\y^{'}=x\cdot\sin\beta+y\cdot\cos\beta\\z^{'}=z\end{cases} \\
\begin{bmatrix}x^{'}\\y^{'}\\z^{'}\end{bmatrix}=\begin{bmatrix}{\cos\beta}&-\sin\beta&0\\\sin\beta&\cos\beta&0\\0&0&1\end{bmatrix}\cdot\begin{bmatrix}x\\y\\z\end{bmatrix}
\end{gathered}⎩⎨⎧x′=x⋅cosβ−y⋅sinβy′=x⋅sinβ+y⋅cosβz′=zx′y′z′=cosβsinβ0−sinβcosβ0001⋅xyz
2. 绕yyy轴

同绕zzz轴类似,让yyy不变即可;
{x′=x⋅cosβ+z⋅sinβy′=yz′=−x⋅sinβ+z⋅cosβ[x′y′z′]=[cosβ0sinβ010−sinβ0cosβ]⋅[xyz]\begin{gathered}
\begin{cases}x^{'}=x\cdot\cos\beta+z\cdot\sin\beta\\y^{'}=y\\z^{'}=-x\cdot\sin\beta+ z\cdot\cos\beta\end{cases} \\
\begin{bmatrix}x^{'}\\y^{'}\\z^{'}\end{bmatrix}=\begin{bmatrix}{\cos\beta}&0&\sin\beta\\0&1&0\\-\sin\beta&0&\cos\beta\end{bmatrix}\cdot\begin{bmatrix}x\\y\\z\end{bmatrix}
\end{gathered}⎩⎨⎧x′=x⋅cosβ+z⋅sinβy′=yz′=−x⋅sinβ+z⋅cosβx′y′z′=cosβ0−sinβ010sinβ0cosβ⋅xyz
3. 绕xxx轴

{y′=y⋅cosβ−z⋅sinβz′=y⋅sinβ+z⋅cosβx′=x[y′z′x′]=[cosβ−sinβ0sinβcosβ0001]⋅[yzx]⇒[x′y′z′]=[1000cosβ−sinβ0sinβcosβ]⋅[xyz]\begin{aligned}
&\begin{cases}y^{'}=y\cdot\cos\beta-z\cdot\sin\beta\\z^{'}=y\cdot\sin\beta+z\cdot\cos\beta\\x^{'}=x\end{cases} \\
&\begin{bmatrix}y^{'}\\z^{'}\\x^{'}\end{bmatrix}=\begin{bmatrix}\cos\beta&-\sin\beta&0\\\sin\beta&\cos\beta&0\\0&0&1\end{bmatrix}\cdot\begin{bmatrix}y\\z\\x\end{bmatrix}\Rightarrow\begin{bmatrix}x^{'}\\y^{'}\\z^{'}\end{bmatrix}=\begin{bmatrix}1&0&0\\0&\cos\beta&-\sin\beta\\0&\sin\beta&\cos\beta\end{bmatrix}\cdot\begin{bmatrix}x\\y\\z\end{bmatrix}
\end{aligned}⎩⎨⎧y′=y⋅cosβ−z⋅sinβz′=y⋅sinβ+z⋅cosβx′=xy′z′x′=cosβsinβ0−sinβcosβ0001⋅yzx⇒x′y′z′=1000cosβsinβ0−sinβcosβ⋅xyz
本文详细解释了二维旋转矩阵的原理,并扩展到三维空间,介绍了绕z、y、x轴旋转时的矩阵变换,强调了正交性和逆矩阵的关系。

8万+

被折叠的 条评论
为什么被折叠?



