从一组点可以create a Delaunay Triangulation in python,但是如何对一组多边形做同样的事情?例如,在图片中,我希望广场成为一种“障碍”,并围绕它产生三角剖分。我也想知道如果可能的话,要知道每个三角形的中心点是什么。
答案 0 :(得分:0)
如何先进行全三角测量,然后去掉你不想要的边缘。例如:
假设您仍然希望三角测量中的排除多边形的边界。此外,这可能不再是Delaunay三角剖分而只是一个多边形网格。
对于每个多边形的中心,一旦进行了三角测量,您可以使用centroid计算它。
答案 1 :(得分:0)
声明。一般情况下这是不可能的。
证明。如果你的点数中没有四个点是圆形的,那么Delaunay三角剖分是唯一的。因此,只要障碍物多边形包含至少一个非Delaunay边缘,您将无法到达点集的唯一Delaunay三角剖分。这很容易看出:在翻转算法中,考虑将quadrilateral in general position whose diagonal needs to be flipped作为Delaunay。现在让其中一个坏三角形成为障碍物,四边形的四个顶点的集合就是一组点。那么显然,你永远不会到达Delaunay三角剖分。
更新:您描述的问题是Constrained Delaunay Triangulation problem的特例。在您的情况下,受约束的边缘只是障碍边界的边缘。有许多python库可以做到这一点。例如