评论

收藏

[Hbase] 齐次坐标

数据库 数据库 发布于:2021-12-29 11:44 | 阅读数:636 | 评论:0

问题: 两条平行线会相交
在欧几里得空间(几何学)中,同一平面上的两条平行线不能相交,或者不能永远相交。这是大家都熟悉的常识。
DSC0000.jpg





然而,在透视空间里面,两条平行线可以相交,例如:火车轨道随着我们的视线越来越窄,最后两条平行线在无穷远处交于一点。


欧氏空间(或者笛卡尔空间)描述2D/3D几何非常适合,但是这种方法却不适合处理透视空间的问题(实际上,欧氏几何是透视几何的一个子集合),2维笛卡尔坐标可以表示为(x,y)。


如果这一点延伸到无穷远处呢?这个点将会变成无穷远(∞∞),在欧几里得空间变得毫无意义。在射影空间中,平行线应该在无穷处相交,但在欧几里得空间中却不能。数学家们发现了一种解决这个问题的方法。
解决方案:齐次坐标
由August Ferdinand Möbius提出的齐次坐标(Homogeneous coordinates)让我们能够在投影空间里进行图像和几何处理,齐次坐标用 N + 1个分量来描述 N 维坐标。
2D 齐次坐标是在在现有坐标中加入一个额外的变量w。因此,在笛卡尔坐标中,(X, Y)变成(x, y, w)在齐次坐标下。在笛卡尔坐标系中,X和Y以X, Y,和w的形式重新表达;
X = x/w
Y = y/w
例如,笛卡尔坐标中的点 (1, 2) 在齐次坐标中就是 (1, 2, 1) 。如果这点移动到无限远(∞,∞)处,在齐次坐标中就是 (1, 2, 0) ,这样我们就避免了用没意义的”∞” 来描述无限远处的点。
为什么叫齐次坐标?
如前所述,为了从齐次坐标(x, y, w)转换为笛卡尔坐标,我们只需将x和y分别除以w;
DSC0001.png

将齐次方程转化为笛卡尔坐标,我们可以找到一个重要的事实。让我们看看下面的例子;
DSC0002.png

正如你所看到的,点(1,2,3),(2,4,6)和(4,8,12)对应于相同的欧几里得点(1/3,2/3)。任何标量积(1a, 2a, 3a)都与欧几里得空间中的(1/3,2/3)相同。因此,这些点是“齐次的”,因为它们表示欧几里得空间(或笛卡尔空间)中的同一点。换句话说,齐次坐标是尺度不变的。
证明: 两平行线可以相交
笛卡尔坐标系中,对于如下两个直线方程:
DSC0003.png

我们可以看出,C≠D并没有解决以上方程。如果C = D,那么两条线是相同的(重叠的)。
让我们把x和y分别替换成x/w y/w,来重写射影空间的方程。
DSC0004.png

现在我们就可以在 C ≠ D 的情况得到一组解 (x, y, 0),代入得 (C - D)w = 0,因为 C ≠ D,所以 w = 0。因而,两条平行线相交于投影空间中无限远处的一点 (x, y, 0)。
齐次坐标在计算机图形学中是有用的,将 3D 场景投影到 2D 平面的过程中就用到它了。




关注下面的标签,发现更多相似文章