齐次坐标(Homogeneous Coordinates)

问题 : 两条平行 线 会相交

在欧几里得几何空 里,两条平行 线 都不会相交。但是在投影空 中,如右 中的两条 铁轨 在地平 线处 却是会相交的,因 在无限 远处 看起来相交于一点。

在欧几里得(或称笛卡 )空 里描述 2D/3D 几何物体是很理想的,但在投影空 里面却并不 得。 我 (x, y ) 表示笛卡 中的一个 2D 点,而 于无限 远处 的点 (∞,∞) 在笛卡 里是没有意 的。投影空 里的两条平行 线 会在无限 远处 相交于一点,但笛卡 里面无法搞定 问题 (因 无限 远处 的点在笛卡 里是没有 意 的),因此数学家想出 次坐 标这 个点子来了。

解决 : 其次坐 August Ferdinand Möbius 提出的 次坐 Homogeneous coordinates 在投影空 像和几何 理, 次坐 N + 1 个分量来描述 N 比如, 2D 次坐 是在笛卡 (X, Y) 的基 上增加一个新分量 w (x, y, w) ,其中笛卡 系中的大 X Y 次坐 中的小 x y 有如下 对应 关系:

X = x/w

Y = y/w


笛卡 中的点 (1, 2) 次坐 中就是 (1, 2, 1) 。如果 点移 到无限 (∞,∞) ,在 次坐 中就是 (1, 2, 0) 这样 就避免了用没意 "∞" 来描述无限 远处 的点。
什么叫 次坐 ?前面提到,我 次坐 中的 x y 除以 w 就得到笛卡 中的 x x ,如 所示:

Homogeneous                Cartesian

(x,y,w)                         ==     (x/w, y/w)



细观 察下面的 转换 例子,可以 发现 些有趣的 西:

Homogeneous              Cartesian

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

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

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

(4,8,12)             ==       (1/3, 2/3)

................................

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


中,点 (1, 2, 3), (2, 4, 6) (4, 8, 12) 对应 笛卡 中的同一点 (1/3, 2/3) 。 任意数量 (1a, 2a, 3a) 终对应 于笛卡 中的同一点 (1/3, 2/3) 。因此 些点是 的,因 终对应 于笛卡 中的同一点。 话说 次坐 描述 放不 性( scale invariant )。

: 两平行 线 可以相交笛卡 系中, 于如下两个直 线 方程:

 

Ax + By + C = 0

Ax + By + D = 0


如果 C ≠ D ,以上方程 无解;如果 C = D ,那 两条 线 就是同一条 线 了。

下面我 x/w, y/w 代替 x, y 放到投影空 里来求解:

 

A*x/w + B*y/w + C = 0                Ax + By + Cw = 0

                                           =>

A*x/w + B*y/w + D = 0                Ax + By + Dw = 0

 


在我 就可以在 C ≠ D 的情况得到一 (x, y, 0) ,代入得 (C - D)w = 0 ,因 C ≠ D ,所以 w = 0 。因而,两条平行 线 相交于投影空 中无限 远处 的一点 (x, y, 0)

次坐 算机 形学中是有用的,将 3D 景投影到 2D 平面的 程中就用到它了。

http://www.opengpu.org/bbs/viewthread.php?tid=961

 

你可能感兴趣的:(c,图形)