在二维坐标系xoy中,存在一个向量a=[x,y],将其绕原点O逆时针旋转 θ \theta θ角度,定义逆时针旋转为正,得到新的向量a’=[x’,y’],如图所示。 设向量a的长度为r,则容易得到a的坐标为 [ x y ] = r [ cos λ sin λ ] \begin{bmatrix} x \\ y \\ \end{bmatrix} = r \begin{bmatrix} \cos\lambda \\ \sin\lambda \end{bmatrix} [xy]=r[cosλsinλ] 向量a’的长度同样为r,可以得到a’的坐标为 [ x ′ y ′ ] = r [ cos ( λ + θ ) sin ( λ + θ ) ] = r [ cos λ cos θ − sin λ sin θ sin λ cos θ + cos λ sin θ ] = [ x cos θ − y sin θ y cos θ + x sin θ ] = [ cos θ − sin θ sin θ cos θ ] [ x y ] \begin{bmatrix} x' \\ y' \end{bmatrix} = r \begin{bmatrix} \cos(\lambda + \theta) \\ \sin(\lambda + \theta) \end{bmatrix} = r \begin{bmatrix} \cos\lambda\cos\theta-\sin\lambda\sin\theta \\ \sin\lambda\cos\theta+\cos\lambda\sin\theta \end{bmatrix} = \begin{bmatrix} x\cos\theta-y\sin\theta \\ y\cos\theta+x\sin\theta \end{bmatrix} = \begin{bmatrix} \cos\theta & -\sin\theta \\ \sin\theta & \cos\theta \end{bmatrix} \begin{bmatrix} x \\ y \end{bmatrix} [x′y′]=r[cos(λ+θ)sin(λ+θ)]=r[cosλcosθ−sinλsinθsinλcosθ+cosλsinθ]=[xcosθ−ysinθycosθ+xsinθ]=[cosθsinθ−sinθcosθ][xy] 所以可以得到旋转矩阵为 C n b = [ cos θ − sin θ sin θ cos θ ] C_{n}^{b} = \begin{bmatrix} \cos\theta & -\sin\theta \\ \sin\theta & \cos\theta \end{bmatrix} Cnb=[cosθsinθ−sinθcosθ]
和向量的旋转不同的是,坐标轴的旋转是将坐标轴xoy绕原点O进行旋转,向量保持不动。将坐标轴xoy绕原点O逆时针旋转 θ \theta θ角度,定义逆时针旋转为正,得到一个新的坐标系x’oy’,如图所示。
向量a在坐标系xoy中的坐标为 [ x y ] = r [ cos λ sin λ ] \begin{bmatrix} x \\ y \\ \end{bmatrix} = r \begin{bmatrix} \cos\lambda \\ \sin\lambda \end{bmatrix} [xy]=r[cosλsinλ] 根据几何关系可以得到向量a’的坐标为 { x ′ = x cos θ + y sin θ y ′ = y cos θ − x sin θ \begin{cases} x' = x \cos\theta + y \sin\theta \\ y' = y \cos\theta - x \sin\theta \end{cases} {x′=xcosθ+ysinθy′=ycosθ−xsinθ 整理成矩阵形式可以得到 [ x ′ y ′ ] = [ cos θ sin θ − sin θ cos θ ] [ x y ] \begin{bmatrix} x' \\ y' \end{bmatrix} = \begin{bmatrix} \cos\theta & \sin\theta \\ -\sin\theta& \cos\theta \end{bmatrix} \begin{bmatrix} x \\ y \end{bmatrix} [x′y′]=[cosθ−sinθsinθcosθ][xy] 可以得到旋转矩阵为 C b n = [ cos θ sin θ − sin θ cos θ ] C_b^{n}= \begin{bmatrix} \cos\theta & \sin\theta \\ -\sin\theta& \cos\theta \end{bmatrix} Cbn=[cosθ−sinθsinθcosθ] 我们对比一下向量旋转矩阵 C n b C_n^{b} Cnb和坐标轴旋转矩阵 C b n C_b^{n} Cbn,可以看到 C n b = ( C b n ) T C_n^{b}=(C_b^{n})^{T} Cnb=(Cbn)T,向量旋转矩阵和坐标轴旋转矩阵刚好为转置的关系。因为将向量a逆时针旋转 θ \theta θ角度,相当于将坐标轴顺时针旋转 − θ -\theta −θ角度,将 − θ -\theta −θ带入 C b n C_b^{n} Cbn中便可以得到 C n b C_n^b Cnb。
定义坐标系Oxyz满足右手系,存在一个向量a的坐标为 [ x y z ] T \begin{bmatrix} x & y & z \end{bmatrix}^T [xyz]T,将坐标轴Oxyz绕z轴逆时针旋转 θ \theta θ角度,定义右手拇指指向z轴正方向,四指弯曲指向方向为正方向,得到新的坐标系Ox’y’z’,向量a在新坐标系Ox’y’z’下的坐标为 [ x ′ y ′ z ′ ] T \begin{bmatrix} x' & y' & z' \end{bmatrix}^T [x′y′z′]T,如图所示。
坐标轴绕z轴旋转,向量a在z轴上的坐标不变,x轴和y轴上的坐标和二维旋转中的坐标轴旋转相同,所以容易得到向量a在新坐标系Ox’y’z’下的坐标为 [ x ′ y ′ z ′ ] = [ cos θ sin θ 0 − sin θ cos θ 0 0 0 1 ] [ x y z ] \begin{bmatrix} x' \\ y' \\ z' \end{bmatrix} = \begin{bmatrix} \cos\theta & \sin\theta & 0 \\ -\sin\theta & \cos\theta & 0 \\ 0 & 0 & 1 \end{bmatrix} \begin{bmatrix} x \\ y \\ z \end{bmatrix} ⎣⎡x′y′z′⎦⎤=⎣⎡cosθ−sinθ0sinθcosθ0001⎦⎤⎣⎡xyz⎦⎤ 所以绕z轴旋转的旋转矩阵为 C z = [ cos θ sin θ 0 − sin θ cos θ 0 0 0 1 ] C_z = \begin{bmatrix} \cos\theta & \sin\theta & 0 \\ -\sin\theta & \cos\theta & 0 \\ 0 & 0 & 1 \end{bmatrix} Cz=⎣⎡cosθ−sinθ0sinθcosθ0001⎦⎤
和绕z轴旋转相似,定义右手拇指指向y轴正方向,四指弯曲指向方向为正方向。几何推导关系和绕z轴旋转相似,不再进行推导,直接给出旋转矩阵如下 C y = [ cos θ 0 − sin θ 0 1 0 sin θ 0 cos θ ] C_y = \begin{bmatrix} \cos\theta & 0 & -\sin\theta \\ 0 & 1 & 0 \\ \sin\theta & 0 & \cos\theta \\ \end{bmatrix} Cy=⎣⎡cosθ0sinθ010−sinθ0cosθ⎦⎤
定义右手拇指指向x轴正方向,四指弯曲指向方向为方向。旋转矩阵为 C x = [ 1 0 0 0 cos θ sin θ 0 − sin θ cos θ ] C_x = \begin{bmatrix} 1 & 0 & 0 \\ 0 & \cos\theta & \sin\theta \\ 0 & -\sin\theta & \cos\theta \\ \end{bmatrix} Cx=⎣⎡1000cosθ−sinθ0sinθcosθ⎦⎤
向量的旋转和二维坐标系中的向量旋转相似,绕某一个坐标轴进行旋转时,相当于坐标轴进行反方向的旋转,所以只需要将旋转的角度取负值代入对应的坐标轴旋转矩阵即可。
注:欢迎转载,转载请注明出处,谢谢!!!