贡献者: addis
1. 主动理解
主动理解即坐标系只有一个,$ \boldsymbol{\mathbf{r}} = (x, y)$ 变换后得到另一个向量 $ \boldsymbol{\mathbf{r}} ' = (x',y')$。
- 旋转矩阵(逆时针为正)为 $ \boldsymbol{\mathbf{R}} (\theta)$,即 $ \boldsymbol{\mathbf{r}} ' = \boldsymbol{\mathbf{R}} (\theta) \boldsymbol{\mathbf{r}} $ 把 $ \boldsymbol{\mathbf{r}} $ 关于坐标原点旋转 $\theta$ 弧度得到 $ \boldsymbol{\mathbf{r}} '$。
- 缩放常数 $s$ 可以把一点关于原点收缩:$ \boldsymbol{\mathbf{r}} ' = s \boldsymbol{\mathbf{r}} = (sx, sy)$。
- 平移向量 $ \boldsymbol{\mathbf{d}} = (d_x,d_y)$ 可以描述平移 $ \boldsymbol{\mathbf{r}} ' = \boldsymbol{\mathbf{r}} + \boldsymbol{\mathbf{d}} = (x+d_x,y+d_y)$。
如果三种变换依次作用在 $ \boldsymbol{\mathbf{r}} $ 上,但顺序不同,会导致最终结果相差一个平移。例如:
“平移,旋转,缩放” 为
\begin{equation}
\boldsymbol{\mathbf{r}} ' = s \boldsymbol{\mathbf{R}} ( \boldsymbol{\mathbf{r}} + \boldsymbol{\mathbf{d}} ) = s \boldsymbol{\mathbf{R}} \boldsymbol{\mathbf{r}} + s \boldsymbol{\mathbf{R}} \boldsymbol{\mathbf{d}} ~.
\end{equation}
“旋转,平移,缩放” 为
\begin{equation}
\boldsymbol{\mathbf{r}} ' = s( \boldsymbol{\mathbf{R}} \boldsymbol{\mathbf{r}} + \boldsymbol{\mathbf{d}} ) = s \boldsymbol{\mathbf{R}} \boldsymbol{\mathbf{r}} + s \boldsymbol{\mathbf{d}} ~.
\end{equation}
“缩放,平移,旋转” 为
\begin{equation}
\boldsymbol{\mathbf{r}} ' = \boldsymbol{\mathbf{R}} (s \boldsymbol{\mathbf{r}} + \boldsymbol{\mathbf{d}} ) = s \boldsymbol{\mathbf{R}} \boldsymbol{\mathbf{r}} + \boldsymbol{\mathbf{R}} \boldsymbol{\mathbf{d}} ~.
\end{equation}
可见使用
矩阵乘法分配律拆括号后,得到 “旋转,缩放,平移” 变换。第一项的旋转缩放都是相同的,只有平移常数不同。也就是说,
任何一种顺序都可以覆盖所有可能组合变换。
另外注意旋转和缩放都是线性变换,且二者顺序可交换,即 $s( \boldsymbol{\mathbf{R}} \boldsymbol{\mathbf{r}} ) = \boldsymbol{\mathbf{R}} (s \boldsymbol{\mathbf{r}} )$,但平移并不是线性变换。
2. 逆变换
容易发现,这三个变换的逆变换分别为 $ \boldsymbol{\mathbf{R}} ^{-1}$,$1/s$ 和 $- \boldsymbol{\mathbf{d}} $。组合变换的逆变换就是按照相反的顺序依次做逆变换。例如式 3 中 “缩放,平移,旋转” 的逆变换为 “逆旋转,逆平移,逆缩放”
\begin{equation}
\boldsymbol{\mathbf{r}} = \frac1s ( \boldsymbol{\mathbf{R}} ^{-1} \boldsymbol{\mathbf{r}} ' - \boldsymbol{\mathbf{d}} )~.
\end{equation}
3. 关于任意点旋转
一些初学者在学习旋转矩阵时会疑惑为什么只能关于原点旋转。因为矩阵只能表示线性变换,而关于任意点的旋转不是线性变换。
假设旋转中心为 $ \boldsymbol{\mathbf{c}} $,那么要关于该点旋转可以表示为(式 5 )
\begin{equation}
\boldsymbol{\mathbf{r}} ' = \boldsymbol{\mathbf{R}} ( \boldsymbol{\mathbf{r}} - \boldsymbol{\mathbf{c}} ) + \boldsymbol{\mathbf{c}} = \boldsymbol{\mathbf{R}} \boldsymbol{\mathbf{r}} + ( \boldsymbol{\mathbf{c}} - \boldsymbol{\mathbf{R}} \boldsymbol{\mathbf{c}} )~.
\end{equation}
第一个等号是说,要关于某点旋转,我们可以先用平移把旋转中心移动到原点,旋转完成后再移回去。而第二个等号告诉我们,
关于某点旋转等效于关于原点旋转再进行一个平移。这就是为什么我们在讨论三种变换的组合时只需要默认旋转是关于原点就可以包含所有情况。
4. 被动理解
被动理解的意思是,存在两个坐标系 $S,S'$,当 $S'$ 相对 $S$ 旋转,缩放或平移后,$S$ 中一个向量 $ \boldsymbol{\mathbf{r}} $ 在 $S'$ 中的坐标是什么。也就是同一个向量在不同坐标系中的坐标如何变换。
未完成:用 $ \boldsymbol{\mathbf{R}} ^{-1}$,$1/s$ 和 $- \boldsymbol{\mathbf{d}} $ 即可!