狄洛尼三角剖分

本文介绍了狄洛尼三角剖分的概念,它是一种确保点集形成的三角形没有点位于外接圆内的三角剖分。这种剖分在三维显示、图像处理和人工智能等领域广泛应用。文章详细阐述了狄洛尼三角剖分的定义、性质,并通过分治算法解释了其构建过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

编者按:本文作者奇舞团前端开发工程师魏川凯。

狄洛尼三角剖分(Delaunay triangulation)是指离散分布的点集P的其中一种三角剖分DT(P),可以使得点集P中没有任意一个点严格处于任意一个三角形的外接圆的内部。狄洛尼三角剖分构建的三角网可以尽量避免狭长三角形的出现,有效提高逼近精度,使得网格整体质量保持最优,在三维显示,图像处理,人工智能等领域被广泛运用。

上图为利用三角剖分构建三角网拟合我国某山脉地形

定义

  • 空圆性:DT(P)是唯一的(任意四点不能共圆),在DT(P)中,任意三角形的外接圆范围内不会有其它点存在。

  • 最大化最小角:在点集所有可能的三角剖分中,狄洛尼三角剖分所形成的三角形的最小角最大,也可以说在两个相邻的三角形构成凸四边形的对角线,在相互交换后,两个内角的最小角不再增大。

性质

  • 最外部的三角形边的集合是点集的凸包。

  • 以最接近的三个点形成三角形,且各线段(三角形的边)皆不相交。

  • 不论从区域何处开始构建,最终都将得到一致的结果(点集中任意四点不能共圆)。

  • 任意两个相邻三角形构成的凸四边形的对角线如果可以互换的话,那么两个三角形六个内角中最小角度不会变化。

  • 在点集所有可能的三角剖分中,狄洛尼三角剖分所形成的三角形的最小角最大,至少狄洛尼三角剖分中的最小角与其他三角剖分中的最小角相等。

  • 新增、删除、移动某一个顶点只会影响邻近的三角形。

  • 与泰森多边形(Voronoi图)对偶。

算法

实现狄洛尼三角剖分的算法有很多,我们这里介绍其中一种:分治算法。这种算法主要过程是递归的分割点集直到子集大小不超过三,然后在合并的过程中逐渐选取最优点连接左右子集,最终完成三角剖分。

一般分为一下几个步骤完成。

  • 将所有点的数组按照x坐标升序排序,如下图是排好序的点集。

  • 将有序的点集递归的分成两个部分,直到子集大小不超过3。然后将这些子点集剖分成为一个三角形或者一条线段。

  • 把已经剖分好的左右子点集可以依次合并。合并后的剖分包含左子点集的边(红色),右子点集的边(绿色),连接左右剖分产生的新的边(蓝色)。对于合并后的三角剖分,为了维持狄洛尼三角剖分原则,我们可能需要删除部分左子集边和右子集边。

  • 合并左右子集首先是要确定一条基线(base

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值