在坐标系中可以利用矩阵乘法来表示各种不同的线性变换,例如:缩放,旋转等。但是想要表示平移变换,只利用矩阵乘法会遇到困难。
假设想要把一个位于的点平移到
,应该进行的操作为
齐次坐标(Homogenous Coordinates)的引入使我们可以更加方便地表示平移操作,对于一个在笛卡尔二维坐标系中的点,在齐次坐标系中表示为
。同样地,对于笛卡尔坐标系中的向量
,在齐次坐标系中表示为
。
我们尝试在齐次坐标系中表示平移操作,考虑上文中的例子,可以得到
从上面的式子可以看出,在齐次坐标中,实现了只通过矩阵乘法变换完成平移操作,同时在对于向量进行平行时保证了向量的平移不变性。
继续探究点与向量之间的运算,我们可以发现在齐次坐标系中,这些运算都是符合数学规律的,例如在齐次坐标下计算两个向量的减法,结果仍然是一个向量;计算两个点的减法,结果同样是一个向量;计算一个点加上一个向量,结果还是一个点。
而如果计算两个点的加法,我们会发现第三维得到了2。为了使运算有意义,我们对齐次坐标进行一个补充,即
接下来我们将笛卡尔坐标下的操作在齐次坐标下表示:
缩放:
旋转:
平移:
另外,齐次坐标下的逆变换同样对应矩阵的逆,同样不满足交换律。
三维笛卡尔坐标系下的点和向量也可以表示成齐次坐标:
3D Point :
3D Vector :
三维坐标下的一个任意变换可以表示为齐次坐标下的一个矩阵乘法,即:


对于这样的一个矩阵,永远是先进行线性变换,再进行平移操作。
(未完待续~)