参考资料:http://www.songho.ca/math/homogeneous/homogeneous.html
https://mp.weixin.qq.com/s/0QHxvTcH4H072U64uDK_2A
问题:两条平行线可以相交。
在欧氏空间(几何)中,同一平面的两条平行线不能相交,或者不能永远相遇。
但是在投射空间中却不是这样。
如上图所示,火车铁路在远离眼睛的情况下变得更窄。最后,两条平行的铁路线路在地平线处相遇,这就是无穷远处的一个点。
欧几里得空间(或笛卡尔空间)很好地描述了我们的2D / 3D几何,但它们不足以处理投影空间(实际上,欧几里德几何是投影几何的一个子集)。 2D点的笛卡尔坐标可以表示为(x,y)。
如果这一点远远超出无穷大怎么办? 无穷远处的点将是(∞,∞),并且在欧几里德空间中它变得毫无意义。 平行线应在投影空间中的无穷远处相遇,但在欧几里得空间中不能。
解决方案:齐次坐标
齐次坐标是用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)向无穷大方向移动,则它在笛卡尔坐标系中变为(∞,∞)。 并且它在齐次坐标中变为(1,2,0),因为(1 / 0,2 / 0)≈(∞,∞)。 请注意,我们可以在不使用“∞”的情况下表达无穷远处的点了。
为什么称它为齐次坐标
为了从齐次坐标(x,y,w)转换为笛卡尔坐标,我们简单地将x和y除以w;
转化齐次坐标到笛卡尔坐标的过程中,我们有一个发现,例如:
你会发现(1, 2, 3), (2, 4, 6) 和(4, 8, 12)对应同一个欧几里德空间的点 (1/3, 2/3),任何标量的乘积,例如(1a, 2a, 3a) 对应 笛卡尔空间里面的(1/3, 2/3) 。因此,这些点是“齐次的”,因为他们代表了笛卡尔坐标系里面的同一个点。换句话说,齐次坐标有规模不变性。
证明:两条平行线可以相交。
有如下方程组:
我们知道由于C≠D,上述方程没有解。
如果C = D,则两条线相同(重叠)。
让我们在投射空间里面,用齐次坐标x/w, y/w代替x ,y。
现在,我们有一个解,(x,y,0),因为(C - D)w = 0,∴w= 0.因此,两条平行线在(x,y,0)处相遇,这是无穷远处的点。
齐次坐标在图形学中是一个非常基础的概念,例如3D场景映射到2D场景的过程中。
齐次坐标
“齐次坐标表示是计算机图形学的重要手段之一,它既能够用来明确区分向量和点,同时也更易用于进行仿射(线性)几何变换。”——F.S. Hill, JR
从普通坐标转换成齐次坐标时:
如果(x,y,z)是个点,则变为(x,y,z,1);
如果(x,y,z)是个向量,则变为(x,y,z,0)
从齐次坐标转换成普通坐标时:
如果是(x,y,z,1),则知道它是个点,变成(x,y,z);
如果是(x,y,z,0),则知道它是个向量,仍然变成(x,y,z)
以上通过齐次坐标来区分向量和点的方式。对于平移T,旋转R,缩放S这3个最常见的仿射变换,平移变换只对于点才有意义,因为普通向量没有位置概念,只有大小和方向。旋转和缩放对于向量和点都有意义。
举例而言,对于一个普通坐标的点P=(Px, Py, Pz),有对应的一族齐次坐标(wPx, wPy, wPz, w),其中w不等于零。比如,P(1, 4, 7)的齐次坐标有(1, 4, 7, 1)、(2, 8, 14, 2)、(-0.1, -0.4, -0.7, -0.1)等等。因此,如果把一个点从普通坐标变成齐次坐标,给x,y,z乘上同一个非零数w,然后增加第4个分量w;如果把一个齐次坐标转换成普通坐标,把前三个坐标同时除以第4个坐标,然后去掉第4个分量。