为什么要引入齐次坐标(Homogeneous Coordinates)?引入齐次坐标的目的式为了更好的表示无限远(infinity)的坐标的概念,在欧式空间中,无限大或者无限小的坐标的并不存在,不能用数值表示一个坐标的 xy 分量是无限大或者无限小的。所以引入了齐次坐标的概念。
齐次坐标在 CAD 中十分重要,曲线(curve)和曲面(surface)设计都与之有关。另外矩阵变换也用到了齐次坐标的概念。
现在有两个数 a
和 w
,尝试计算 a/w
的值,当 w
趋近于 0 时,a/w
的值越来越接近无穷大(或者无穷小)。齐次空间中为了描述 Infinity 的坐标,使用 a
和 w=0
两个数值表示,即 (a, 0)
。
齐次坐标比笛卡尔坐标多了一个 w
分量,即 (x, y, w)
。齐次坐标对应的笛卡尔坐标为 x 和 y 分量除以 w 分量,即 (x/w, y/w)
。
w
可以为任意值,所以下面的齐次坐标表示的笛卡尔坐标实际为同一个,都是 (1, 2)
:
w=1: (1, 2, 1) => (1/1, 2/1) => (1, 2)
w=2: (2, 4, 2) => (2/2, 4/2) => (1, 2)
2=3: (3, 6, 3) => (3/3, 6/3) => (1, 2)
当 w=0
,x/w
趋近于无穷,此时齐次坐标表示的是无限远的点,如果用笛卡尔坐标,是无法描述无限远坐标的。
注意:从齐次坐标转到笛卡尔坐标式唯一的(x/w, y/w),但是将常规坐标转换为齐次坐标却不是唯一的,w 可以是任意非 0 值。
现有多项式 f(x, y)=0
, 将 x
和 y
用 x/w
和 y/w
替换得到 f(x/w,y/w)=0
,即齐次坐标系中的多项式。
例如:
Ax + By + C = 0
变为
Ax/w + By/w + C = 0
每一项再乘以 w^n
,n
为多项式的次数:
Ax + By + Cw = 0
此时可以看到多项式的每一项都是一次的 Ax
、By
和 Cw
,即齐次。
再以二次多项式 Ax^2 + 2Bxy + Cy^2 + 2Dx + 2Ey + F = 0
为例,将 x/w
和 y/w
带入多项式,然后乘以 W^2 得到:
Ax^2 + 2Bxy + Cy^2 + 2Dxw + 2Eyw + Fw^2 = 0
此时多项式的每一项的都是二阶的。
上面的过程也可以反过来,给定齐次坐标系中的多项式,得到常规多项式:将齐次坐标系多项式每一项除以 w^n
,然后用 x
和 y
替换 x/w
和 y/w
。
正如本页开头提到的,齐次坐标可以轻松捕捉无穷大的概念。固定点 (x , y)
并通过乘以 1/ w
得到 齐次坐标 (x/w,y/w,1/w)
。让 w
的值趋近于零,则 (x/w,y/w)
沿着 (x,y)
的方向越来越远。当 w
变为零时,(x/w, y/w)
趋于无穷大。因此,我们可以说,齐次坐标 (x ,y ,0)
是 (x , y)
方向上的理想点或无穷远点。
让我们看一个例子。令 (3,5)
为 xy 平面上的点。考虑 (3/ w ,5/ w )
。如果 w 不为零,则该点位于直线 y = (5/3)x
上。或者,也可以用向量表示,(3/w ,5/ w)
是直线 O + (1/ w )d
上的点,其中基点 O
是坐标原点,d
是方向向量 <3 ,5>
。 因此,当 w
接近零时,该点将移动到直线上的无穷远。这就是为什么说 ( x, y,0)
是理想点或 (x,y)
方向上的无穷远点。
(完)