Delaunay三角剖分

来源:互联网 发布:sql语句系统时间 编辑:程序博客网 时间:2024/04/29 02:59


一、三角网格基础


网格可以使用不同种类的多边形作为单元。如果使用的多边形是三角形,就称为三角网格(triangle mesh)。 三角网格在图形学和建模中被广泛使用,用来模拟复杂物体的表面。 三角网格具有易于表示和变换、属性简单、易于渲染等特性。
三角网格是一个有三维中一些三角化的面片互相通过它们的边链接在一起构成分段线性表面,且每条边最多包含在两个三角面片中。数学上定义三角网格为 M = ( K , V ) , 其中 K是一个单纯复形,表示顶点、边和三角面片的连接关系,即三角网络的拓扑类型;vi是网格中顶点位置的集合,V定义了网格在三维空间中的形状,成M为三角网格的几何表征。

二、三角剖分


1、基本三角剖分

定义:V是二维实数域上的以后先点集,E是以V中点作为端点构成的线段的集合,则V的一个三角剖分T=(V,E) 是一个平面图,满足:
(1) 平面图中的边不跨越除自身端点外的任何点。
(2) 边与边不相交
(3) 平面图中的所有面均为三角面,它们的合集构成V的凸包。

算法一: 平面扫描线算法

输入:平面有限点集V
输出:V的一个三角剖分T
将所有点从左往右排列,依次标记为P1,P2,...,Pn。用作左边的三个点构成初始凸壳。for i=4 to n dobegin    以点P(i-1)为起始点,逆时针在凸壳上找到点并与Pi连线,知道遇到转向点(Pi指向改点已有的点的射线都在指向改点的射线的逆时针方向)。    以点P(i-1)为起始点,逆时针在凸壳上找到点并与Pi连线,知道遇到转向点(Pi指向改点已有的点的射线都在指向改点的射线的逆时针方向)。更新凸壳,去掉与Pi相连的点,加上两个转向点与Pi本身endreturn 生成的图T
该算法利用一条从左往右移动的垂直扫描线一次扫面点集,并且处理当前扫描到的点。

2、二维Delaunay三角剖分

Delaunay三角剖分是 Boris Delaunay 于1934 年提出的。它具有一些优秀的性质,例如说它最大化三角剖分T中所有三角形的最小角,以避免剖分出国语扁平的三角形。
Delaunay边:e是E中满足一下条件的边:存在一个圆经过其端点a、b,圆内(不是圆上)不含有点集V中的任何其他店,则称e为Delaunay边。
Delaunay三角剖分:如果V的一个三角剖分T只包含Delaunay边,那么该三角剖分称为Delaunay三角剖分。
Delaunay三角剖分后得到的T上任意一个三角形的外接圆都满足空圆特性:该圆内不包含V中其他点

算法二: Lawson边翻转算法
对于任意四边形,都可以通过修改对角线的方法,来得到Delaunay剖分。先通过平面扫描线算法得到一个三角剖分,再将不满足空圆特性的边通过转换,得到Delaunay三角剖分,时间复杂度为O(n^2)。

算法三: 随机增量算法
先用一个足够大的三角形为主一堆随机排列的散点集,然后依次从点集中插入新点,不断更新当前的Delaunay三角剖分,直至所有点都插入完毕。
该算法时间复杂度为O(nlgn)

3、三维Delaunay三角剖分

二维Delaunay三角剖分推广到三维时存在投影变形。潘胜玲等提出了基于标准差的三维表面模型建立方法,定义了基于标准差的部分准则,代替空圆准则。
有时不仅需要对模型表面进行处理,还需要都内部结构进行剖分,称为体剖分,即四面体剖分,下面介绍一个同时使用于平面和空间三角剖分的算法。
Delaunay空洞:在Delaunay三角剖分D中插入一个新顶点P,删除所有外接圆包含P的三角形,形成一个新的三角形集合B,则称B为Delaunay空洞。
性质:P与Delaunay空洞边界个顶点相连形成的新三角剖分符合Delaunay准则。

4、 限定Delaunay三角剖分

在实际使用中,人们往往希望能在一个特定的区域中进行三角剖分。同时,在剖分过程中保留一些指定的点和线段。这种三角剖分称为限定三角剖分。
存在两种限定Delaunay三角剖分。
(1) Constrained Delaunay Triangulation
在剖分的时候不能细分边界边和限定边,不允许加点,可能造成剖分出来的边界附近的三角形不符合Delaunay条件。
(2) Conforming Delaunay Triangulation
允许加点。

限定Delaunay三角剖分的思路是不断细分线段,知道细分后得到的三角剖分符合Delaunay条件。然而,如果没有好的细分策略,可能出现在某个局部区域添加无穷多个点,使得这个局部的三角网格单元出现尺寸趋于零的失败情况。

算法四:边界细分算法

输入:限定点集cps以及限定线段集CSS
输出:符合条件的Delaunay三角剖分D


 
使用Delaunay三角剖分算法(如空洞算法)对限定点集进行剖分,得到初始的D对任意P属于CSSif 以P为直径的圆包含D的其他顶点 thenbegin    算出P的中点M,并利用Delaunay空洞性质将其插入D中。    将P从M处分为E1M和E2M两条线段,并将其插入到CSS中,将P从CSS中删除end删除最外面的超级三角形及其关联边。reuturn D


参考书文献:
《计算机图形学》 沈一帆 徐曼等编著
0 2
原创粉丝点击