精华内容
下载资源
问答
  • 其次坐标
    2019-08-21 08:48:36

    来源

    • 用于区分点和向量

    例子

    • 点P(x,y,z,1)
    • 向量(x,y,z,0)

    其次坐标->非其次坐标 p/w

    p(x,y,z,w)
    (x,y,z,w) -> (x/w,y/w,z/w,1)
    

    非其次坐标->其次坐标 p*w

    p(x,y,z,1)
    (x,y,z,1) -> (x*w,y*w,z*w,w)
    
    更多相关内容
  • 其次坐标

    2018-09-02 19:58:54
    例如,笛卡尔坐标系下(1,2)的齐次坐标可以表示为(1,2,1),如果点(1,2)移动到无限远处,在笛卡尔坐标下它变为(∞,∞),然后它的齐次坐标表示为(1,2,0),因为(1/0, 2/0) = (∞,∞),我们可以不用”∞"来...

    转 https://blog.csdn.net/qq_16551373/article/details/78260801

    这篇译文是转载别人的翻译,翻译的很不错。

    原译文链接:http://blog.csdn.net/janestar/article/details/44244849

    下边的链接是原文章的链接

    原文章链接:http://www.songho.ca/math/homogeneous/homogeneous.html

     

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

    在欧氏几何空间,同一平面的两条平行线不能相交,这是我们都熟悉的一种场景。
    然而,在透视空间里面,两条平行线可以相交,例如:火车轨道随着我们的视线越来越窄,最后两条平行线在无穷远处交于一点。

    欧氏空间(或者笛卡尔空间)描述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场景的过程中

    展开全文
  • 透视除法,其次坐标,投影

    千次阅读 2017-07-23 15:23:26
    这就是怎样将一个“不正确”齐次坐标转换到一个“正确”坐标的方法:所有分量除以 W,这个过程对 2D 和 3D 同样适用。 通过给向量乘以 W 的倒数,来实现向量的所有分量除以 W,下面是一个4D的例子: 透视...

    原文:Explaining Homogeneous Coordinates & Projective Geometry

    http://www.jianshu.com/p/7e701d7bfd79


    3D投影


    图片来源:Joachim Baecker.

    术语

    在大多数3D工作中,我们参照的依据是欧几里得几何学中的三维空间(X, Y, Z)。但在某些情况下,参照投影几何更适用,除了 X, Y, Z 分量外,增加一个 W 分量,这个四维空间叫做“投影空间”,在四维空间中的坐标叫“齐次坐标”。
    为了达到3D软件的目的,“投影的” 和 “齐次的” 可以理解为 "4D"。

    不是四元数

    虽然四元数跟齐次坐标长得很像,都是 4D 矢量,通常用(X, Y, Z, W)来表示。但是,四元数和齐次坐标是不同的概念,适用的领域也不同。
    这篇文章跟“四元数”没有一毛钱关系。

    类比2D

    了解3D之前,我们先看看2D的投影是怎么回事儿。
    想象投影仪在一个屏幕上投影一张2D图片,很容易就可以得到投影图片的 X, Y 分量。


    在屏幕上投影2D图片

    现在,看投影仪和屏幕之间,你就可以发现 W 分量了。
    W 分量是投影仪到屏幕的距离


    W分量

    那么 W 分量的作用是什么呢?想象一下,如果我们移动投影仪的位置,来增加或减少 W分量的值,那么投影出的2D图片会发生什么?如果将投影仪靠近屏幕,2D图片缩小,如果投影仪远离屏幕,2D图片放大。没错,这就是 W 分量的作用。

    W 分量的值,影响了投影出 2D 图片的大小


    投影仪靠近屏幕

    应用到3D

    到目前为止,还没有一个3D投影仪,很难想象3D中的投影几何,但是 3D 下的 W 分量与 2D 的作用相同。当 W 增大,坐标被拉伸;W 缩小,坐标被压缩, W 对3D坐标做缩放变换。

    W = 1时

    通常,给3D编程初学者的建议是,无论什么时候将 3D 坐标转换为 4D 坐标时,让 W=1。原因是,当缩放坐标的 W 为1时,坐标不会增大或缩小,保持原有的大小。所以,当 W=1,不会影响到 X, Y, Z 分量的值。
    因此,当谈论到 3D 计算机图形学时,当坐标中 W=1时被称作“正确”。如果渲染使用 W>1 的坐标,每一个3D物体看起来都会变大,反之,W<1 的坐标中,3D物体会变小;如果渲染时试图让 W=0,那么你的程序会奔溃,当做透视除法的时候除数为0;如果 W<0,每一个物体都会上下翻转,水平翻转。
    在数学中,没有所谓的“不正确”的齐次坐标,使用齐次坐标时让 W=1 仅仅是用于计算机图形学中的投影转换。

    数学原理

    现在,让我们来看一些例子,了解数学原理
    在距屏幕3米远的位置放一个投影仪,投影出一个点(15, 21)在 2D 图像中,相应的投影坐标中的向量为 (X, Y, W)=(15, 21, 3)。


    距屏幕3米远投影一个点

    现在,想象推动投影仪向屏幕靠近,直到距离1米,越靠近屏幕投影,投影出的图像越小。投影仪靠近了3倍,因此图像缩小了3倍。如果我们将原向量的 X, Y, W 分量都除以 3,我们得到一个新向量 W=1:


    W=1的新向量

    投影出的点在坐标中的新位置(5, 7)


    同一个点在距屏幕1米远处投影

    这就是怎样将一个“不正确”齐次坐标转换到一个“正确”坐标的方法:所有分量除以 W,这个过程对 2D 和 3D 同样适用。
    通过给向量乘以 W 的倒数,来实现向量的所有分量除以 W,下面是一个4D的例子:


    透视除法

    用 GLM 库编写,类似如下实现:

    glm::vec4 coordinate(10, 20, 30, 5);
    glm::vec4 correctCoordinate = (1.0/coordinate.w) * coordinate;
    //now, correctCoordinate == (2,4,6,1)

    在计算机图形学中使用齐次坐标

    就像开始提到的,针对3D 计算机图形学中,有些情况下使用齐次坐标很有用,下面我们来看看这些情况:

    3D 坐标中的转换矩阵

    旋转缩放的转换矩阵只需要3列,但是为了处理平移,至少需要4列矩阵,这就是为什么矩阵变换通常用4×4的矩阵。然而,4列矩阵不能与3维向量相乘,只能与4维向量相乘,这就是为什么我们使用齐次的4维向量取代3维向量。

    4列矩阵只能与4维向量相乘,这就是为什么我们常常使用齐次的4维向量取代3维向量。

    通过齐次坐标处理矩阵变化,第4维 W 分量通常不用改变。从3D转换到4D,只需将 W 分量设置为1,并且经过变换举证处理后,W 分量的值任为1,这意味着我们忽略 W 分量即可转换回 3D坐标。这个对目前为止大多数的矩阵变化都适用,如平移旋转缩放。需要注意的例外是投影矩阵会影响 W 分量。

    透视变换

    在 3D 世界,物体离相机越远看起来越小,这个现象叫做透视。在镜头中,如果猫离相机足够近,远处的大山会比猫看上去小。


    透视,远处的大山比镜头前的猫看上去小

    在3D计算机图形学中,透视是通过变换矩阵改变向量的 W 分量来实现的。在变换到相机空间后(对向量应用了相机矩阵),还没有进行投影变换(还没有对向量应用投影矩阵),每个向量的 Z 分量表示了距离相机的距离。因此,Z 分量越大,矢量应该越小。W 分量影响这个缩放,所以投影矩阵用 Z 分量的值改变 W 分量的值。

    在3D计算机图形学中,透视是通过投影矩阵变换,改变每一个向量中 W 分量的值来实现透视的

    下面看一个透视例子,通过投影矩阵变换到齐次坐标。


    投影矩阵变化到齐次坐标

    注意投影矩阵是怎样用 Z 分量改变 W 分量的。
    经过投影矩阵透视变换后,每一个向量即经过了“透视除法”。

    透视除法只是将齐次坐标中的 W 分量转换为1的专用名词

    继续上面的例子,透视除法这步如下:


    透视除法

    完成透视除法后,W分量就没用了,我们就得到了一个完全符合3D透视投影规则的3D坐标。
    在GLM中,透视投影矩阵可以通过使用 glm::perspectiveglm::frustm方法来创建。在老式的 OpenGL 中,通常使用gluPerspectivegluFrustum 方法。在 OpenGL 中,在顶点 shader 作用了每一个顶点后,自动进行透视除法。这就是顶点 shader 中 main 方法输出的 gl_position 变量,是4维向量,而不是3维向量。

    设置平行光

    齐次坐标中的一个属性,是允许有一个无限远的点(或无限长的向量),在3D坐标中这个是不允许的。当 W=0 时,这点表示无限远的一个点。如果你尝试将一个 W=0 的齐次坐标转换为一个普通的 W=1的齐次坐标,这会导致4次除0操作:


    试图将 W=0 的齐次坐标转换为普通的 W=1 的齐次坐标


    这意味着,不能将 W=0 的齐次坐标转换到 3D 坐标。
    那这有什么用呢?用处说来就来了,平行光可以认为是一个无限远处的点光源。当一个点光源在无限远的位置,光线就会变成平行的,并且所有光线都在同一方向,这就是平行光的基本定义。想想太阳吧。
    所以在传统的3D图形中,平行光可以通过改变点光源位置向量中的 W 分量来表示,当 W= 1时,是一个点光源;当 W= 0 时,是一个平行光。
    在实现光照代码时,这更多的是一种传统的约定,但不是一种有用的方法。因为平行光和点光源的行为不同,通常分开实现。一个经典的光照 shader 实现如下:

    if (lightPosition.w == 0.0) {    
      //directional light code here
    } else {
      //point light code here
    }

    总结

    齐次坐标有一个额外的维度叫 W 分量,用来缩放X, Y, Z三个分量的值。平移和透视投影的矩阵变换只能在齐次坐标中使用,所以在3D计算机图形学中,当 W=1时,X, Y, Z 分量被称为“正确的”。任何齐次坐标,只要 W 不为0,都可以通过将每一个分量除以 W 来转换到 W=1的向量。当 W=0 时,这个坐标表示无穷远的一个点(或者表示无限长的一个向量),通常用于表示平行光的方向。



    作者:stanhome
    链接:http://www.jianshu.com/p/7e701d7bfd79
    來源:简书
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
    展开全文
  • 为什么要引入齐次坐标,齐次坐标的意义(一)

    万次阅读 多人点赞 2019-07-09 19:43:30
    问题:两条平行线可以相交于一点 在欧氏几何空间,同一平面的两条平行线不能相交,这是我们都熟悉的一种场景。 然而,在透视空间里面,两条平行线可以相交,例如:...几何的一个子集合),2维笛卡尔坐标可以表示为...

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

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

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

    点。

    欧氏空间(或者笛卡尔空间)描述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),这个点在无穷远处。

    齐次坐标的意义:

           使用齐次坐标,可以表示 平行线在透视空间的无穷远处交于一点。在欧氏空间,这变得没有意义,所以欧式坐标不能表示。

    即:齐次坐标可以表示无穷远处的点。例如:

    如果点(1,2)移动到无限远处,在笛卡尔坐标下它变为(∞,∞),然后它的齐次坐标表示为(1,2,0),因为(1/0, 2/0) =

    (∞,∞),我们可以不用”∞"来表示一个无穷远处的点了。

     

    附:为什么要引入齐次坐标,齐次坐标的意义(二) https://blog.csdn.net/zhuiqiuzhuoyue583/article/details/95230246

     

    参考:http://www.songho.ca/math/homogeneous/homogeneous.html

               https://www.zhihu.com/question/59595799

     

    展开全文
  • 齐次坐标

    千次阅读 2020-05-19 21:49:05
     在数学里,齐次坐标(homogeneous coordinates),或投影坐标(projective coordinates)是指一个用于投影几何里的坐标系统。该词由奥古斯特·费迪南德·莫比乌斯于1827年在其著作《Der barycentrische Calcul》一...
  • 关于齐次坐标的理解

    千次阅读 多人点赞 2018-10-12 14:19:46
    目录 [第一篇:关于齐次坐标的理解(经典)](https://blog.csdn.net/janestar/article/details/44244849)[第二篇:齐次坐标的理解](http://www.cnblogs.com/csyisong/archive/2008/12/09/1351372.html)[第三篇:如何...
  • 但在某些情况下,参照投影几何更适用,除了X,Y,Z分量外,增加一个W分量,这个四维空间叫做“投影空间”,在四维空间中的坐标叫做“齐次坐标”。 为了达到3D软件的目的,“投影的”和“齐次的”可以理解为“4D”。 ...
  • 齐次坐标变换

    万次阅读 多人点赞 2018-01-24 18:15:17
    齐次坐标 在二维平面内,我们用一对坐标值(x,y)来表示一个点在平面内的确切位置,或者说是用一个向量(x,y)来标定一个点的位置。 假如变换前的点的坐标为(x,y),变换后的点坐标为(x*,y *),这个变换过程...
  • 齐次坐标表示向量与坐标理解

    千次阅读 2019-12-13 16:45:30
    在相机变换中经常会遇到利用齐次坐标进行运算的情况,以前都是感觉模模糊糊。今天看了一些文章,对它有了进一步的自我理解。 先下结论: (x, y, z, 1) 表示坐标点:表示坐标系中一个固定的坐标点 (x, y, z, 0) 表示...
  • 为什么要引入齐次坐标

    千次阅读 2019-01-07 16:48:31
    问题来源:在研究相机标定的过程中,从世界坐标系变换到相机坐标系和从相机坐标系与图像坐标系之间的转换时,都用到了齐次坐标升了一维,为什么不能直接进行转换呢? 从世界坐标系到相机坐标系的变换开始说起, ...
  • 为什么要引入齐次坐标?什么是齐次坐标系?齐次坐标系的引入是为了将坐标的平移、旋转、缩放及透视投影等可表示为单一矩阵与向量相乘的一般向量运算。从而在进行图形处理时简单有效。如以矩阵表达式来计算这些变换时...
  • 视觉SLAM十四讲学习3 相机模型,畸变原理...对于相机坐标系下的一个点P=(X,Y,Z)P=(X,Y,Z)P=(X,Y,Z),在物理成像平面上的坐标P′P'P′为(x,y,z)(x,y,z)(x,y,z),根据相似三角形有: xX=yY=fZx=fXZy=fYZz=f \frac{x}{X}
  • 一、2D变换 1、缩放变换 缩放变换就是将图形上的点的各个维度同时放大或者缩小,比如,讲一个图片的长宽都缩小0.5倍 ...图形上每一点的Y轴坐标不变,但是横坐标都加了个负号 写成矩阵的形式就是这样的 3、剪
  • 齐次坐标 平移矩阵

    2020-07-07 08:46:55
    为什么引入齐次坐标可以表示平移? 答: 首先我们用一个矢量来表示空间中一个点:r = [ r_{x}, r_{y}, r_{z}] 如果我们要将其平移,平移的矢量为:t=[ t_{x}, t_{y}, t_{z}] 那么正常的做法就是:r + t =[ r_{x}+t_{...
  • 简单的说:齐次坐标就是在原有坐标上加上一个维度: 使用齐次坐标有什么优势? 1、能非常方便的表达点在直线或平面上 在2D平面上,一条直线 l 可以用方程 ax + by + c = 0 来表示,该直线用向量表示的话一般记做 ...
  • 齐次坐标就是将n维的向量用n+1维向量表示,增加了一个维度以后可以表达更多的信息: 在欧式距离中无法表示无穷远处的点,(∞,∞)是没有意义的。在齐次坐标中p=(x,y,0),就可以轻松的表示p点是一个无穷远点 最后一...
  • 该文章写的很明白 点击打开链接
  • 坐标变换(6)—齐次变换矩阵

    千次阅读 2020-03-26 09:27:14
    在机器人及自动驾驶中,经常用其次变换矩阵将旋转和平移进行统一。 前面的文章也介绍过其次变换矩阵,本文算是一个总结。 1. SE(3) 将旋转矩阵和平移向量写在同一个矩阵中,形成的4×44\times44×4矩阵,称为special...
  •   对于学习数字图像处理的新手来说,一般图像处理相关的书籍都没有具体说明数字图像本来是用二维坐标 (x,y) 表示的,为什么进行图像变换时就要用齐次坐标 (x,y,1) 表示了呢?   答案很简单,就是为了简便运算,...
  • 结论:齐次坐标在仿射变换中的使用非常方便。 “齐次坐标表示是计算机图形学的重要手段之一,它既能够用来明确区分向量和点,同时也更易用于进行仿射(线性)几何变换。”——F.S. Hill, JR。 在三维情形下:...
  • https://blog.csdn.net/janestar/article/details/44244849
  • 平移齐次坐标变换: 空间某点由矢量描述。其中,为轴上的单位矢量。此点可用平移齐次变换表示为: 旋转齐次坐标变换: 表,表,非齐次去掉第四行第四列就行了。 绕x轴作转角为的旋转变换: 绕y轴作转角为...
  • 仿射变换与齐次坐标

    千次阅读 2018-06-08 21:51:31
    仿射变换与齐次坐标October 12, 2011gcchengLeave a commentGo to comments仿射变换(Affine Transformation)和齐次坐标系(Homogeneous Coordinate)是计算机图形学中经常碰到的基本概念。这篇文章主要讲述什么是...
  • 标准的实现技术是将二维坐标位置表示(x,y)扩充到三维表示 ,称为齐次坐标,这里的齐次参数h是一个非零值,因此 二维平移矩阵 转载于:...
  • 关于齐次坐标的理解(经典)

    千次阅读 2018-07-13 20:24:24
    问题:两条平行线可以...欧氏空间(或者笛卡尔空间)描述2D/3D几何非常适合,但是这种方法却不适合处理透视空间的问题(实际上,欧氏几何是透视几何的一个子集合),2维笛卡尔坐标可以表示为(x,y)。如果一个点在...
  • 都知道旋转矩阵表达的是刚体(坐标系{B})相对参考坐标系{A}的姿态信息,那如何利用已知的旋转矩阵,将{A}旋转一定角度变成与{B}一样的姿态呢?有几种方法:固定角旋转、欧拉角旋转、angle-axis表达法、Quaternion...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 44,944
精华内容 17,977
关键字:

其次坐标