zoukankan      html  css  js  c++  java
  • 齐次坐标的理解

            Question: 俩条平行线可以相交于一点

            在欧氏几何空间中,同意平面的俩条平行线不能相交,这是我们熟悉的一种场景。

             然而在透视空间中,俩条平行线可以相交,例如:火车轨道随着我们的实现越来越窄,最后俩条平行线相交于一点

       

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

          如果一个点在无穷远处,这个点的坐标将会(∞,∞),在欧氏空间,这变的没意义。平行线在透视空间的无穷远处相较于一点,数学家发现了一种方法来解决这种问题;  齐次坐标

       齐次坐标:简而言之,齐次坐标就是用N+1维来代表N维坐标

        我们可以在一个2D笛卡尔坐标末尾加上一个额外的变量w来形成2D齐次坐标,因此,一个点(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) = (∞,∞),我们可以不用”∞"来表示一个无穷远处的点了,哈哈。

        

       为什么叫齐次坐标?

      我们把齐次坐标转化为笛卡尔坐标的方法是前面n-1个坐标分量分别除以最后一个分量即可。

       

    转化齐次坐标到笛卡尔坐标的过程中,我们有一个发现,例如:

     

    你会发现(1, 2, 3), (2, 4, 6) 和(4, 8, 12)对应同一个Euclidean point (1/3, 2/3),任何标量的乘积,例如(1a, 2a, 3a) 对应 笛卡尔空间里面的(1/3, 2/3) 。因此,这些点是“齐次的”,因为他们代表了笛卡尔坐标系里面的同一个点。换句话说,齐次坐标有规模不变性。

          证明:两条直线可以相交

    考虑如下方程组:

       

    我们知道在笛卡尔坐标系里面,该方程组无解,因为C ≠ D,如果C=D,两条直线就相同了。

    让我们在透视空间里面,用齐次坐标x/w, y/w代替x ,y,

     

    现在我们有一个解(x, y, 0),两条直线相交于(x, y, 0),这个点在无穷远处。

    小结:齐次坐标在图形学中是一个非常基础的概念,例如3D场景映射到2D场景的过程中

         

  • 相关阅读:
    Perl 正则匹配经验记录
    Linux——高效玩转命令行
    推荐一个SAM文件或者bam文件中flag含义解释工具
    单端测序(Single- ead)和双端测序(Pai ed-end和Mate-pai )的关系
    区别samtools faid产生的.fai文件功能和bwa index 产生的四个文件的功能
    Perl新接触的小命令
    Perl调用外部命令(其他脚本、系统命令)的方法和区别
    Linux——命令
    学习《Python金融实战》中文版PDF+英文版PDF+源代码
    学习《深度学习与计算机视觉算法原理框架应用》《大数据架构详解从数据获取到深度学习》PDF代码
  • 原文地址:https://www.cnblogs.com/wyuzl/p/6214423.html
Copyright © 2011-2022 走看看