仿射变换是 x ⟼ Ax + b 形式的变换,其中 x 和 b 是向量,A 是方阵。在几何上,仿射变换将平行四边形映射到平行四边形,并保持沿线的相对距离。
为了解决这样的问题,我们首先注意到对于原点,我们有 0 ⟼ A0 + b = b。由于问题告诉我们 [0,0] ⟼ [0,1],我们知道 b = [0,1]。
接下来我们从线性代数中回忆起,将矩阵乘以标准基向量 [0,1] 和 [1,0] 分别简单地提取矩阵的第一列和第二列:
[a b] [1] = [a], [a b] [0] = [b].
[c d] [0] [c] [c d] [1] [d]
我们得到 [1,0] ⟼ [1,1] 和 [0,1] ⟼ [1,2]。由此我们得到
[1,1] = A[1,0] + b = [a,c] + [0,1] ⟹ [a,c] = [1,0],
[1,2] = A[0,1] + b = [b,d] + [0,1] ⟹ [b,d] = [1,1].
这给了我们仿射变换
Ax + b = [1 1] x + [0].
[0 1] [1]
齐次坐标是一种技巧,它可以让我们将仿射变换写成矩阵,只需一个额外的坐标,始终设置为 1。矩阵公式是
[A b] [x] = [Ax+b].
[0 1] [1] [ 1]
这里A其实是一个2×2矩阵,而b和x是2-vector,左下角的0其实是[0 0]。所以总的来说,我们处理的是一个 3×3 矩阵和 3 个向量。
所以我们的解决方案是
[1 1 0]
[0 1 1],
[0 0 1]
为了更好地衡量,我们检查它是否适用于最后一点:
[1 1 0] [1] [2]
[0 1 1] [1] = [2].
[0 0 1] [1] [1]