在多边形周围创建Delaunay三角剖分

时间:2015-08-04 19:56:29

标签: python algorithm geometry

从一组点可以create a Delaunay Triangulation in python,但是如何对一组多边形做同样的事情?例如,在图片中,我希望广场成为一种“障碍”,并围绕它产生三角剖分。我也想知道如果可能的话,要知道每个三角形的中心点是什么。

enter image description here

2 个答案:

答案 0 :(得分:0)

如何先进行全三角测量,然后去掉你不想要的边缘。例如:

  1. 计算包含所有积分的Constrained Delaunay triangulation
  2. 确定您排除"排除"的边界多边形
  3. 删除连接多边形中任意两点但不属于边界的任何边缘
  4. 假设您仍然希望三角测量中的排除多边形的边界。此外,这可能不再是Delaunay三角剖分而只是一个多边形网格。

    对于每个多边形的中心,一旦进行了三角测量,您可以使用centroid计算它。

答案 1 :(得分:0)

声明。一般情况下这是不可能的。

证明。如果你的点数中没有四个点是圆形的,那么Delaunay三角剖分是唯一的。因此,只要障碍物多边形包含至少一个非Delaunay边缘,您将无法到达点集的唯一Delaunay三角剖分。这很容易看出:在翻转算法中,考虑将quadrilateral in general position whose diagonal needs to be flipped作为Delaunay。现在让其中一个坏三角形成为障碍物,四边形的四个顶点的集合就是一组点。那么显然,你永远不会到达Delaunay三角剖分。

更新:您描述的问题是Constrained Delaunay Triangulation problem的特例。在您的情况下,受约束的边缘只是障碍边界的边缘。有许多python库可以做到这一点。例如