【发布时间】:2015-03-29 17:31:30
【问题描述】:
如果我知道我的点总是排列成两个矩形,是否有一种优化的方法来获得凸包?
我编写了经典的凸包算法(仅通过枚举所有点),但由于我有一堆矩形对,因此我正在徘徊,是否有针对这种特殊情况的更有效的方法。
这就是我要说的,澄清一下:
我尝试以各种方式对点进行排序,但我找不到优化它的一般规则。基本的凸包算法也是处理这种情况的最有效方法吗?
更新
为了阐明我的最终目标,我已经将大约 100 个矩形分成两组,以及数千个点,我必须实时检查它们是否位于每个凸包内。现在我已经考虑过了,我猜凸包部分不会成为整个操作的瓶颈(但仍然有大约 100 个,我的目标是实时 60fps 处理),所以我可能以及使用@BartKiers 建议的普通算法,然后在分析后返回。
我会暂时搁置这个问题,也许有人有一个优化的想法,无论如何可能有用。
【问题讨论】:
-
可能有更快的解决方案,但我怀疑您是否需要它们:您总是在 8 点上执行算法,对吧?手动对点进行排序将产生与正确实现的凸包算法几乎相同的运行时间。
-
@Bart:谢谢,是的,总是在 8 个点上,但是有大约 50 对这样的矩形(100 个矩形组合成对),我需要检查某个点是否位于每个点内凸包 - 与所有这些包相比,我有数千个这样的点需要实时检查(我用简单的边界框修剪了大部分点,但还有很多需要检查)。
标签: algorithm convex-hull