Skip to content

旋转

这里我们先不考虑平移,而且进一步限制物体只围绕着原点旋转,旋转角度为θ

2D

经常认为逆时针是正方向,顺时针是反方向

img.png

对应的转换矩阵为:

M=[pq]=[cosθsinθsinθcosθ]

3D

在左手坐标系、右手坐标系中,而且根据所处的位置不同看到的正方向也是不同的

例如在左手坐标系中判断正方向时,左手大拇指方向朝向对应轴的正端点,四指弯曲的方向为旋转的正方向。

从哪里看也会影响正方向的判断,一般认为是从原点看向对应端点,对应表格中的从轴的负端点向正端点看

img.png

img.png

绕坐标轴旋转

绕x轴旋转

img.png

去掉球体,简化后的图形

img.png

可以得出转换矩阵为:

M=[pqr]=[1000cosθsinθ0sinθcosθ]

绕y轴旋转

img.png

可以得出转换矩阵为:

M=[pqr]=[cosθ0sinθ010sinθ0cosθ]

绕z轴旋转

img.png

可以得出转换矩阵为:

M=[pqr]=[cosθsinθ0sinθcosθ0001]

绕任意轴旋转

在三维中,向量绕任意轴旋转情况更复杂,但是也更少见。这里我们依旧不考虑平移,假设旋转轴通过原点。

假设旋转轴为n且为单位向量,旋转角度为θ,需要旋转的向量是v,我们要计算出满足以下条件的矩阵:

vR(n,θ)=v

nrθ表示转换后的向量

推导过程如下:

img.png

将向量v拆分为水平方向上的向量:

v

垂直方向上的向量:

v

而且

v=v+v

对应的旋转后的向量也满足:

v=v+v

而且旋转时,旋转后向量水平方向上的分量与原向量水平方向的分量相等

v=v=nvcosαn=nvncosαn2=(v·n)n

所以我们只需要计算出v'即可计算出旋转后向量v'

原向量v的水平分量旋转轴n构成一个平面,并且向量w为该平面的法向量,根据叉乘的几何意义可知:

w=n×v

而且向量w的长度等于向量n和向量v构成的平行四边形面积,而且向量n与向量v相垂直,所以围成的多边形是矩形。又因为向量n为单位向量,长度固定为1,所以向量w的长度等于向量v的长度

旋转后的向量的垂直分量可以表示为:

v=vcosθ+wsinθ

将已知的信息带入上述公式可知:

v=v+v=(v·n)n+vcosθ+(n×v)sinθ=(v·n)n+(v(v·n)n)cosθ+(n×v)sinθ

将三维坐标轴的基向量分别带入上述表表达式

将x轴的基向量带入可知

p=[100]p=(p·n)n+(p(p·n)n)cosθ+(n×p)sinθ=([100]·[nxnynz])[nxnynz]+([100]([100]·[nxnynz])[nxnynz])cosθ+([nxnynz]×[100])sinθ=[nx2(1cosθ)+cosθnxny(1cosθ)+nzsinθnxnz(1cosθ)nysinθ]

相应的计算出q'、r'

q=[010]q=[nxny(1cosθ)nzsinθny2(1cosθ)+cosθnynz(1cosθ)+nxsinθ]r=[001]r=[nxnz(1cosθ)+nysinθnynz(1cosθ)nxsinθnz2(1cosθ)+cosθ]

最终得到的矩阵为:

R(n,θ)=[pqr]=[nx2(1cosθ)+cosθnxny(1cosθ)+nzsinθnxnz(1cosθ)nysinθnxny(1cosθ)nzsinθny2(1cosθ)+cosθnynz(1cosθ)+nxsinθnxnz(1cosθ)+nysinθnynz(1cosθ)nxsinθnz2(1cosθ)+cosθ]

INFO

为什么这个等式是成立的呢?

v=vcosθ+wsinθ

img.png

已知

AB=AD=AC

推导过程如下:

AG=ABAGAB=ABADcosθAB=AB·cosθAF=ACAFAC=ACADsinθAC=AC·sinθAD=AG+AF=AB·cosθ+AC·sinθ