1 / 26

分治插入整合算法

分治插入整合算法. 评价一个算法的优劣关键在于其对地形表达的近似程度即 数学精度和时间效率以及其占用系统资源的多少 ,前面叙述的各种算法在这些方面均各有利弊,比如, 分治算法 由于其数据的分块处理,大大地减少了每次数据遍历的搜索量,因而其时效性非常好,但由于是递归执行,需要较大的内存空间,占用较多的系统资源 ; 与些相反, 逐点插入法 则比较容易实现,占用内存少,但其时效性差。.

cleo-finch
Download Presentation

分治插入整合算法

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 分治插入整合算法

  2. 评价一个算法的优劣关键在于其对地形表达的近似程度即数学精度和时间效率以及其占用系统资源的多少,前面叙述的各种算法在这些方面均各有利弊,比如,分治算法由于其数据的分块处理,大大地减少了每次数据遍历的搜索量,因而其时效性非常好,但由于是递归执行,需要较大的内存空间,占用较多的系统资源;与些相反,逐点插入法则比较容易实现,占用内存少,但其时效性差。 评价一个算法的优劣关键在于其对地形表达的近似程度即数学精度和时间效率以及其占用系统资源的多少,前面叙述的各种算法在这些方面均各有利弊,比如,分治算法由于其数据的分块处理,大大地减少了每次数据遍历的搜索量,因而其时效性非常好,但由于是递归执行,需要较大的内存空间,占用较多的系统资源;与些相反,逐点插入法则比较容易实现,占用内存少,但其时效性差。

  3. 为此人们也种提出过结合各种算法优点的相关算法,如文献「武晓波,王世新,肖春生.Delaunay三角网的生成算法研究(J).测绘学报1999.2]提出的合成算法等。在对各种算法深入研究的基础上,本文提出并实现了一种在数据分块基础上,逐点插入的算法,兼顾了分治算法和逐点插入算法的长处,经实验验证,取得了良好的效果,并将此算法命名为分治插入整合算法。为此人们也种提出过结合各种算法优点的相关算法,如文献「武晓波,王世新,肖春生.Delaunay三角网的生成算法研究(J).测绘学报1999.2]提出的合成算法等。在对各种算法深入研究的基础上,本文提出并实现了一种在数据分块基础上,逐点插入的算法,兼顾了分治算法和逐点插入算法的长处,经实验验证,取得了良好的效果,并将此算法命名为分治插入整合算法。

  4. 1算法的基本过程 • 一、数据集的分块(划分子集) • 二、各子集Vi中三角网的构建 • 三、所有子块的整合

  5. 一、数据集的分块(划分子集) • a.数据排序 • 根据数据点集V分布的情况对数据排序,如图所示,当数据分布的形状为图2. 4中的1所示时,将数据按Y坐标的升序排序,如果数据的分布形状如2所示,则将数据按X坐标的升序排序,以保证在数据分块时块的形状更接近方形,从而提高分块构网的效率(优化次数可更少)。

  6. b.子集Vi中数据点的数量的确定及子集Vi的划分 • 可以在程序中规定或以人机交互方式确定各子集Vi所含的点数的最大值Pmax和最小值Pmin,在系统应用N 的开方(N为总点数)来确定并输入Vi中允许点数的最大Pmax和最小Pmin,将数据集V分成点数近似相等的i个子集Vi (i=1, 2,…,n)。

  7. 二、各子集Vi中三角网的构建 • 1、构建第一个三角形 • 2、逐点插入生成新的三角形 • 3、新生三角形的LOP优化 • 4、其它子集构建初始三角网

  8. 1、构建第一个三角形 • 任取三点构成第一个三角形(不应共线,否则重新取点),顺序记录此三角形的标识号,如:T2_ 1,表示该三角形为第二子集的第一个三角形,新插入的点为该三角形的第一个点,对其三个顶点按顺时针方向记录点号,并顺序记录三个顶点的对边所对应的三角形的标识号。

  9. 其数据结构如图。图表中的“一”表示某点对边所对应的三角形不存在,即其对边为子三角网的凸壳边。其数据结构如图。图表中的“一”表示某点对边所对应的三角形不存在,即其对边为子三角网的凸壳边。

  10. 数据的结构共有三个部分。 • 第一部分记录了采样点的数量(FEATPOINTS)和各点的点号、平面坐标及高程值。

  11. 第二部分是三角网的拓扑结构,包含每一三角形的标识、顺时针组成该三角形的3个顶点点号,及与各顶点对边相邻三角形的标识号。数据结构简单,但清晰地记录了三角形的顶点、边以及与相邻三角形的关系,并隐式地记录了组成此三角形的各边。通过对各顶点的对边三角形的标识号的记录,完整描述了三角网中三角形间的拓扑关系,便于数据处理。第二部分是三角网的拓扑结构,包含每一三角形的标识、顺时针组成该三角形的3个顶点点号,及与各顶点对边相邻三角形的标识号。数据结构简单,但清晰地记录了三角形的顶点、边以及与相邻三角形的关系,并隐式地记录了组成此三角形的各边。通过对各顶点的对边三角形的标识号的记录,完整描述了三角网中三角形间的拓扑关系,便于数据处理。

  12. 第三部分记录了一条(随机的)外凸壳上的边,如:OUTESTTRI=T2 -6062, 3,表示标识号为T2-26062的三角形的第三个顶点的对边为外凸壳边。由于三角形的点号记录顺序均是顺时针的,因此,通过记录凸壳上的一条边就可以找到凸壳上的所有边。这样就便于新点的内插和子三角网的合并。 • 外凸壳上的边的记录便于快速搜索,如不记录,也可通过对三角网进行遍历找出第一个凸壳边,但显然降低了程序运行的效率。建立初始三角网(第一个三角形)时,凸壳边记录该三角形的任意一边。

  13. 2、逐点插入生成新的三角形 • ①三角形内点的插入 • ②三角形外点的插入 • ③新生成的三角形与其共边三角形的LOP优化 • ④重复以上步骤,直至该子集Vi中所有的点均插入完毕,即构成了该子集Vi的三角网 • ⑤外凸壳上通视点的搜索

  14. ①三角形内点的插入 • 在子集中依次取一个新的插入点,首先查找所取的新插入点i所在的三角形。如果i位于一三角形内,则分别连接i与此三角形的三顶点将该三角形一分为三(如图2. 6所示),标识3个新三角形,并按顺时针方向分别记录各三角形的三顶点的点号;将所在原三角形的拓扑关系传递给新三角形;依次对新三角形作与共边三角形的可能存在的LOP优化;去除三角网中的原三角形。

  15. ②三角形外点的插入 • 若i点不在任何三角形内,如图2. 7,则应先按记录的外凸壳上的边,找出现己构成的局部三角网的外凸壳上和i点通视的各点,如图中a, b, c, d和e点,并分别与点i连接,以构成相应的三角形,即a iba, a icb, a idc和a ied,这样能保证所生成的三角网的外壳为凸壳。图中i与f视为不通视。

  16. ③新生成的三角形与其共边三角形的LOP优化 • 接着对以对应的原外凸壳边如ba, cb, do和ed为公共边的各对三角形进行LOP优化以获得最佳形状的三角形。在②和③的LOP优化过程中,优化会生成新的三角形,新三角形将继续与共边三角形进行LOP优化,直到不能再优化为止。

  17. ④重复以上步骤,直至该子集Vi中所有的点均插入完毕,即构成了该子集Vi的三角网。④重复以上步骤,直至该子集Vi中所有的点均插入完毕,即构成了该子集Vi的三角网。 • ⑤外凸壳上通视点的搜索 • 如前所述,外凸壳边都是顺时针记录的,从图2 .7可看出,与外插点i通视的点所生成的新三角形均为顺时针的,如a iba, a icb, a ied,判定三角形点序的时针方向以代数面积计算法确定。

  18. 三角形的面积为: • 即当插入点与某边构成的三角形的面积为负时,该边为通视边。相反,则是不通视边。

  19. 而外插点1与不通视的点构成三角形后,为逆时针方向的,如a iaf,该三角形不能作为新三角形加入到三角网中。 • 此时三角形的面积为:

  20. 3、新生三角形的LOP优化 • 其原理就是根据D一三角网的性质对具有公共边的三角形组成的四边形进行判别,如果其中的某三角形的外接圆包含该四边形的第四个顶点,则将该四边形的对角线交换,生成以另一条对角线为公共边的两个三角形。此时一定满足空圆性质,得到D一三角形。同时对TIN的数据记录进行更新,增添新的三角形标识号记录及其对应的顶点和顶点的对边三角形,删除被废弃的三角形。

  21. 4、其它子集构建初始三角网 • 重复上述步骤1,2,3,对各子集构建三角网。此时每一三角网均是凸壳的。

  22. 三、所有子块的整合 • 1、确定相邻两个子三角网的外凸壳的下底线 • 如前所述,各子三角网的外壳为凸}壳。凸壳上点和边均在TIN的数据结构中按顺时针方向记录,搜索凸壳下底线的过程如下。

  23. 设SL, SR分别表示左右两个凸壳。 • 首先在左凸壳SL上任取一凸壳点,按上述三角形面积判定法找出右凸壳上的第一条通视边的第一个凸壳点。若无通视边,则在SL上顺时针取下一点再作搜索判断,直到找到通视边。 • 以右凸壳SR上刚找到的点仍按面积判定法搜索左凸壳SL上最后一条通视边的第二个凸壳点。 • 重复以上两个步骤,在SL和SR上循环搜索,直到从SL上的凸壳点不再能找到SR上的通视边,目从SR上的凸壳点也不再能找到SL上的通视边。 • 此时,连接在SL和SR上分别找到的最后的凸壳点,所连线即为左右凸壳的下底线。如图2. 10中的ac。

  24. 2、相邻两个子三角网的合并 • 找到左右两个了三角网的下底线后如图(ac)中的,就可从下底线ac开始向上分别在SL上找到a的上一个凸壳点b,在SR上找到c的下一个凸壳点d。对四边形acdb通过LOP优化新生两个三角形abc和bdc。 • 将新生三角形在左右两个了三角网中分别和与其共边的三角形进行优化处理,并按照共边即需优化的原则,一直优化到底,直到己是最优化为止。 • 再以bd为底边,重复上述步骤,分别向上找点生成新的优化三角形,直到出现三角形的面积值为正值时停止。就完成了两子三角网的合并。

  25. 3、完成全部子三角网的合并 • 重复上述1, 2步骤,从左直右合并所有的子三角网,构成整个凸壳三角网(TIN)。

More Related