日期:2023年9月22日标签:ComputerGraphics

齐次坐标 —— 计算机几何 #

透视

为什么要引入齐次坐标(Homogeneous Coordinates)?引入齐次坐标的目的式为了更好的表示无限远(infinity)的坐标的概念,在欧式空间中,无限大或者无限小的坐标的并不存在,不能用数值表示一个坐标的 xy 分量是无限大或者无限小的。所以引入了齐次坐标的概念。

齐次坐标在 CAD 中十分重要,曲线(curve)和曲面(surface)设计都与之有关。另外矩阵变换也用到了齐次坐标的概念。

齐次坐标原理 #

现在有两个数 aw,尝试计算 a/w 的值,当 w 趋近于 0 时,a/w 的值越来越接近无穷大(或者无穷小)。齐次空间中为了描述 Infinity 的坐标,使用 aw=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=0x/w 趋近于无穷,此时齐次坐标表示的是无限远的点,如果用笛卡尔坐标,是无法描述无限远坐标的。

注意:从齐次坐标转到笛卡尔坐标式唯一的(x/w, y/w),但是将常规坐标转换为齐次坐标却不是唯一的,w 可以是任意非 0 值。

齐次坐标与多项式 #

现有多项式 f(x, y)=0, 将 xyx/wy/w 替换得到 f(x/w,y/w)=0,即齐次坐标系中的多项式。

例如:

Ax + By + C = 0
变为
Ax/w + By/w + C = 0

每一项再乘以 w^nn 为多项式的次数:

Ax + By + Cw = 0

此时可以看到多项式的每一项都是一次的 AxByCw,即齐次

再以二次多项式 Ax^2 + 2Bxy + Cy^2 + 2Dx + 2Ey + F = 0 为例,将 x/wy/w 带入多项式,然后乘以 W^2 得到:

Ax^2 + 2Bxy + Cy^2 + 2Dxw + 2Eyw + Fw^2 = 0

此时多项式的每一项的都是二阶的。

上面的过程也可以反过来,给定齐次坐标系中的多项式,得到常规多项式:将齐次坐标系多项式每一项除以 w^n,然后用 xy 替换 x/wy/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) 方向上的无穷远点。

(完)

目录