旋转平移

2020-11-27  本文已影响0人  VaultHunter

二维旋转

二维
\left\{\begin{matrix} x=r\cos \phi \\ y=r\sin \phi \end{matrix}\right.

\left\{\begin{matrix} x'=r\cos (\phi+\theta) \\ x'=r\sin (\phi+\theta) \end{matrix}\right.

三角函数展开:

\left\{\begin{matrix} x′=r\cos(\theta)\cos(\phi)−r\sin(\theta)\sin(\phi)\\ y′=r\sin(\theta)\cos(\phi)+y\cos(\theta)\sin(\phi) \end{matrix}\right.

带入xy公式:

\left\{\begin{matrix} x′=x\cos(\theta)−y\sin(\theta)\\ y′=x\sin(\theta)+y\cos(\theta) \end{matrix}\right.

转为矩阵形式:

\begin{bmatrix} x' \\ y' \end{bmatrix} = \begin{bmatrix} \cos(\theta) &-\sin(\theta) \\ \sin(\theta) &\cos(\theta) \end{bmatrix} \ast \begin{bmatrix} x\\ y \end{bmatrix}

加入平移引入齐次坐标:

\begin{bmatrix} x' \\ y' \\ 1 \end{bmatrix} = \begin{bmatrix} \cos(\theta) &-\sin(\theta) &t_x\\ \sin(\theta) &\cos(\theta) &t_y\\ 0& 0&1 \end{bmatrix} \ast \begin{bmatrix} x\\ y\\ 1 \end{bmatrix}

三维旋转(齐次坐标下)

三维坐标系定义
绕X轴旋转

\begin{bmatrix} x' \\ y' \\ z' \\ 1 \end{bmatrix} = \begin{bmatrix} 1 & 0 & 0& 0\\ 0 & \cos(\theta) &-\sin(\theta) &0 \\ 0 & \sin(\theta) &\cos(\theta)&0\\ 0 & 0& 0&1 \end{bmatrix} \ast \begin{bmatrix} x\\ y\\ z\\ 1 \end{bmatrix}

绕Y轴旋转

\begin{bmatrix} x' \\ y' \\ z' \\ 1 \end{bmatrix} = \begin{bmatrix} \sin(\theta) & 0 & \cos(\theta) &0\\ 0 &1 &0 &0\\ \cos(\theta) &0 &-\sin(\theta) &0\\ 0 & 0 & 0 &1 \end{bmatrix} \ast \begin{bmatrix} x\\ y\\ z\\ 1 \end{bmatrix}

绕Z轴旋转

\begin{bmatrix} x' \\ y' \\ z' \\ 1 \end{bmatrix} = \begin{bmatrix} \cos(\theta) &-\sin(\theta) &0 &0 \\ \sin(\theta) &\cos(\theta) &0 &0 \\ 0 &0 &1 &0\\ 0& 0& 0& 1 \end{bmatrix} \ast \begin{bmatrix} x\\ y\\ z\\ 1 \end{bmatrix}

如何求旋转矩阵

知道源坐标系及目标坐标系在原坐标系下的定义即可求得旋转矩阵

点乘叉乘的定义
注意:numpy中点乘结果为标量 叉乘结果为矢量 外积结果是矩阵

在刚体运动中,同一个向量在各个坐标系下的长度和夹角不发生变换,这种变换称为欧式变换,由旋转和平移组成

设两个单位正交基,\begin{bmatrix} e_1,e_2,e_3\end{bmatrix}\begin{bmatrix} e_1^,,e_2^,,e_3^,\end{bmatrix}e_i为3x1列向量。

即已知源坐标系e_i和目标坐标系e_i^,及向量a在源坐标系的定义

对于同一个向量a=[a_1,a_2,a_3]^T
\begin{bmatrix}e_1,e_2,e_3\end{bmatrix} \begin{bmatrix} a_1\\ a_2\\ a_3 \end{bmatrix} = \begin{bmatrix}e_1^,,e_2^,,e_3^,\end{bmatrix} \begin{bmatrix} a_1^,\\ a_2^,\\ a_3^, \end{bmatrix}
将坐标系e旋转为坐标系e^,,需将上式左边乘以\begin{bmatrix}e_1^,,e_2^,,e_3^,\end{bmatrix}^{-1}.

单位正交矩阵,单位正交矩阵的性质其逆矩阵等于其转置矩阵:\begin{bmatrix}e_1^,,e_2^,,e_3^,\end{bmatrix}^{-1} = \begin{bmatrix}e_1^,,e_2^,,e_3^,\end{bmatrix}^{T}

得到如下公式:
\begin{bmatrix} a_1^,\\ a_2^,\\ a_3^, \end{bmatrix} = \begin{bmatrix}e_1^{,T}\\e_2^{,T}\\e_3^{,T}\end{bmatrix} \begin{bmatrix}e_1,e_2,e_3\end{bmatrix} \begin{bmatrix} a_1\\ a_2\\ a_3 \end{bmatrix}
展开
\begin{bmatrix} a_1^,\\ a_2^,\\ a_3^, \end{bmatrix} = \begin{bmatrix} e_1^{,T}e_1 & e_1^{,T}e_2 &e_1^{,T}e_2 \\ e_2^{,T}e_1 & e_2^{,T}e_2 &e_2^{,T}e_2 \\ e_3^{,T}e_1 & e_3^{,T}e_2 &e_3^{,T}e_2 \end{bmatrix} \begin{bmatrix} a_1\\ a_2\\ a_3 \end{bmatrix}
R= \begin{bmatrix} e_1^{,T}e_1 & e_1^{,T}e_2 &e_1^{,T}e_2 \\ e_2^{,T}e_1 & e_2^{,T}e_2 &e_2^{,T}e_2 \\ e_3^{,T}e_1 & e_3^{,T}e_2 &e_3^{,T}e_2 \end{bmatrix}

其中R为旋转矩阵,加上平移向量t改为齐次坐标
\begin{bmatrix} a^,\\ 1 \end{bmatrix} = \begin{bmatrix} R & t\\ 0^T &1 \end{bmatrix} \begin{bmatrix} a\\ 1 \end{bmatrix}

参考资料

当仅知道原坐标系和目标坐标系时

以相机坐标系旋转为例
相机坐标系a满足以下条件:
a=\begin{bmatrix} 1&0&0\\ 0&1&0\\ 0&0&1 \end{bmatrix}
可得:
a^,=Ra\ a^,=R
即若能求得目标坐标系在原坐标系下的定义矩阵,则旋转矩阵R即为a^,坐标系的描述,该矩阵每个列向量即为坐标轴x,y,z的分量
R_1^{T} R_2^{T} R_3^{T}

旋转矩阵的性质及理解

上一篇 下一篇

猜你喜欢

热点阅读