给定2D中的多边形和点,如何找到最接近该点的多边形的特征(顶点或边)?

时间:2011-10-04 20:52:12

标签: geometry game-physics

一种天真的方法是为多边形中的每条边找到最靠近给定点的边上的点,然后选择最接近的点。有更快的算法吗?我的目标是实现2D超级马里奥银河式平台游戏。

显然,这可以通过Voronoi区域完成,如在此视频中所示:http://www.youtube.com/watch?v=Ldh2YKobuWo

然而,我找不到任何处理边缘和点的Voronoi算法。想法?

2 个答案:

答案 0 :(得分:2)

计算每条边的point-line distance,然后选择最短的边。没有捷径。 This site有很好的解释,甚至可以用各种语言实现。

但是,找到“最接近给定点的那一点上的点”是计算上不必要的中间结果。

答案 1 :(得分:1)

如果多边形是凸的,那么voronoi计算的开销远远超过天真方法的开销。

如果这是多次运行,并且每次点稍微改变,你只需要检查3个段(考虑一下:当你四处移动时,假设有很多检查,那么最近的边缘只会变成一个相邻的边缘)