有没有比蛮力比较更好的方法来获得多边形的最大和最小长度对角线?更具体地说,我想找到这个比例,所以我可以根据他们的“skinniness”对多边形进行排序。
多边形不是太大(通常每个多边形4-8个面),但它们中有很多。我以为我只是检查一下是否有更好的方法来做到这一点。
提前致谢
答案 0 :(得分:2)
多边形不是太大(通常每个多边形4-8个面),但是它们中有很多。
我不知道是否有比O(n ^ 2)更快的解决方案,但对于n <= 8
来说,这并不重要。如果n = 8
,则只需检查20个对角线(8 * 5 / 2
)。它本身并不是那么大的乘数,任何复杂的算法都可能有很多计算开销(数据结构,复杂的循环和检查)。
(xi-xj)*(xi-xj) + (yi-yj)*(yi-yj)
的最小值/最大值,然后应用平方根。这是非常昂贵的操作,做2次而不是20次可能会有所作为。