参考资料:
在《变换(二维空间)》中,我们知道了二维空间中的线性变换可以表示为矩阵形式:
而在平移变换时,例如下图表示将左侧图形沿
变换后坐标关系为:
该关系表示为矩阵形式为:
显然,这在线性变换的表示上引入一个新的矩阵,那么有没有一种方法能够实现将平移变换也用两个矩阵相乘来表示呢?或者说有没有一种方法能够实现所有的二维平面中的变换都能用两个矩阵相乘来表示呢?
答案是存在的,那就是齐次坐标。
在二维中,引入一个新的维度来表示点或者向量:
新增加的维度为1是表示点,为0是表示向量。
那么我们可以将平移变换用如下的矩阵形式来表示:
如此一来,我们通过引入齐次坐标,实现了两个矩阵相乘的表示。那么,同时需要思考是否能同时保证其结果的正确性呢?
在上面的结果矩阵中,第三个维度值为1,表示其为一个点,结果正确。通过齐次坐标第三维度的定义,我们可以计算下面不同的情形,以验证其正确性:
向量 + 向量
不使用齐次坐标,我们知道其结果必为一个向量。用齐次坐标的方式计算,发现第三维度为
点 - 点
不使用齐次坐标,我们知道其结果必为一个向量。用齐次坐标的方式计算,发现第三维度为
点 + 向量
不使用齐次坐标,我们知道 “点 - 点 = 向量”,那么一定有 “点 = 点 + 向量”。用齐次坐标的方式计算,发现第三维度为
点 + 点
这个情况比较特殊,其实实际意义不大,但是我们可以用齐次坐标来得出结论,第三维度为
齐次坐标不仅适用于二维空间,在三维空间中,齐次坐标同样适用,即引入一个新的维度来表示点或者向量:
新增加的维度为1是表示点,为0是表示向量。
关于齐次坐标在二维和三维中的应用,可以跳转《变换(二维空间)》、《变换(三维空间)》。