Qt将多边形分解为较小的多边形

时间:2017-05-09 11:20:44

标签: c++ qt triangulation

我编写了一个算法,将多边形划分为单调部分,但我不知道如何通过对角线将多边形划分为较小的多边形,因此我有单独的多边形结构,可以单独处理。我试过的代码显然是错误的:

QPolygonF polyg(polygon); // copy orginal polygon
polyg << diagonalP1 << diagonalP2; // ad the diagonal points
QPolygonF clipped = polygon.intersected(polyg); // get the intersection?
clippedPolygons.append(clipped); // add to the list

这显然不起作用,但我无法找到更好的方法。图片说明问题:

original polygon with diagonals

在图片中,您可以看到原始多边形,虚线表示必须添加的找到的对角线。现在我需要分别得到4个部分,这样我就可以独立地对每个部分进行三角测量。

1 个答案:

答案 0 :(得分:0)

实施在实践中有效的三角测量算法具有挑战性。实际上有一个QT Triangulation Library。也许这看起来很有意义。

代码行:

polyg << diagonalP1 << diagonalP2; // ad the diagonal points

似乎为已经存在的复制多边形添加点,因为要插入三角剖分的对角线是从多边形边界上的点构造的。可能这样的东西可以工作(虽然效率不高):

int indexA = polyg.lastIndexOf(diagonalP1)
int indexB = polyg.lastIndexOf(diagonalP2)
polyg.remove(indexA+1,indexB-1)