我正在努力计算一组点的最小封闭矩形(任意对齐)。
我能够使用graham算法来计算凸包。
我被卡住的地方是下一步。我想过使用旋转卡尺的方法,但我似乎找不到对该算法的充分解释。
发布于 2012-12-07 22:40:18
如果你有凸包,那么一个基本的算法很容易实现。你只需穿过凸包的每一条边,旋转你的点,使这条边沿着一个主轴,比如说X轴。然后,您会找到这些点的轴对齐边界框。选择最小的边框。
通过获取每个维度的最小值和最大值,可以找到轴对齐的边界框。
如果将边界框旋转相反的量,它现在将包含您的原始点。
若要提高效率,请注意,可能影响边界框的唯一点位于凸面外壳线上。
要使其真正有效,请注意凸包周围只有四个点同时接触边界框(严格来说这不是真的,但现在先忽略它)。如果将这些点旋转到足以使下一条边与边界框对齐,则其中三个点是相同的,并且其中一个点将替换为凸面外壳周围的下一个点。这使您可以创建一个算法,该算法在凸面外壳上的点数方面是线性的。
现在有两条边平行或垂直的特殊情况。这将导致任何时候都有四个以上的点接触边界框,但实际上这并不重要。如果您可以在两条平行边中选择下一条边,您可以任意选择其中一条边。
https://stackoverflow.com/questions/13765200
复制相似问题