我想找到两个多边形之间的最小距离。我必须找到第一个形状的每个顶点与另一个顶点的所有顶点之间的最小最短距离。类似于Hausdorff Distance,但我需要最小值而不是最大值。
答案 0 :(得分:22)
也许你应该看看( PDF警告!还要注意,出于某种原因,页面的顺序是颠倒的)“Optimal Algorithms for Computing the Minimum Distance Between Two Finite Planar Sets”由Toussaint和Bhattacharya:
本文显示了 两个有限的最小距离 平面集如果[ sic ] n点可以 在最坏情况下以O( n log n )计算 运行时间,这是最佳的 在一个恒定因素内。 此外,当集合形成一个 凸多边形这种复杂性可以 减少到O( n )。
如果两个多边形正在交叉凸起,那么也许你应该看看( PDF警告!再次,页面的顺序颠倒)“An Optimal Algorithm for Computing the Minimum Vertex Distance Between Two Crossing Convex Polygons”由Toussaint:< / p>
让 P = { p 1 , p 2 ,..., p m }和Q = {< em> q 1 , q 2 ,..., q n }是两个相交的多边形,其顶点已指定 按他们的笛卡尔坐标 订购。最优O( m + n ) 算法用于计算 最小欧氏距离 P 中的顶点 p i 和a Q 中的顶点 q j 。
答案 1 :(得分:0)
有一个使用闵可夫斯基加法的简单算法,它允许计算两个凸多边形的最小距离,并在 O(n + m) 中运行。
链接:
algoWiki、boost.org、neerc.ifmo.ru(俄语)。
如果两个凸多边形的闵可夫斯基减法覆盖(0, 0),则它们相交