代码之家  ›  专栏  ›  技术社区  ›  Xzhsh

凸多边形最大和最小对角线的算法?

  •  2
  • Xzhsh  · 技术社区  · 16 年前

    有没有比强力比较更好的方法来获得多边形的最大和最小长度对角线?更具体地说,我想找到比例,这样我可以对多边形的“瘦度”进行排序。

    多边形不太大(通常每个多边形有4-8个面),但是有很多。我想我应该去看看有没有更好的方法。

    提前谢谢

    1 回复  |  直到 16 年前
        1
  •  2
  •   Nikita Rybak    16 年前

    多边形不太大(通常每个多边形有4-8个面),但有很多。

    我不知道是否有比O(n^2)更快的解决方案,但是 n <= 8 没关系。如果 n = 8 你只要检查20条对角线( 8 * 5 / 2 )它本身并没有那么大的乘数,任何复杂的算法都可能有大量的计算开销(数据结构、复杂的循环和检查)。

    不过,有一件事可以加快速度,那就是去掉两点之间距离公式中的平方根。首先查找的最小值/最大值 (xi-xj)*(xi-xj) + (yi-yj)*(yi-yj) ,然后应用平方根。这是一个相当昂贵的操作,2次而不是20次会有不同。