因此,如果没有指定边缘,那么CDT与Delaunay是一样的。CDT是一种分而取之的方法,因为给定的数据是依据任意的尺寸来筛选的,并且将区域划分成若干带。这个过程将一直重复,直到得到整个区域的CDT为止。 4、循环执行上述第2步,直到所有散点插入完毕。
2、Lawson的算法或 对角线交换算法
3、限制性的Delaunay三角化(Constrained Delaunay Triangulation) (CDT)
这种算法已经在N个给定点的区域在O(NlogN) 的时间复杂性下经过了测试。如果指定点集和不交叉边缘,那么给定点集的CDT具有所有新的边缘所具有的特性,即存在一个这样的圆,
b、尽可能使其与Delaunay三角网相近
转换将x描述为这样,y为初始值,点与节点的距离为p。描述的Voronoi区域Rp*和Rq*是被画出的二分线限制的,为Cpq,,超变态网页游戏大全,它是一个双曲线或是一个直的半条线。只有在扫描线到达所有的两个形成的节点,才能形生二分线。预期的顶点是两个邻近的二分线的交点。
1、遍历所有散点,求出点集的包容盒,得到作为点集凸壳的初始三角形并放入三角形链表。
这是Delaunay三角化最简单和最广泛应用的算法 如果指定了平面的点集以及一系列不交错的边缘,那么CDT 将产生如下的网格:
2、以控制边链表中一线段为基边,从点集中找出同该基边两端点距离和最小的点,以该点为顶点,以该基边为边,向外扩展一个三角形(仅满足空椭圆特性)并放入三角形链表。
如果按照上一篇的思路,如果点数稍微一多,那么我们在三角剖分的时候就会遇到大量的判断和计算,看来我们的思路有一定问题,虽然是按照Delaunay三角网的判别标准(空外圆性质)来进行判断,但是没有从中发现一些规律来。换一种思维方式:我们这样想,先随机在点云中取一个点,然后在这个点附近取两个点形成一个三角形,然后依次判断除开这三个点所有其他点是否在这三个点确定的外接圆的外面,如果碰到在外接圆里面的,那么就在这个点的附近另外取两个点形成一个新的三角形,接着判断。如果所有点都在这外接圆外面的话,那么分别以这个三角形的三条边为基础延伸,一直循环到所有点。这样想的话就比上一篇的可实现性好一些了,但是还是不好,没有一点智能判断在里面,每次循环时都要把所有点数据都判断一遍,当数据量特别大时,这种算法简直是要人命,咱们还是不要自己琢磨了,看看专家们是怎么解决这个问题的吧,看看他们的算法!
b、如果有任一个节点在圆内,那么至少边缘的一个节点是不可见的,例如,如果线是从点到边缘的两个节点来画的,那么至少有一条直线会与网格的边缘相交。
在Voronoi多边形中,扫描线被定义为一条移动的水平线与Voronoi 边界的交点。外接圆是通过找出连接节点的直线的三条平分线的交点来定位的。但是这样得到Voronoi 多边形不是太有力。一对一的几何变换在双曲线中绘制出一条平分线或者一条垂直的半条。任一两节点的平分线,命名为p 和q, 描述如下:
1、Watson的算法
Delaunay三角形网的通用算法-逐点插入算法:
其它Delaunay优化算法:
为了克服基于散点构网算法的上述缺点,特别是为了提高算法效率,可以对网格中三角形的空圆特性稍加放松,亦即采用基于边的构网方法,其算法简述如下:
a、边缘的终点都落在圆内
Watson的算法一开始就要形成一个包含所有给定点区域的传奇网页游戏私服。起初, 传奇网页游戏私服是不完全的 (图2, 3, 4 and 5). 然后,通过算法继续递增地在已经存在的三角化格网内插入新的点。查找所有其外接圆包含新的点并且被删除掉给出已知的插入多边形。这样就产生了新的三角网。这个过一直将持续到用完所有的插入点以及所有拥有传奇网页游戏私服顶点的三角形被删除掉。
1、根据已有的地性线和特征线,形成控制边链表。
4、扫描线算法(Sweepline algorithm)
2、将点集中的散点依次插入,在三角形链表中找出其外接圆包含插入点的三角形(称为该点的影响三角形),删除影响三角形的公共边,将插入点同影响三角形的全部顶点连接起来,从而完成一个点在Delaunay三角形链表中的插入。
具体算法过程如下:
3、根据优化准则对局部新形成的三角形进行优化(如互换对角线等)。将形成的三角形放入Delaunay三角形链表。
a、在三角网中包含了所有给定的边缘