1. 怎么推导坐标位移和旋转
二维坐标的旋转可以通过三角公式推导
我们在做几何变换的时候经常需要把某个坐标系上的所有点都进行一个旋转,这个操作就叫做刚体旋转(所有的点相对位置不变的发生旋转)。下图是一个典型的二维坐标系下刚体旋转。我们把蓝色的坐标系旋转了θ度,新坐标系就是红色的坐标系。我们现在已知一个点相对红色那个坐标系的坐标($x_{red}$, $x_{red}$ ),和已知旋转角度θ,然后我们想求得该点相对于蓝色那个坐标系的坐标($x_{blue}$,$y_{blue}$)
这个其实很简单我们利用高中学的三角几何就可以轻松解决。从上图可以发现不变量是黑色的那个线段的长度。而这个长度我们是可以根据黑色点相对红色坐标系下的坐标($x_{red}$, $x_{red}$ )算出来的。黑色线段长度为$r=\sqrt {x_{red}^2+y_{red}^2}$
然后我们可以根据紫色那个三角形计算出黑色点相对蓝色坐标系下的坐标 ($x_{blue},y_{blue}$)
根据高中学的三角几何我们可以知道:
$
x_{blue}=r*cos(\alpha+\theta) \tag{1}
$
$
y_{blue}=r*sin(\alpha+\theta) \tag{2}
$
$\alpha$我们是不知道的。但是我们能找到一个关于它的线索。
$$
x_{red}=r*cos(\alpha)\\
y_{red}=r*sin(\alpha)
$$
展开(1)和 (2),可以得到如下:
$$
\begin{align}
x_{blue}&=r∗cos(α+θ)=r∗(cos(α)∗cos(θ)−sin(α)∗sin(θ))=x_{red}∗cos(θ)−y_{red}∗sin(θ)\\
y_{blue}&=r∗sin(α+θ)=r∗(sin(α)∗cos(θ)+cos(α)∗sin(θ))=y_{red}∗cos(θ)+x_{red}∗sin(θ)
\end{align}
$$