| 问题 : 两条平行 线 会相交 在欧几里得几何空 间 里,两条平行 线 永 远 都不会相交。但是在投影空 间 中,如右 图 中的两条 铁轨 在地平 线处 却是会相交的,因 为 在无限 远处 它 们 看起来相交于一点。 在欧几里得(或称笛卡 尔 )空 间 里描述 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 |