我有一组无序顶点,可能会形成凹多边形。现在我希望顺时针或逆时针订购它们。
An answer here建议采取以下步骤:
这显然仅适用于凸多边形,并且当这些点形成凹面时会失败。
我怎么能这样做呢?
我正在使用Python,但欢迎所有通用答案。
答案 0 :(得分:10)
一般来说,你的问题似乎不明确。例如,给定以下顶点集:
您认为哪些非凸多边形是连接它们的“正确”方式?
现在,显然,您可以使用各种可能的标准来选择不同的可能订单。例如,您可能希望选择最小化边长的顺序,如果这些点确实产生相当“合理”的结果,实际上它们在简单多边形的边界:
不幸的是,对于一组通用点,找到最小化总边长的排序结果为a well known NP-complete problem。也就是说,有许多heuristic algorithms可以通常快速找到几乎最佳解决方案,即使他们无法始终保证他们找到的解决方案是真正的最低限度。