我们有一个多边形,从最底部开始以逆时针方向从顶点列表给出(points
)。给出了相同多边形的一些对角线(它们中没有一个相交),作为一组点(diagonals
)。查找所有给定几条对角线的多边形
我们必须找到多边形切入的所有面(作为每个面的顶点列表)。
输出将包括以下的面:
face1 = [(-68,-36), (-53,-40), (-39,44)]
face2 = [(-53,-40), (-21,37), (-12, 6), (-5,49)]
...
正如你可能已经注意到,对角线切割多边形成monotone polygons相对于x轴。如果这可能有帮助。
我已经在这个问题上好几个小时了。我似乎无法找到与之相关的任何问题。任何帮助将不胜感激,谢谢。
编辑:问题可以简化为查找图中的所有简单循环(即无弦循环)。我发现这些类似的问题:
Finding polygons within an undirected Graph
Find all chordless cycles in an undirected graph
然而,在第二个接受的解决方案似乎并没有工作。
这有帮助吗? http://stackoverflow.com/a/16558622/4014959 –
@ PM2Ring,计算所有周期在这里没有帮助,因为一个面可以是许多周期的一部分。多边形本身就是一个循环。 – Rahul
公平点。我想你可以找到所有的周期,然后减少到基本周期。然而,你并没有一个无向图,你有一个直接的图,这使得任务变得更容易。 –