计算机图形学的齐次坐标的理解
1什么是其次坐标。转自百度百科
http://baike.baidu.com/view/2132318.htm
所谓齐次坐标就是将一个原本是n维的向量用一个n+1维向量来表示。实数。显然一个向量的齐次表示是不唯一的,齐次坐标的h取不同的值都表示的是同一个点,比如齐次坐标[8,4,2]、[4,2,1]表示的都是二维点[4,2]。
那么引进齐次坐标有什么必要,它有什么优点呢? 许多图形应用涉及到几何变换,主要包括平移、旋转、缩放。以矩阵表达式来计算这些变换时,平移是矩阵相加,旋转和缩放则是矩阵相乘,综合起来可以表示为p'= m1*p + m2(m1旋转缩放矩阵, m2为平移矩阵, p为原向量,p'为变换后的向量)。引入齐次坐标的目的主要是合并矩阵运算中的乘法和加法,表示为p' =M*p的形式。即它提供了用矩阵运算把二维、三维甚至高维空间中的一个点集从一个坐标系变换到另一个坐标系的有效方法。 它可以表示无穷远的点。n+1维的齐次坐标中如果h=0,实际上就表示了n维空间的一个无穷远点。对于齐次坐标[a,b,h],保持a,b不变,|V|=(x1*x1,y1*y1,z1*z1)^1/2的过程就表示了标准坐标系中的一个点沿直线ax+by=0 逐渐走向无穷远处的过程。
一直对齐次坐标这个概念的理解不够彻底,只见大部分的书中说道“齐次坐标在仿射变换中非常的方便”,然后就没有了后文,今天在一个叫做“三百年重生”的博客上看到一篇关于透视投影变换的探讨的文章,其中有对齐次坐标有非常精辟的说明,特别是针对这样一句话进行了有力的证明:“齐次坐标表示是计算机图形学的重要手段之一,它既能够用来明确区分向量和点,同时也更易用于进行仿射(线性)几何变换。”——F.S. Hill, JR。
由于作者对齐次坐标真的解释的不错,我就原封不动的摘抄过来:
对于一个向量v以及基oabc,可以找到一组坐标(v1,v2,v3),使得v = v1a + v2 b + v3c (1)
而对于一个点p,则可以找到一组坐标(p1,p2,p3),使得 p –o = p1 a + p2 b+ p3c (2),
从上面对向量和点的表达,我们可以看出为了在坐标系中表示一个点(如p),我们把点的位置看作是对这个基的原点o所进行的一个位移,即一个向量——p–o(有的书中把这样的向量叫做位置向量——起始于坐标原点的特殊向量),我们在表达这个向量的同时用等价的方式表达出了点p:p= o + p1 a + p2b + p3 c(3)
(1)(3)是坐标系下表达一个向量和点的不同表达方式。这里可以看出,虽然都是用代数分量的形式表达向量和点,但表达一个点比一个向量需要额外的信息。如果我写出一个代数分量表达(1,4, 7),谁知道它是个向量还是个点!
我们现在把(1)(3)写成矩阵的形式:v = (v1 v2 v30) X (a b co)
p = (p1 p2 p3 1) X (a b co),这里(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),它就是个点。下面是如何在普通坐标(OrdinaryCoordinate)和齐次坐标(HomogeneousCoordinate)之间进行转换:
(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所说,仿射(线性)变换的进行更加方便。由于图形硬件已经普遍地支持齐次坐标与矩阵乘法,因此更加促进了齐次坐标使用,使得它似乎成为图形学中的一个标准。
以上很好的阐释了齐次坐标的作用及运用齐次坐标的好处。其实在图形学的理论中,很多已经被封装的好的API也是很有研究的,要想成为一名专业的计算机图形学的学习者,除了知其然必须还得知其所以然。这样在遇到问题的时候才能迅速定位问题的根源,从而解决问题。
计算机图形学的齐次坐标的理解相关推荐
- 1、计算机图形学——2D变换与齐次坐标
一.2D变换 1.缩放变换 缩放变换就是将图形上的点的各个维度同时放大或者缩小,比如,讲一个图片的长宽都缩小0.5倍 则缩小之后,新的图片上的点(x', y')可以表示为 用写成矩阵的形式就是 如果长 ...
- 如何理解计算机科学中的接口,计算机图形学
第一章名词解释: 计算机图形学名词解释:怎样用计算机生成.处理和显示图像的学科. 图形名词解释:能够在人们视觉系统中形成视觉印象的对象称为图形,包括自然景物和人工绘图. 数字图像处理名词解释:针对图像 ...
- 【计算机图形学】RGB图像在计算机中存储方式的理解——图形学基础
最近在学习计算机图形学方面的课程,主要是使用opencv来处理图像,这里涉及到了图像存储的方式,方便后续对图像通道分离处理还有滤波的理解. RGB色彩模式也就是红(Red).绿(Green).蓝(Bl ...
- 计算机图形学--------充分理解B样条曲线
样条(spline)二字,从英文翻译过来的,让人费解.B样条的数学定义更是让人匪夷所思.看了好几本参考教材,还是把总结一下B样条这个概念. 一.解释什么是样条. 实际应用中,样条是一根富有弹性的细木条 ...
- 齐次坐标的理解(2)
接上篇文章齐次坐标的理解(1):https://blog.csdn.net/m0_37957160/article/details/119549709 "齐次坐标表示是计算机图形学的重要手段 ...
- 计算机图形学与相关学科的关系,哈尔滨工业2015博士招生计算机图形学与人机交互设计大纲...
哈尔滨工业大学2015博士招生计算机图形学与人机交互设计考试大纲及参考书目 考博复习第一手复习资料及最权威的复习参考书目就是研究生院公布的考博科目考试大纲.参考书目,新东方在线整理了哈尔滨工业大学20 ...
- 计算机图形学几何变换
计算机图形学几何变换 Transformation(变换) 2D线性变换 Scale 缩放变换 [x′y′]=[sx00sy][xy]\begin{bmatrix}x'\\y'\end{bmatrix ...
- 计算机图形学中需要掌握的数学基础知识有哪些?
计算机图形学中使用了大量数学知识,尤其是矩阵和线性代数.虽然我们倾向于认为3D图形编程是紧跟最新技术的领域之一(它在很多方面确实是),但它用到的很多技术实际上可以追溯到上百年前,其中一些甚至是由文艺复 ...
- 计算机图形学基础1——MVP变换
参考链接: 线性变换 计算机图形学入门教程 视图变换 图形学随笔:MVP变换-视图变换 计算机图形学笔记-专栏 View/Camera Transformation视图变换 MVP变换: 我们知道我们 ...
最新文章
- TF-IDF算法百度附有代码 有解吧实现中文分词
- QT删除QWidget或QLayout下的控件
- Qt Creator填写代码
- python无符号转有符号_Python | 散布符号
- 将xml转为txt_HZ文章转短视频工具v1.0 快速将文章转为短视频 自动配音 配字幕 配图...
- JUnit5 @Tag注解示例
- idea系---懒人
- python中计算均方误差_Python中的均方根误差
- Git error: unable to create file xxx: Filename too long
- intel 服务器芯片型号怎么看,Intel CPU编号详解
- 【渝粤教育】国家开放大学2018年秋季 1289T中国当代文学专题 参考试题
- 正牌韦小宝之奉旨沟女 解说
- 如何自己编写一个交通仿真软件 (开篇) 走火入魔。
- 原生js实现table 横向纵向全选功能
- Linux的进程空间管理
- 快速设置电脑自动关机
- 程序设计基础c语言邹启明,【基础强化】2020年秋季学期程序设计C语言项目顺利结课...
- 练手必备,20个Python实战项目含源代码
- Windows访问共享文件 smb samba
- 嵌入式linux 海康 sdk,海康相机开发(1) SDK安装和开发
热门文章
- 02 Android 植物人大战僵尸-太阳花和豌豆射手卡片
- 电子价签在零售行业国内外的发展历程
- python学习笔记——集合与字典
- Win10系统自带的输入法,输入显示拼音按空格键才出中文
- 【ELM时序预测】基于多尺度集成极限学习机实现寿命预测附matlab代码
- 【前端】IOS微信浏览器点击右上角遮罩实现
- Linux CentOS 7.X下安装部署VNC
- C语言编程 6.21 在海军节开幕式上,有A,B,C 三艘军舰要同时开始后鸣放礼炮各21响,已知A舰每隔5s放一次
- 全球及中国差速器总成行业发展前景规划与投资模式分析报告2021年版
- CnOpenData中国汽车能源消耗量数据