旋转矩阵的推导过程

刚体变换

定义

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


旋转矩阵

在这里插入图片描述

A坐标系

X A = [ 1   0 ] T X_A=[1\ 0]^T
Y A = [ 0   1 ] T Y_A =[0\ 1]^T

在A坐标系下的B坐标系

X B = c o s θ X A X A + s i n θ X A Y A = [ c o s θ   0   0 ] T + [ 0   s i n θ   0 ] T = [ c o s θ   s i n θ   0 ] T X_B=cos\theta \|X_A\|X_A+sin\theta\|X_A\| Y_A=[cos\theta \ 0 \ 0]^T+[0\ sin\theta\ 0]^T=[cos\theta \ sin\theta \ 0]^T
Y B = s i n θ Y A X A + c o s θ Y A Y A = [ s i n θ   0   0 ] T + [ 0   c o s θ   0 ] T = [ s i n θ   c o s θ   0 ] T Y_B=-sin\theta \|Y_A\|X_A+cos\theta \|Y_A\|Y_A=[-sin\theta \ 0 \ 0]^T+[0\ cos\theta\ 0]^T=[-sin\theta \ cos\theta \ 0]^T

构造矩阵

X B   Y B X_B\ Y_B 放到一个矩阵里 R a b = [ X B   Y B ] R_{ab}=[X_B \ Y_B] ,将之称为旋转矩阵

意义

将一个点的坐标值在不同的基底下进行变换
P点在B坐标系下为 P B ( a , b ) P_B(a,b) ,可以进行一下变换
P = [ X B   Y B ] [ a b ]      = a X B + b Y B      = ( c o s θ X A + s i n θ Y A ) a + ( s i n θ X A + c o s θ Y A ) b      = [ X A   Y A ] [ c o s θ s i n θ s i n θ c o s θ ] [ a b ]      = [ X A   Y A ] R a b [ a b ] 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}
可以看到,我们把基底从 [ X B   Y B ] [X_B\ Y_B] 换成了 [ X A   Y A ] [X_A\ Y_A] ,也就是同一个点,在B坐标系下的坐标为 [ a   b ] T [a \ b]^T ,在A坐标系下的坐标为 R [ a   b ] T R[a \ b]^T ,可以理解为是空间中同一个点在不同的坐标系中(坐标系旋转了)的表示,也可以理解为同一个坐标系下,是点在运动(假设坐标系没动,那么动的就是点)。


平移变换

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


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

绕Z轴旋转的旋转矩阵

R Z ( θ ) = [ c o s θ s i n θ 0 s i n θ c o s θ 0 0 0 1 ] R_Z(\theta)=\begin{bmatrix} cos\theta & -sin\theta &0\\ sin\theta & cos\theta & 0 \\0&0&1\end{bmatrix}

绕Y轴旋转的旋转矩阵

R Y ( θ ) = [ c o s θ 0 s i n θ 0 1 0 s i n θ 0 c o s θ ] R_Y(\theta)=\begin{bmatrix} cos\theta &0& sin\theta \\ 0&1&0\\ -sin\theta &0& cos\theta \end{bmatrix}

绕X轴旋转的旋转矩阵

R X ( θ ) = [ 1 0 0 0 c o s θ s i n θ 0 s i n θ c o s θ ] R_X(\theta)=\begin{bmatrix} 1&0&0\\0&cos\theta&-sin\theta \\0&sin\theta&cos\theta\end{bmatrix}

猜你喜欢

转载自blog.csdn.net/Dang_boy/article/details/83509819