[译]齐次坐标系

原文地址

问题:两条平行直线可以相交

在欧氏几何中,同一平面的两条直线是不可能相交的,这是大家都熟悉的常识。

铁路

但是,在一个透视空间中,这是不正确的。
上图的铁路随着距离我们的视线越来越远,它们变得越狭长。最终,视线中的两条平行线在无限远处的一点相交了。

欧式几何非常适合描述我们的2D/3D几何空间,但是不足以来描述透视空间了。(实际上,欧式几何是透视几何的子集)。在笛卡尔坐标系中,一个二维坐标可以用 (x,y) 标志。

那么当点位于无线远的位置该怎么办?无限远处的点可以是 (,) ,这在欧式几何空间中是没有意义的。在透视空间中,平行的直线在无限远处会相交,这在欧式及几何中是不可能的。数学家发现了一种解决这个问题的方法。

齐次坐标系

奥古斯特 费迪南德 莫比乌斯,发明了齐次坐标系,使得在透视空间中对图形和几何的计算成为了可能。
齐次裁剪空间使用N+1个数字描述N维空间的方法。

对于二维的齐次坐标系,我们使用额外的 w 值加入到我们现存的坐标系中。这样,笛卡尔坐标系中的 (X,Y) 在齐次坐标系下可以表示为 (x,y,w) ,其中, X,Y,x,y,w 满足下列公式:

X=x/w

Y=y/w

举例来说,笛卡尔坐标系下的 (1,2) 在齐次坐标系下表示为 (1,2,1) 。如果点 (1,2) 移向了无穷远远处,在笛卡尔坐标系下是 (,) ,在齐次坐标系下是 (1,2,0) ,这是因为:

(1/0,2/0)(,)
,注意,我们可以使用 来描述一个无穷远处的点。

为何命名为齐次的?

正如之前所提到的,为了将齐次坐标系 (x,y,w) 转换为笛卡尔坐标系,我们仅仅用 w 去除 x,y
从这个过程中我们可以发现一个重要的事实,让我们好好观察接下来的例子。

(1,2,3)=>(1/3,2/3)

(2,4,6)=>(2/6,4/6)=>(1/3,2/3)

(3,6,9)=>(3/9,6/9)=>(1/3,2/3)

正如你所见, (1,2,3),(2,4,6),(3,6,9) 对应同一个笛卡尔系的坐标,任意形如 (1a,2a,3a) 的齐次坐标系点都对应同一个笛卡尔系坐标。因此,我们说这些点是“齐次”的,换句话说,齐次坐标系具有锁房不变性(scale invariant)。

证明 :平行线可以相交

考虑下述的欧式空间的线性空间。

{Ax + By + C = 0Ax + By + D = 0

显然,因为 CD ,所以上述方程无解。

又如果 C=D ,那么上述两个方程是等价的。

让我们分别用 x/w,y/w 来代替 x,y ,重写这个方程组。

{Ax /w + By/w + C/w = 0Ax /w+ By/w + D/w = 0

现在我们有解 (x,y,0) ,因为 (CD)w=0 ,所以 w=0 。因此,两条平行线在 (x,y,0) 相交,一个无穷远处的点。

齐次坐标系非常有用,是计算机图形学的基础概念,在将3D场景投影到2D平面时经常用到。

猜你喜欢

转载自blog.csdn.net/sixdaycoder/article/details/78136402