我在输入上有两个凹多边形,表示为两个点向量。我想对它做一些多边形操作 - 联合,交集和差异。我在这些多边形之间找到交叉点,并将它们插入每个多边形的正确位置。然后我给出一个关于它的位置的信息(内部 - 它在另一个多边形内部,外部 - 它在另一个多边形之外,交点 - 点,多边形的两个边相交)到每个顶点。现在我知道哪些点创建了这些多边形(外部和交叉点)等的联合,但我需要知道如何将它们排序到正确的顺序。在交叉操作的情况下,我需要将这些排序的点分成正确的集合数,因为交集的结果可能是多个多边形。
我正在使用C ++,但我不需要代码,我只想要如何对这些最终的多边形点进行排序。而且我不想使用任何库来进行这些操作,因为我已经拥有自己的函数并希望使用它们。
我查看了这个问题How to intersect two polygons?以及其他一些问题,但没有一个问题解决了点的最终排序问题。 我也读过这篇文章http://www.gvu.gatech.edu/~jarek/graphics/papers/04PolygonBooleansMargalit.pdf,但我可能不明白。
任何帮助都将不胜感激。
答案 0 :(得分:1)
如果您遵循我的评论中的所有建议:
联盟的解决方案将是:
加入的解决方案是:
编辑:正如我已经提到的,我有上帝的感觉,我需要修改多边形方向的方法。但是,在网上搜索时,我找到了可能为您完成工作的算法说明:The Vatti clipping algorithm
EDIT2 One more article描述了这种裁剪算法。