生成Delaunay三角网的合成算法-Read
快速构建 Delaunay 三角网算法研究及OpenGL下三维可视化

快速构建 Delaunay 三角网算法研究及OpenGL下三维可视化王星【摘要】对Delaunay三角网的构建算法进行研究.提出了一种基于网格索引的构网算法.借助于该算法的特点提出了一种新的点一块一三角形映射机制定位点所在三角形的方法.简化了三角网的优化过程,提高了三角网构建速度.同时在OpenGL 开放式三维环境下,进行光照渲染等处理,实现了地形的三维可视化.%The construction of TIN based on grid index is reseached. A new point-block-triangle mapping mechanism used to locate the location of point is put forward in virtue of algorithmic characters, which simplifies the LOP of TIN and improves the speed of the constructing net. At the same time, it realizes the terrain 3D visualization in OpenGL environment by lighting and colouring.【期刊名称】《科学技术与工程》【年(卷),期】2011(011)009【总页数】5页(P2070-2074)【关键词】Delaunay三角网;网格索引;三维可视化;OpenGL【作者】王星【作者单位】昆明理工大学,昆明,650031【正文语种】中文【中图分类】P217DTM(数字地面模型)是实现地形三维可视化一种很有效的途径。
栅格和TIN(不规则三角网)是表示DTM的两种主要数据格式。
与栅格方法对格网的周围采样点按照距离远近加权平均的思想不同,TIN方法采取的是一种更加忠实于原始数据的方法,它几乎完整地保留原始数据,按Delaunay原则将采样点直接连成网建立起模型。
Delaunay三角网生成算法的研究与实现(1).

Delaunay三角网生成算法的研究与实现(1)摘要 Delaunay三角网作为一种主要的数字地形模型表示法,经过二十多年来的研究,它的生成算法已趋于成熟。
本文在简单回顾和评价了分割—归并法、逐点插入法、三角网生长法等三类主流算法的基础上,介绍并实现了一个融以上算法优点于一体,兼顾空间与时间性能的合成算法。
关键字数字地层模型;三棱柱; Delaunay;三角网;生成算法0 引言计算机图形学是利用计算机研究图形的表示、生成、处理、显示的学科。
经过30多年的发展,科学可视化已成为计算机图形学中最活跃的分支之一,并得到了广泛的应用。
在地质领域,由于大量珍贵的地层钻探数据需要用有效的方式进行直观地表达,因而致使可视化技术成为地质研究和工程勘查领域必不可少的手段。
在建模中,2.5维的分析处理由DTM(数字地形模型)模型进行。
DTM主要由栅格与TIN(不规则三角网)两种数据格式来表示[1,2],而以后者更为重要。
TIN的生成算法中,最终有三种为普遍接受和采用,它们是分割—归并法、逐点插人法和逐步生长法。
本文在简要分析了上述算法所有缺点的基础上,实现了一种合成算法。
1 Delaunay三角网生成算法回顾Tsaj根据实现过程,把生成Delaunay三角网的各种算法分为三类:分治算法;逐点插入法;三角网生长法。
Tsai为比较算法性能,给出了一张各种算法的时间复杂度对照表,如表1所示。
表中,N为数据点数。
0(f(N))表示算法的时间复杂度,它以算法中频度最大的语句频度f(N)来度量。
上述三类算法中,三角网生长法在80年代中期以后就很少用到,较常见的是分治算法和逐点插入法,而这两类算法又各有其长处和短处。
逐点插入法虽然实现过程相对简单,所需内存较小,但它的时间复杂度高。
所以从时间复杂度方面看,分治算法最好。
但由于算法中存在递归,它需要较大内存空间。
在普通的计算机平台上,运行速度慢和占用较大内存都是应该尽量避免的。
本次设计中,我们引入并实现了一种合成算法,将逐点插入法植入到了分治算法中,互相取长补短,从而达到了较好的时空性能,也很好地体现了两者的优势。
Delaunay三角网制作流程

Delaunay三角网制作流程1.打开arcmap,加载building.shp,右键该图层,选择Joins and relates下的join,如下:这里的data为excel表另存为下面的格式的文件,点击OK。
2.右键building图层,data---export data,设定文件名和路径,OK,在数据导出成功后,选择加数据加载到图层。
3.对上步生成的点数据,在空间分析工具条下(3D analyst),选择create TIN from Features,生成TIN数据,具体步骤如下:4.右键单击生成的tin3,选择properties,在出现的面板中选择symbology,点击show下的add,,做如下选择:再次点击一次add,然后点击dismiss,确定即可。
5.要素图层在三维场景中的三种显示方式:1)使用属性设置图层的基准高程;2)在表面上叠加要素图层设置基准高程;3)突出要素。
6.右键点击tin3图层:选择properties,在base height下做以下修改:注:对于第四步操作,还可以采取下面方法创建Delaunay三角网在arctoolbox下,选择Tin Triangle:点击ok即可。
安装SketchUp6 ESRI 插件的方法1.双击“SketchUp6ESRI.exe”,开始安装,2.接受协议,点击“Next”3.第一个组件“GIS Plugin”,使用户能够在SketchUp中将模型以Multipatch要素的形式导入GDB。
第二个组件“3D Ana lyst SketchUp 3D Symbol Support”,用户可以在ArcMap中将GIS数据导入SketchUp 中。
上述两个组件的安装位置尽量不要改变,可能会导致在SketchUp 中导出3D模型失败。
4.执行组件安装(4)在ArcGIS环境中激活SketchUp6 ESRI插件1.启动ArcMap界面,在工具栏上选择“Customize”2.点击“Add from file”,找到SketchUp ArcGIS Plugin安装目录下的Features To SKP.dll (注:默认安装在C:\Program Files\ArcGIS\SketchUp6下)3.添加插件动态库后,在T oolbars项中可以找到SketchUp6的功能项。
delaunay三角网生长准则及算法

Delaunay 三角网是Voronoi(或称thiessen多边形,V 图)图的伴生图形◆Delaunay 三角网的定义:由一系列相连的但不重叠的三角形的集合, 而且这些三角形的外接圆不包含这个面域的其他任何点。
◆Voronoi图的定义:Voronoi图把平面分成N 个区,每一个区包括一个点,该点所在的区域是距离该点最近的点的集合。
◆Delaunay三角网的特性:◆不存在四点共圆;◆每个三角形对应于一个Voronoi图顶点;◆每个三角形边对应于一个Voronoi图边;◆每个结点对应于一个Voronoi图区域;◆Delaunay图的边界是一个凸壳;◆三角网中三角形的最小角最大。
空外接圆准则最大最小角准则最短距离和准则在TIN中,过每个三角形的外接圆均不包含点集的其余任何点在TIN中的两相邻三角形形成的凸四边形中,这两三角形中的最小内角一定大于交换凸四边形对角线后所形成的两三角形的最小内角一点到基边的两端的距离和为最小Delaunay三角剖分的重要的准则张角最大准则面积比准则对角线准则一点到基边的张角为最大三角形内切圆面积与三角形面积或三角形面积与周长平方之比最小两三角形组成的凸四边形的两条对角线之比。
这一准则的比值限定值,须给定,即当计算值超过限定值才进行优化Delaunay三角剖分的重要的准则不规则三角网(TIN)的建立●三角网生长算法就是从一个“源”开始,逐步形成覆盖整个数据区域的三角网。
●从生长过程角度,三角网生长算法分为收缩生长算法和扩张生长算法两类。
方法说明方法实例收缩生长算法先形成整个数据域的数据边界(凸壳),并以此作为源头,逐步缩小以形成整个三角网分割合并算法逐点插入算法扩张生长算法从一个三角形开始向外层层扩展,形成覆盖整个区域的三角网递归生长算法逐点插入算法分割合并算法12121212递归生长算法333TIN 建立过程中的几个问题:◆邵春丽.DELAUNAY 三角网的算法详述及其应用发展前景◆鲍蕊娜,等:基于凸壳技术的Delaunay 三角网生成算法研究◆于杰等:Delaunay 三角网构建方法比较研究周围点的提取 点在三角形中的查找 空外接圆判断准则 线段求交问题。
一种改进的Delaunay三角网生成算法

的数据量小于分割 阈值时终止 。然后用逐点插入法在子集中生
0 引 言
不规则三角 网 TN( r nuae r glr e ok 在地理信 I T a gl dI e a t r ) i t ru N w
息 系统 、 计算机 图形学 及虚拟 实现 等领域 有着 广泛 的应 用 , 而 D l ny三角 剖 分 是 被 普 遍 采 用 的 TN 的 构 网 技 术 。 目前 e ua a I
王 强 郑逢斌 乔保军 马庆华
( 河南大学数据与知识工 程研究所 河南 开封 4 5 0 ) 7 0 0
摘 要
D lua e ny三角 网在 GS V 中用途广 泛 , 割一 归并法和逐 点插入法是 目前普遍用 于生成 D lu a a I/ R 分 e ny三角 网的 两种 算法。 a
(ntueo aaa dK o l g n ier g,ea nvrt,a eg4 5 0 , ea , hn ) Istt fD t n nwe eE gne n H n nU i syK in 70 0 H n n C i i d i ei f a
Ab t a t sr c D lu a ra g lt n h swie a p ia in i o r p i n o mai n S se a d Vi u lRe l y a d i wop e ae t e e a e a n y t n u ai a d p l t n Ge ga hc I f r t y t m n r a a i , n t t r v n n r ’ i o c o o t t s l g
在研 究基于这两种算法 的合成算法后 , 对其进行 了两点改进 。一是简 化凸壳的生成 ; 二是 三角形快速定位 , 通过 确定 向量之 间的关
一种高效构建Delaunay三角网的算法

关 键词 : ea n y三角 网; 据分块 ; O D lu a 数 L P优 化 ; 不规则 三 角 网 中图分 类号 :P3 1 文献标 识码 : 文章编 号 :6 1—7 4 ( 0 0 0 T 1 A 17 17 2 1 ) 2—0 9 1 1—0 5
第 9卷 第 2期
21 0 0年 4月
江 南 大 学 学 报 (自 然 科 学 版 ) J u n l f in n nUnv ri ( au a ce c dt n o r a a g a ie s y N tr l in eE io ) oJ t S i
Vo . No 2 19 .
A i h- f c e y Al o ih fCo t u tng Dea H g Ef inc g r t m o nsr c i l una i ng a i n i y Tra ul tO
SHAN — i n , ZHENG o Xu x a g Ta , LIGe n
me h p rii n,t e tbu l ra g l t d ir g a t r so h s u e s inal tme g st e e s a tto h n i idsti n u a e r e ul rnewo k n t e e s bs t ,f ly i r e h s ting l rn t r ne b ne s q n i ly Th plti t d o h s a g rt ra u a e wo kso y o e ue ta l . e s itng meho ft i l o ihm a c e s h c n de r a e t e s a c c pe o o n sr ma ka l .Th eo mp o e a m c n t uid De a a ra ul to e r h s o fp i t e r b y e us fi r v d Gr ha s a o b l l un yti ng a i n o u bl c n r a e h ro ma c ft l o ih fs b- o k i c e s st e pe f r n e o he ag rt m.Ther s l fo x rme t h wst tt e e u to ure pe i n ss o ha h a g rt m sa ditnc up ro iy i h fi i n y o o tuc i g ir g l rnewo k l o ih ha si ts e i rt n t e efc e c fc nsr tn re u a t r . Ke wor y ds: d l u y ti n ulto e a na ra g a i n, da a e pa tton, ts t rii LOP o i zn ptmii g, ti n u a e ra g l t d
DELAUNAY三角网的算法

为了克服基于散点构网算法的上述缺点,特别是 为了提高算法效率,可以对网格中三角形的空圆 特性稍加放松,亦即采用基于边的构网方法,其 算法简述如下:
1、根据已有的地性线和特征线,形成控制边链表。 2、以控制边链表中一线段为基边,从点集中找出 同该基边两端点距离和最小的点,以该点为顶点, 以该基边为边,向外扩展一个三角形(仅满足空 椭圆特性)并放入三角形链表。 3、按照上述第2步,对控制边链表所有的线段进 行循环,分别向外扩展。
4、依次将新形成的三角形的边作为基边,形成新 的控制边链表,按照上述第2步,对控制边链表所 有的线段进行循环,再次向外扩展,直到所有三 角形不能再向外扩展为止。
四、算法 1、分割归并法 2、逐点插入算法 3、三角网增长法
逐点插入法:
1、遍历所有散点,求出点集的Fra bibliotek容盒,得到作为点 集凸壳的初始三角形并放入三角形链表。 2、将点集中的散点依次插入,在三角形链表中找出 其外接圆包含插入点的三角形(称为该点的影响三角 形),删除影响三角形的公共边,将插入点同影响三 角形的全部顶点连接起来,从而完成一个点在 Delaunay三角形链表中的插入。
DELAUNAY三角网的算法
一、引言 TIN(Triangulated Irregular Network,不规则三角网)
是由Peuker和他的同事于1978年设计的一个系 统,它是根据区域的有限个点集将区域划分为相等的 三角面网络,数字高程由连续的三角面组成,三角面 的形状和大小取决于不规则分布的测点的密度和位置, 能够避免地形平坦时的数据冗余,又能按地形特征点 表示数字高程特征。TIN常用来拟合连续分布现象的 覆盖表面。
3、优点:结构良好,数据 结构简单,数据冗余度 小,存储效率高,可适 应各种分布密度的数据。
机载LiDAR点云的Delaunay三角网快速生成算法

2 . 1 点 云 数 据 分 块
式 在特 定应 用 中具 有 各 自的优 势 … 。其 中 , T I N具 有存 储 高效 、 数 据结 构简 单 、 适 合表 现不规 则地 面特 征、 能够 表示 线性 特 征 和迭 加 任 意形 状 的 区域边 界 等优点 , 能更 好地 表达 目标 的几何 空 间特 征 , 更 大程 度 保 留 地 物 的 形 态 便 于 后 续 处 理 和 分 析 J 。在 T I N生成 方 法 中 , D e l a u n a y三 角 剖 分 具 有 最 小 角 最 大 的 良好性 质 , 是 被公认 的最 优三 角剖分 , 因此 本文
机载激光雷达 ( L i D A R ) 能够快速精确地获取地
物 目标 表面 的位 置 和高 度信 息 , 为 目标 信 息 提取 和 三维重 建 提 供 了新 的数 据 源 。L i D A R 点 云 中各 激 光 点是 离散 的 , 现 有 的代 表 性 的 离散 点 云 数据 表 达
方 法
一
对 点 云数据 中的所 有激 光点 进行 三角形 区域 分
块, 并 确保 每个子 块 内激 光点 个 数 不 超 过个 数 阈值
,
具体 步骤如 下 : ( 1 ) 生成 点 云凸包 。将所 有激 光点 中 , Y , x + y ,
—
Y最大 值 和最 小 值 点 作 为 初 始 凸 包 点 J , 按 照 顺
时针方 向生 成初 始 凸包 , 再 利 用 比较 斜率 的方 法 逐 步生成 点 云的 凸包 ( 如 图 1中 凸包 点 C , i =1 , 2 ,
…
,
8 ) 。
( 2 ) 搜索 点云 重心 点 。计 算 所有 激 光 点 坐标 的
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
• 综上分析可知,正是小于0的面积坐标指明 了目标三角形的方向.在建立了三角形拓扑 关系的三角网中,利用面积坐标的这一特 性,可很快查到包含点所在的三角形或所 处的三角边.
• 基于面积坐标的定位过程如图5所示.设三角形P1P2P3 为搜索的起点,计算点P的面积坐标可知L1< 0,取L1 的对应边P2P3的邻接三角形P3P2P4作为下一个判断的 三角形.依次进行判断,直至三角形P7P6P8.此时若 L1>0, L 2>0, L 3>0都大于0,则点P在三角形P7P6P8内; 若Li(i=1,2, 3)=0,则点P在Li所对应的边上.
• 如图4所示,面积坐标(L1,L2,L3),其中,
• 这里的三角形面积是有向面积,按顶点顺 序,逆时针旋转为正,顺时针旋转为负.
• 若P在三角形中,必有其所有面积坐标大于零(见 图4(a)),即L1>0, L 2>0, L 3>0; 若P在三角形外,则 至少有一个面积坐标小于零.如图4( b)所示,P在三 角形P2P3边外侧,则 L1<0, L 2>0, L 3>0;若P在三角 形边上(这儿排除P与三角形顶点重合的情况),那 么必有值为0的面积坐标.如图4c所示,P在三角形 P2P3边上,则有L1=0, L 2>0, L 3>0;
• 4. 3插点入网 • 该了模块分为两个步骤:首先,定位待插 入点,即确定点在哪个三角形中;然后,根 据点在三角形的位置,修改三角网.
• 4. 3. 1基于面积坐标的点定位算法 • 随着点数增加,三角形数目也成倍增加. 当三角形数目较大时,利用点在多边形中 的判断方法,扫描整个或局部三角网格, 是相当费时的.快速合成算法利用三角形面 积坐标和三角网拓扑关系来解决这一问题。
生成Del aunay三角网的合成算法
• 一种生成Delaunay三角网的合成算法 2000 武晓波,王世新,肖春生 • 生成Del aunay三角网的快速合成算法 吴宇 晓,张登荣 2004
• 经过20多年的研究,自动生成Delaunay三角网 的算法已趋于成熟。它们基本上可分为分治算 法逐点插入法、三角网生长法等3类。其中前 两类较第3类在应用户上更加广泛。但即使这 两类算法也分别存在着时间和空间效率上的缺 陷,使它们的应用受到了一定的限制。武晓 波,2000提出了一个融以上两类算法优点于一 体,兼顾空间与时间性能的合成算法。经测试, 它的运算效率大大高于逐点插入法,在大多数 情况下,也高于分治算法,在分割阈值约为总 数据量的十分之一时,效率最高。
• 4.3.2点定位后的三角网修改 • 由于所有待插入点必在凸壳内,所以待 插入点必在三角形内或三角边上.跟据点与 所处三角形的关系,点插入三角网的情况 及相应的三角网修改方法分为如下3种情况 (见图6) .
• 插入点在三角形内.如图6( a)所示,待插入点P在三 角形P1P2P3内.此时,将点P与此三角形的三个顶点 相连,形成3个三角形. • 待插入点在非凸壳边上.由于所在边不是凸壳边, 此边必是两个三角形的公共边.如图6( b)所示,待插 入点P在边P2P3上,P2P3是三角形P1P2P3和P2P3P4 的公共边.此时,点P与P2P3两个三角形的对应点P1 和P4相连,形成4个三角形. • 待插入点在凸壳边上. 凸壳边有且仅有一个相邻三 角形,因此图6(c)中,只需将点P与P2P3惟一的相邻 三角形P1P2P3的对应点P1相连,形成两个三角形.
• 4算法的基本模块 • 为了便于分割,在执行各模块之前,首 先要对初始点集按升序以x坐标为主,y坐 标为辅进行排列,确保子三角网不相互叠 置. • 4. 1格雷厄姆法计算凸壳
• 4. 2初始三角网的建立与修正 • 以凸壳上y值最小的点(设为点P1)为出发 点,按序与凸壳上其余的点相连(如图3( b) 所示). •
• 1引言 • 分治算法和逐点插入法由于易于实现,是当前 应用较广的两类算法。这两类算法所采用的实现方 法决定了它们存在着明显的局限性,分治算法需要 大量的内存,逐点插入法运行速度极慢。当数据量 较大或计算机性能较差时,它们的使用都将遇到困 难。 • 武晓波,2000提出了一个成功地解决了上述问题的合 成算法。该算法将逐点插入法嵌入到分治算法中, 使它们优势互补,弥补了各自的缺陷。经过一个有 2533个点数据测试,表明合成算法的运算效率大大 高于逐点插入法,在大多数情况下也高于分治算法
• 2己有算法介绍2. 1分治算法2. 2逐点插入法2. 3 三角网生长法 • 3合成算法 • 由以上介绍不难看出,目前采用较多的前两 类算法各具优势又有局限,同时,它们又具有 明显的互补性。分治算法时间性能好,空间性 能差;逐点插入法空间性能好,时间性能差。 我们评价一个算法的优劣是看它对时间和空间 的消耗,即时空性能的综合表现。因此,就产 生了一个非常自然的想法,为何不把它们结合 起来,取长补短,从而提高算法的性能呢?
• 需要注意的是,点集是任意离散的,出发点P1 可能与多点共线.如图3 ( a)所示,点P1一P5共 线,而事实上点P2一P4不参加构成初始三角网, 因此,需要在建立初始三角网前对凸壳进行修 正。如果存在点P3, P4,...Pk(2< k<n),与P1P2共 线,则必须删去点P2, P3, ..., Pk-1,并由P1Pk 代替P1P2成为初始边.同样,如果存在点 Pk,Pk+1...,Pn-1(2< k<n)与PnP1共线,则必须删 去点Pk+1...,Pn-1,并由PkP1代替PnP1,成为终 止边(如图3所示).经修正后,所有凸壳点按逆 时针重新编号.
• 合成算法结合了传统的递归分割法和逐点插入 法的优点,兼顾空间和时间性能然而,该算法 不可避免地继承了两种传统算法的不足,在执 行效率上受到限制,为了解决执行效率问题, [吴宇晓,张登荣 2004]提出了快速合成算法, 对合成算进行了改进和优化。该算法基于面积 坐标的点定位算法和简化的高效空外接圆判断 算法,从而大大提高算法的整体执行效率;同 时充分考虑平面点集的任意性,适用于对任意 平面点集构建Delaunay三角网。
• 把分治算法与逐点插入法结合起来的具体 做法是,以分治算法为主体,当递归分割 数据集的过程进行到子集中的数据量小于 一个预定值——分割阈值时终止,然后用逐 点插入法在子集中生成子三角网。我们把 这一新的算法称为合成算法。它的流程图 见图1。其中v表示数据集:Nv是V的数据量 ;Nd是分割阈值;Nl, Nr分别表示两个子集的 数据量;Tl,Tr分别表示在子集中建立的两个 子三角网。