zoukankan      html  css  js  c++  java
  • Delaunay三角剖分算法

    Delaunay三角剖分算法

     

    目录

    1. 三角剖分与Delaunay剖分的定义
    1.1.三角剖分定义
    1.2. Delaunay三角剖分的定义
    1.3.Delaunay三角剖分的准则
    1.4.Delaunay三角剖分的特性
    1.5.局部最优化处理
    2.Delaunay剖分的算法
    展开
    1. 三角剖分与Delaunay剖分的定义
    1.1.三角剖分定义
    1.2. Delaunay三角剖分的定义
    1.3.Delaunay三角剖分的准则
    1.4.Delaunay三角剖分的特性
    1.5.局部最优化处理
    2.Delaunay剖分的算法
    展开
     
      

     

     

    编辑本段1. 三角剖分与Delaunay剖分的定义

      如何把一个散点集合剖分成不均匀的三角形网格,这就是散点集的三角剖分问题,散点集的三角剖分,对数值分析以及图形学来说,都是极为重要的一项预处理技术。该问题图示如下:
     

    编辑本段1.1.三角剖分定义

      【定义】三角剖分:假设V是二维实数域上的有限点集,边e是由点集中的点作为端点构成的封闭线段, E为e的集合。那么该点集V的一个三角剖分T=(V,E)是一个平面图G,该平面图满足条件:
     
      1.除了端点,平面图中的边不包含点集中的任何点。
     
      2.没有相交边。
     
      3.平面图中所有的面都是三角面,且所有三角面的合集是散点集V的凸包。
     

    编辑本段1.2. Delaunay三角剖分的定义

      在实际中运用的最多的三角剖分是Delaunay三角剖分,它是一种特殊的三角剖分。先从Delaunay边说起:
     
      【定义】Delaunay边:假设E中的一条边e(两个端点为a,b),e若满足下列条件,则称之为Delaunay边:存在一个圆经过a,b两点,圆内(注意是圆内,圆上最多三点共圆)不含点集V中任何其他的点,这一特性又称空圆特性。
     
      【定义】Delaunay三角剖分:如果点集V的一个三角剖分T只包含Delaunay边,那么该三角剖分称为Delaunay三角剖分。
     

    编辑本段1.3.Delaunay三角剖分的准则

      要满足Delaunay三角剖分的定义,必须符合两个重要的准则:
     
      1、空圆特性:Delaunay三角网是唯一的(任意四点不能共圆),在Delaunay三角形网中任一三角形的外接圆范围内不会有其它点存在。如下图所示:
     
      

     

      2、最大化最小角特性:在散点集可能形成的三角剖分中,Delaunay三角剖分所形成的三角形的最小角最大。从这个意义上讲,Delaunay 三角网是“最接近于规则化的“的三角网。具体的说是指在两个相邻的三角形构成凸四边形的对角线,在相互交换后,六个内角的最小角不再增大。如下图所示:
     
      

     

     

    编辑本段1.4.Delaunay三角剖分的特性

      以下是Delaunay剖分所具备的优异特性:
     
      1.最接近:以最近临的三点形成三角形,且各线段(三角形的边)皆不相交。
     
      2.唯一性:不论从区域何处开始构建,最终都将得到一致的结果。
     
      3.最优性:任意两个相邻三角形形成的凸四边形的对角线如果可以互换的话,那么两个三角形六个内角中最小的角度不会变大。
     
      4.最规则:如果将三角网中的每个三角形的最小角进行升序排列,则Delaunay三角网的排列得到的数值最大。
     
      5.区域性:新增、删除、移动某一个顶点时只会影响临近的三角形。
     
      6.具有凸多边形的外壳:三角网最外层的边界形成一个凸多边形的外壳。
     

    编辑本段1.5.局部最优化处理

      理论上为了构造Delaunay三角网,Lawson提出的局部优化过程LOP(Local Optimization Procedure),一般三角网经过LOP处理,即可确保成为Delaunay三角网,其基本做法如下所示:
     
      1.将两个具有共同边的三角形合成一个多边形。
     
      2.以最大空圆准则作检查,看其第四个顶点是否在三角形的外接圆之内。
     
      3.如果在,修正对角线即将对角线对调,即完成局部优化过程的处理。
     
      LOP处理过程如下图所示:
     
      

     

     

    编辑本段2.Delaunay剖分的算法

      Delaunay剖分是一种三角剖分的标准,实现它有多种算法。
     

    编辑本段2.1.Lawson算法

      逐点插入的Lawson算法是Lawson在1977年提出的,该算法思路简单,易于编程实现。基本原理为:首先建立一个大的三角形或多边形,把所有数据点包围起来,向其中插入一点,该点与包含它的三角形三个顶点相连,形成三个新的三角形,然后逐个对它们进行空外接圆检测,同时用Lawson设计的局部优化过程LOP进行优化,即通过交换对角线的方法来保证所形成的三角网为Delaunay三角网。
     
      上述基于散点的构网算法理论严密、唯一性好,网格满足空圆特性,较为理想。由其逐点插入的构网过程可知,遇到非Delaunay边时,通过删除调整,可以构造形成新的Delaunay边。在完成构网后,增加新点时,无需对所有的点进行重新构网,只需对新点的影响三角形范围进行局部联网,且局部联网的方法简单易行。同样,点的删除、移动也可快速动态地进行。但在实际应用当中,这种构网算法当点集较大时构网速度也较慢,如果点集范围是非凸区域或者存在内环,则会产生非法三角形。
     
      Lawson算法的基本步骤是:
     
      1、构造一个超级三角形,包含所有散点,放入三角形链表。
     
      2、将点集中的散点依次插入,在三角形链表中找出其外接圆包含插入点的三角形(称为该点的影响三角形),删除影响三角形的公共边,将插入点同影响三角形的全部顶点连接起来,从而完成一个点在Delaunay三角形链表中的插入。
     
      3、根据优化准则对局部新形成的三角形进行优化。将形成的三角形放入Delaunay三角形链表。
     
      4、循环执行上述第2步,直到所有散点插入完毕。
     
      这一算法的关键的第2步图示如下:
     
      如下图所示:当离散点集构成圆环时,Lawson算法产生的非法三角形
      离散点集合

    离散点集合

      正确的三角剖分

    正确的三角剖分

      Lawson算法产生的三角剖分

    Lawson算法产生的三角剖分

     

    编辑本段2.2.Bowyer-Watson算法

      Lawson算法(Lawson???)的基本步骤是:
     
      1、构造一个超级三角形,包含所有散点,放入三角形链表。
     
      2、将点集中的散点依次插入,在三角形链表中找出其外接圆包含插入点的三角形(称为该点的影响三角形),删除影响三角形的公共边,将插入点同影响三角形的全部顶点连接起来,从而完成一个点在Delaunay三角形链表中的插入。
     
      3、根据优化准则对局部新形成的三角形进行优化。将形成的三角形放入Delaunay三角形链表。
     
      4、循环执行上述第2步,直到所有散点插入完毕。
     
      这一算法的关键的第2步图示如下:
     
      

     

  • 相关阅读:
    【爬虫】新闻统计
    python pip 出错 "Can't connect to HTTPS URL because the SSL module is not available.
    【sql server复制】sql server复制【最佳实践】
    mybase个人数据库笔记工具下载
    sqlserver脱机时ldf文件丢失重建
    sqlserver CTE定位点类型和递归部分的类型不匹配
    mysql物理存储(页区段)
    sql server update与delete引发的死锁
    Linux学习笔记(19)linux定时任务(crontab)
    mysql工具生态
  • 原文地址:https://www.cnblogs.com/FredCong/p/2678083.html
Copyright © 2011-2022 走看看