美文网首页
2022-10-29 齐次坐标与透视

2022-10-29 齐次坐标与透视

作者: MrSwilder | 来源:发表于2022-10-29 18:33 被阅读0次

一、齐次坐标

问题:两条平行线可以相交?
在欧氏空间(几何学)中,同一平面上的两条平行线不能相交,或者说不能永远相交。这是一个大家都熟悉的常识。

但是,在投影空间中就不一样了,比如,下图上的火车铁路在远离眼睛的时候会变得更窄。最后,两条平行的铁轨在地平线处相交,也就是无限远处的一点。


image.png

欧氏空间(或笛卡尔空间)能很好地描述我们的2D/3D几何,但它们不足以处理投影空间(实际上,欧氏几何是投影几何的一个子集(w=1))。一个2D点的笛卡尔坐标可以表示为(x,y)。

如果这个点远去到无穷远呢?无穷远处的点在欧氏空间中无法具体展示。在投影空间中,平行线会在无穷远处相遇,但在欧氏空间中却做不到。

那么数学家如何用数学的方法来描述这个问题呢?

解决方案: 齐次坐标

由 August Ferdinand Möbius(不错,就是那个莫比乌斯圈的那位) 提出的齐次坐标,使图形和几何学的计算在投影空间中成为可能。齐次坐标是用N+1个数来表示N维坐标的一种方式。

要制作二维齐次坐标,我们只需在现有坐标中增加一个额外的变量w。因此,笛卡尔坐标中的一点,(X,Y)在齐次坐标中就变成了(x,y,w)。而笛卡儿坐标中的X和Y在齐次坐标中的x、y和w则重新表达为

X = x/w
Y = y/w

为什么叫 “齐次”呢?

如前所述,为了将齐次坐标(x,y,w)转换为笛卡尔坐标,我们只需将x和y除以w即可。


image.png

将Homogeneous转换为Cartesian,我们可以发现一个重要的事实。让我们看看下面的例子。


image.png

如你所见 (1, 2, 3), (2, 4, 6)和(4, 8, 12)这三个点对应于同一个欧氏点(1/3, 2/3). 而任何乘以a的数(1a,2a,3a)与欧氏空间中的(1/3,2/3)是同一个点。因此,这些点是 “homogeneous/齐次 “的,因为它们在欧氏空间(或笛卡尔空间)中代表同一个点。换句话说,齐次坐标是与乘数a不相关的。


image.png

二、透视投影矩阵推导

通过第一节的描述,我们可以得出下述结论:
(x,y,z,1)与(ax,ay,az,a)代表的点在三维笛卡尔空间的是一致的,即(x,y,z)

即在顶点着色器中

vec4 clip_Position=u_MvpMatrix*a_Position;
gl_Position=clip_Position;

替换为:

vec4 clip_Position=u_MvpMatrix*a_Position;
gl_Position=vec4(clip_Position.x/clip_Position.w,clip_Position.y/clip_Position.w,clip_Position.z/clip_Position.w,1.0);

效果是完全一样的!

有了这个前提,现在开始透视投影矩阵的推导,首先上一张图片:

image.png

透视投影转化为设备坐标可以分为两个过程
1)所观察的物体在一个半截面的方锥形中,设坐标为P,将P投影到近截面上,坐标为P’,保留z值;如下图:


image.png

推导P'很简单,就是几何概念相似三角形,推导过程如下图:

image.png

2)P’归一化到一个长宽高都为1的立方体中,这个立方体位置在摄像机位置处


image.png

推导P'’的过程如下:

首先先明确一个概念:近截面的长为W,宽为H,那么近截面的X轴正方向坐标的最大坐标(H/2, 0),归一化到正方体上的坐标是(1,0),同理负坐标(-H/2, 0)对应到(-1,0),同理Y轴正方向(0, W/2)归一化到(0,1),Y轴负方向(0, -W/2)归一化到(0,-1)。
又因为P''和P'的坐标关系是线性关系:


image.png

image.png

由此可得:

image.png

然后令:θ=fov/2

image.png

同理可得:


image.png

设透视投影矩阵为:


image.png

利用齐次坐标变换

image.png

将系数代入矩阵,即为:


image.png

上述继续推导


image.png

最后得出矩阵


image.png

相关文章

  • 2022-10-29 齐次坐标与透视

    一、齐次坐标 问题:两条平行线可以相交?在欧氏空间(几何学)中,同一平面上的两条平行线不能相交,或者说不能永远相交...

  • 3D数学

    1, 向量 2, 矩阵 3, 欧拉角 4, 四元数 5, 坐标系变换 6, 齐次坐标与透视变换的推导 齐次坐标 向...

  • 栅格化时为什么要引入齐次坐标

    参考:为什么要引入齐次坐标,齐次坐标的意义(一)为什么要引入齐次坐标,齐次坐标的意义(二)用矩阵表述变换与齐次坐标...

  • 齐次坐标

    齐次坐标就是将一个原本是n维的向量用一个n+1维向量来表示,是指一个用于投影几何里的坐标系统 齐次坐标是计算机图形...

  • 齐次坐标

    H.C.(Homogeneous Coordinates) are a system of coordiantes...

  • 齐次坐标

    Homogeneous CoordinatesProblem: Two parallel lines can in...

  • 齐次坐标

    《计算机视觉教程》笔记编著:章毓晋(清华大学电子工程系)出版社:人民邮电出版社出版时间:2017.3 (其实,不管...

  • 齐次坐标表示向量与坐标理解

    转载:https://blog.csdn.net/oemt_301/article/details/1035299...

  • 坐标系变换数学基础

    什么是齐次坐标 用[n+1]维数组表示n维坐标的方法叫齐次坐标法(Homogenous coordinate)。 ...

  • 关于齐次坐标

    以下对齐次坐标的解释,主要参考在其他博客看到的,非原创,个人觉得解释的浅显易懂,有助于初学者对齐次坐标的理解。 对...

网友评论

      本文标题:2022-10-29 齐次坐标与透视

      本文链接:https://www.haomeiwen.com/subject/htzqtdtx.html