Translation

平移变换非常特殊。

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/0fc232ed-4f78-4c20-a3fe-6c934f75d3d1/Untitled.png

$$ \begin{array}{l}x^{\prime}=x+t_{x} \\ y^{\prime}=y+t_{y}\end{array} $$

写出来简单,但是两个式子不能写成线性变换的形式。

$$ \left[\begin{array}{l}x^{\prime} \\ y^{\prime}\end{array}\right]=\left[\begin{array}{ll}a & b \\ c & d\end{array}\right]\left[\begin{array}{l}x \\ y\end{array}\right] $$

只能写成:

$$ \left[\begin{array}{l}x^{\prime} \\ y^{\prime}\end{array}\right]=\left[\begin{array}{ll}a & b \\ c & d\end{array}\right]\left[\begin{array}{l}x \\ y\end{array}\right]+\left[\begin{array}{l}t_{x} \\ t_{y}\end{array}\right] $$

因此平移变换并不是线性变换。

但是我们不希望将平移变换看作一个特殊的例子,那么有没有办法将缩放、错切、平移等变换用一种统一的方式来表示?

<aside> 💡 在计算机科学,永远要考虑“Trade-Off”。数据结构中不同降低时间复杂度的办法都会引入空间复杂度。如果两者都能低就很好,但更多时候是非此即彼的事情。“No Free Lunch Theory”。

</aside>

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/789fbf68-a4dd-4c42-8d17-4d1db7b08a58/Untitled.png

引入齐次坐标,可以通过增加一个维度来将平移变换也写成矩阵乘一个点的形式。

<aside> 💡 向量具有平移不变性,因此后面是 $(x, y, 0)$,平移变换后也不变。

</aside>

我们也可以通过 $w$ 分量来推出我们操作的结果:

Valid operation if w-coordinate of result is 1 or 0