关于齐次坐标的理解


 

问题:两条平行线会相交于一点

 
在欧氏几何空间,同一平面的两条平行线不能相交,这是我们都熟悉的一种场景。
然而,在透视空间里面,两条平行线可以相交,例如:火车轨道随着我们的视线越来越窄,最后两条平行线 在无穷远处交于一点。
 
 
轨道在远处相交于一点,但是现实中轨道是不可能相交的
因此在透视空间里,存在两条平行线相交
 
 
 
 
 
 
 
欧氏空间(或者笛卡尔空间)描述2D/3D几何非常适合,但是这种方法却不适合处理透视空间的问题(实际 上,欧氏几何是透视几何的一个子集合),二维笛卡尔坐标可以表示为(x,y),三维(x,y,z)
 
如果一个点在无穷远处,这个点的坐标将会(∞,∞),在欧氏空间,这变得没有意义。平行线在透视空间的无穷 远处交于一点,但是在欧氏空间却不能,数学家发现了一种方式来解决这个问题。
 

方法:齐次坐标表示2D/3D坐标系

我们可以在一个2D笛卡尔坐标末尾加上一个额外的变量w来形成2D齐次坐标,因此,一个点(X,Y)在齐次坐标
里面变成了(x,y,w),并且有:X = x/w、Y = y/w
 
简述:2D笛卡尔坐标(X,Y)、齐次坐标(x,y,w)
 
例如,笛卡尔坐标系下(1,2)的齐次坐标可以表示为(1,2,1),如果点(1,2)移动到无限远处,在 笛卡尔坐标下它变为(∞,∞),然后它的齐次坐标表示为(1,2,0),因为(1/0, 2/0) = (∞,∞),我们可以不 用”∞"来表示一个无穷远处的点了
PS:在齐次坐标中,不在使用笛卡尔坐标思维了,不然就无法理解它
 
齐次坐标转笛卡尔坐标
 
 转化过程中……
 
 
你会发现(1, 2, 3), (2, 4, 6) 和(4, 8, 12)对应同一个欧氏几何点 (1/3, 2/3),任何非零实数的乘积,例如(1a, 2a, 3a) 对应 笛卡尔空间里面的(1/3, 2/3) 。因此,这些点是“齐次的”,因为它代表了笛卡尔坐标系里面的同一个点
 

齐次点具有下列几个性质:(齐次坐标比笛卡尔坐标多一维)

  1)如果实数a非零,则(x, y, x, w)和(ax, ay, az, aw)表示同一个点,类似于x/y = (ax)/(ay)。
  2)三维空间点(x, y, z)的齐次点坐标为(x, y, z, 1.0),二维平面点(x,y)的齐次坐标(x,y,0,1)。
  3)当w不为零时,齐次点坐标(x, y, z, w)即三维空间点坐标(x/w, y/w, z/w);当w为零时,齐次 点(x, y, z, 0)表示此点位于某方向的无穷远处。
 

引进齐次坐标优点

   1.它提供了用矩阵运算把二维、三维甚至高维空间中的一个点集从一个坐标系变换到另一个坐标系 的有效方法。
      2.它可以表示无穷远的点。n+1维的齐次坐标中如果h=0,实际上就表示了n维空间的一个无穷远点。 对于齐次坐标[a,b,h],保持a,b不变,    点沿直线 ax+by=0 逐渐走向无穷远处的过程。
 

证明:两条直线可以相交

 
我们知道在笛卡尔坐标系里面,该方程组无解,因为C ≠ D,如果C=D,两条直线就相同了。
 
让我们在透视空间里面,用齐次坐标x/w, y/w代替x ,y,
现在我们有一个解(x, y, 0),两条直线相交于(x, y, 0),这个点在无穷远处。
 
 
 
“齐次坐标表示是计算机图形学的重要手段之一,它既能够用来明确区分向量和点,同时
也更易用于进行仿射(线性)几何变换。”—— F.S. Hill, JR。
 
对于一个向量v以及基oabc,可以找到一组坐标(v1,v2,v3),使得v = v1 a + v2 b + v3 c     (1)
 
而对于一个点p,则可以找到一组坐标(p1,p2,p3),使得 p – o = p1 a + p2 b + p3 c       (2)
 
从上面对向量和点的表达,我们可以看出为了在坐标系中表示一个点(如p),我们把点的位置看 作是对这个基的原点o所进行的一个位移,即一个向量——p – o(有的书中把这样的向量叫做位置 向量——起始于坐标原点的特殊向量),我们在表达这个向量的同时用等价的方式表达出了
点p:p = o + p1 a + p2 b + p3 c                                                                                               (3)

(1)(3)是坐标系下表达一个向量和点的不同表达方式

 
这里可以看出,虽然都是用代数分量的形式表达向量和点,但表达一个点比一个向量需要额外
的信息。如果我写出一个代数分量表达(1, 4, 7),谁知道它是个向量还是个点!
我们现在把(1)(3)写成矩阵的形式:
 
v = (v1 v2 v3 0) X (a b c o)
p = (p1 p2 p3 1) X (a b c o)
 
这里(a,b,c,o)是坐标基矩阵,右边的列向量分别是向量v和点p在基下的坐标。这样,向量 和点在同一个基下就有了不同的表达:3D向量的第4个代数分量是0,而3D的第4个代数 分量是1。像这种这种用4个代数分量表示3D几何概念的方式是一种齐次坐标表示。
 
这样,上面的(1, 4, 7)如果写成(1,4,7,0),它就是个向量;如果是(1,4,7,1),它就是个点。 下面是如何在普通坐标(Ordinary Coordinate)和齐次坐标(Homogeneous Coordinate)之 间进行转换:
(1)从普通坐标转换成齐次坐标时
   如果(x,y,z)是个点,则变为(x,y,z,1);
   如果(x,y,z)是个向量,则变为(x,y,z,0)
(2)从齐次坐标转换成普通坐标时   
   如果是(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个分量。
 
由于齐次坐标使用了4个分量来表达3D概念,使得平移变换可以使用矩阵进行,从而如
F.S. Hill, JR所说,仿射(线性)变换的进行更加方便。由于图形硬件已经普遍地支持
齐次坐标与矩阵乘法,因此更加促进了齐次坐标使用,使得它似乎成为图形学中的一个标准。

分享一个有道链接:转载于此,经过多次转载,来源于网络,供学习分享
 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM