参考资料:

 

1 为什么要有齐次坐标?

《变换(二维空间)》中,我们知道了二维空间中的线性变换可以表示为矩阵形式:

(xy)=(abcd)(xy)

而在平移变换时,例如下图表示将左侧图形沿 xy 方向分别移动 txty 的距离,

变换后坐标关系为:

x=x+txy=y+ty

该关系表示为矩阵形式为:

(xy)=(abcd)(xy)+(txty)

显然,这在线性变换的表示上引入一个新的矩阵,那么有没有一种方法能够实现将平移变换也用两个矩阵相乘来表示呢?或者说有没有一种方法能够实现所有的二维平面中的变换都能用两个矩阵相乘来表示呢?

 

答案是存在的,那就是齐次坐标

 

2 什么是齐次坐标?

在二维中,引入一个新的维度来表示点或者向量:

新增加的维度为1是表示点,为0是表示向量。

 

那么我们可以将平移变换用如下的矩阵形式来表示:

(xyw)=(10tx01ty001)(xy1)=(x+txy+ty1)

如此一来,我们通过引入齐次坐标,实现了两个矩阵相乘的表示。那么,同时需要思考是否能同时保证其结果的正确性呢?

 

在上面的结果矩阵中,第三个维度值为1,表示其为一个点,结果正确。通过齐次坐标第三维度的定义,我们可以计算下面不同的情形,以验证其正确性:

 

3 齐次坐标的应用?

齐次坐标不仅适用于二维空间,在三维空间中,齐次坐标同样适用,即引入一个新的维度来表示点或者向量:

新增加的维度为1是表示点,为0是表示向量。

 

关于齐次坐标在二维和三维中的应用,可以跳转《变换(二维空间)》《变换(三维空间)》