一直对齐次坐标这个概念的理解不够彻底,只见大部分的书中说道“齐次坐标在仿射变换中非常的方便”,然后就没有了后文,今天在一个叫做“三百年 重生”的博客上看到一篇关于透视投影变换的探讨的文章,其中有对齐次坐标有非常精辟的说明,特别是针对这样一句话进行了有力的证明:“齐次坐标表示是计算机图形学的重要手段之一,它既能够用来明确区分向量和点,同时也更易用于进行仿射(线性)几何变换。”—— 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: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所说,仿射(线性)变换的进行更加方便。由于图形硬件已经普遍地支持齐次坐标与矩阵乘法,因此更加促进了齐次坐标使用,使得它似乎成为图形学中的一个标准。

--------------------------------------------------------------------------------------------------------------

所谓齐次坐标就是将一个原本是n维的向量用一个n+1维向量来表示。

在空间直角坐标系中,任意一点可用一个三维坐标矩阵[x y z]表示。如果将该点用一个四维坐标的矩阵[Hx Hy Hz H]表示时,则称为齐次坐标表示方法。在齐次坐标中,最后一维坐标H称为比例因子。

齐次点具有下列几个性质:
  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.0, 1.0)。
  3)当w不为零时,齐次点坐标(x, y, z, w)即三维空间点坐标(x/w, y/w, z/w);当w为零时,齐次点(x, y, z, 0.0)表示此点位于某方向的无穷远处。

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

--------------------------------------------------------------------------------------------------------------

以上很好的阐释了齐次坐标的作用及运用齐次坐标的好处。其实在图形学的理论中,很多已经被封装的好的API也是很有研究的,要想成为一名专业的计算机图形学的学习者,除了知其然必须还得知其所以然。这样在遇到问题的时候才能迅速定位问题的根源,从而解决问题。

http://www.cnblogs.com/csyisong/archive/2008/12/09/1351372.html

http://blog.csdn.net/jiangdragon/article/details/7550598

齐次坐标(Homogeneous Coordinate)的理解相关推荐

  1. 齐次坐标(Homogeneous Coordinate)

    齐次坐标就是将n维的向量用n+1维向量表示,增加了一个维度以后可以表达更多的信息: 在欧式距离中无法表示无穷远处的点,(∞,∞)是没有意义的.在齐次坐标中p=(x,y,0),就可以轻松的表示p点是一个 ...

  2. 齐次坐标(Homogeneous Coordinate)介绍

    1.前言 "齐次坐标表示是计算机图形学的重要手段之一,它既能够用来明确区分向量和点,同时也更易用于进行仿射(线性)几何变换."-- F.S. Hill, JR. 2.介绍 2.1 ...

  3. 齐次坐标 (Homogeneous Coordinate)

    转自:http://www.cnblogs.com/xmzyl/articles/1604150.html 齐次坐标(Homogeneous Coordinate) 在空间直角坐标系中,任意一点可用一 ...

  4. unity-shader相关

    title: unity-shader相关 categories: Unity3d-Shader tags: [unity, shader] date: 2017-09-12 10:05:18 com ...

  5. 李群、李代数等机器人学数学概念

    Question:设函数T = transl(x,y,z),创建SE3平移变换.H = transl (0.5 0 0) = ? SE3变换的目的是什么? 解:三维齐次矩阵  ,x轴平移0.5. 目的 ...

  6. 齐次坐标的理解(2)

    接上篇文章齐次坐标的理解(1):https://blog.csdn.net/m0_37957160/article/details/119549709 "齐次坐标表示是计算机图形学的重要手段 ...

  7. Homogeneous Coordinates(齐次坐标)

    Problem: Two parallel lines can intersect. 问题: 两条平行线会相交   铁轨在无限远处相交于一点Problem: Two parallel lines ca ...

  8. AI理论知识基础(23)-齐次坐标

    所谓齐次坐标就是将一个原本是n维的向量用一个n+1维向量来表示.例如,二维点(x,y)的齐次坐标表示为(hx,hy,h).由此可以看出,一个向量的齐次表示是不唯一的,齐次坐标的h取不同的值都表示的是同 ...

  9. 空间几何变换 之 齐次坐标

    在欧式空间(笛卡尔空间)中,使用坐标描述2D/3D几何非常合适,例如2维欧式空间中的点表示为(x , y),3维空间中点表示为(x , y , z).但是这种方法不适用于透视空间,当一个点位于无穷远处 ...

最新文章

  1. 推荐8个极受欢迎的网站和软件,让你总有一天你会用到!
  2. 讲解SQL2005数据库转到SQL2000的步骤
  3. listFiles()
  4. 面向对象程序设计_面向对象的程序设计(续)
  5. java简单毕设_计算机毕业设计之自定义毕设课题需要如何确定工作量
  6. IP 数据报首部分析
  7. 32f407tim4时钟源频率_慎重选择时钟发生器,别让这俩指标影响你的ADC 「图片」...
  8. C语言成为大学必修课!想要不挂科?你只需要这样做
  9. 地图定点图表联动_拿下这套地图组件,快人一步做出炫酷报表!
  10. 记录hadoop HDFS与hadoop YARN无法访问问题
  11. Hadoop节点热拔插
  12. 某公司的openstack实施招聘要求
  13. android python .xlsx_python读写xlsx
  14. uliso刻录系统到U盘
  15. HCIP-RS-H12-221题库以及解析(部分)
  16. vue3引入particles(粒子特效)
  17. tp5 验证码 验证不正确 (跨域问题)
  18. 计算机excel柱状图刻度单位,如何设置excel图表的坐标刻度和单位-excel 柱状图 坐标 区间刻度...
  19. 鸟哥的Linux 私房菜 (1-12) + my
  20. PXE+Kickstart无人值守安装系统

热门文章

  1. linux kvm 时间,查看KVM虚拟机时间
  2. uni-app--》什么是uniapp?如何开发uniapp?
  3. leetcode之字母异位词分组
  4. [计算机视觉] (三)相机的针孔成像模型
  5. 图像去噪——Neighbor2Neighbor: Self-Supervised Denoising from Single Noisy Images
  6. matlab如何采集两路语音信号,基于MATLAB的语音信号采集与处理
  7. 甲醇合成技术的研究进展
  8. 掌握云服务器使用的基本方法
  9. 【KEIL-MDK】系列——主题配色
  10. 【C语言】街区最短路径问题解题思路