主要内容

德劳内三角剖分

德劳内三角剖分广泛应用于许多不同应用程序中的科学计算。虽然有大量的计算三角剖分的算法,但德劳内三角剖分以其实用的几何属性广受欢迎。

基本属性是德劳内规则。如果是二维三角剖分,通常将其称为空外接圆规则。对于一组二维点而言,这些点的德劳内三角剖分可确保与每个三角形相关的外接圆的内部都不包含其他点。此属性非常重要。在下面的插图中,与 T1 关联的外接圆是空的。该外接圆的内部不包含任何点。与 T2 相关的外接圆为空。该外接圆的内部不包含任何点。这种三角剖分便是德劳内三角剖分。

Delaunay triangulation with circumcircles plotted.

下面的三角形则不同。与 T1 关联的外接圆不为空。它的内部包含 V3。与 T2 关联的外接圆不为空。它的内部包含 V1。这种三角剖分是德劳内三角剖分。

Non-Delaunay triangulation with circumcircles plotted.

德劳内三角剖分堪称“外形整齐”,原因在于为满足空外接圆属性,优先选择带有较大内角的三角形,而不是带有较小内角的三角形。非德劳内三角剖分中的三角形在顶点 V2V4 处呈锐角。如果将 {V2, V4} 边替换为连接 V1V3 的边,会实现最小角的最大化并且使得该三角剖分变为德劳内三角剖分。另外,德劳内三角剖分将最近邻点的点连接在一起。这两个特征(外形整齐和最近邻点关系)在实践中具有重要的作用,有助于促进在散点数据插值中使用德劳内三角剖分。

虽然德劳内属性定义明确,但存在退化点集时三角剖分的拓扑并不唯一。在二维中,4 个或更多特征点位于同一圆中时会引发退化。例如,正方形的顶点不具有唯一的德劳内三角剖分。

Delaunay triangulation of the vertices of a square, for which two different valid Delaunay triangulations are possible.

德劳内三角剖分的属性扩展到更高的维度。三维点集的三角剖分由四面体组成。下图显示了一个简单的由 2 个四面体组成的三维德劳内三角剖分。显示一个四面体的外接球以突出显示空外接球规则。

3-D Delaunay triangulation with circumsphere.

三维德劳内三角剖分可生成符合空外接球规则的四面体。

MATLAB® 提供两种创建德劳内三角剖分的方法:

  • delaunayTriangulation 创建一种特殊的 triangulation 对象。您可以对数据执行任何三角剖分查询以及任何德劳内特定的查询。在比较正式的 MATLAB 语言术语中,delaunayTriangulationtriangulation 的子类。

  • delaunaydelaunayn 创建基本的德劳内三角剖分表示。delaunay 函数支持创建二维和三维德劳内三角剖分。delaunayn 函数支持创建四维或更高维度的德劳内三角剖分。

提示

对于中型至大型点集而言,由于所需的内存呈指数级增长,创建六维以上的德劳内三角剖分通常不太现实。

delaunayTriangulation 类支持创建二维和三维德劳内三角剖分。它提供了多种适用于开发基于三角剖分的算法的方法。这些类方法与函数相似,但它们仅限于处理使用 delaunayTriangulation 创建的三角剖分。

delaunayTriangulation 类提供了更多功能用于开发基于三角剖分的应用程序。在需要三角剖分并且希望执行以下任意操作时,该类非常有用:

  • 在三角剖分中搜索包含查询点的三角形或四面体。

  • 使用三角剖分执行最近邻点搜索。

  • 查询三角剖分的拓扑邻接或几何属性。

  • 修改三角剖分以插入或删除点。

  • 约束三角剖分中的边界 - 这称为约束性的德劳内三角剖分。

  • 对多边形进行三角剖分并(可选)删除域外部的三角形。

  • 使用德劳内三角剖分计算凸包或沃罗诺伊图。