2015-09-28 195 views
0

确定点是否在多边形边上的最佳方法是什么?我们现在使用该点与其最接近的多边形边之间的距离,但估计所有多边形外壳的距离限制实际上是一个难题。多边形边上的点

任何想法是值得欢迎的。

谢谢。

+0

“估计距离,限制所有多边形情况下确实是一个谜”:你能告诉更多? –

回答

2

您可以分别处理每条边并将其“放大”为所需宽度的矩形条。

这是通过将测试点投影到边缘支撑线上,检查投影是否落在线段上并计算两点之间的距离来完成的。

AB成为边缘片段并且P的点。 Q(t) = A + t AB是沿边缘的任意一点,我们希望它是投影,所以矢量,

PQ(t).AB = (PA + t AB).AB = 0, 

t = - PA.AB/AB² 

这足以检查t落在[0,1]和计算|PQ(t)|

为了更好的处理角落,您可以考虑从点到顶点的距离。

保持如此计算的所有距离中最短的距离。

enter image description here

+0

我喜欢你的答案,但我们的问题是确定胖线宽度。 – abenci

+0

@Alberto:你的应用程序中这种宽容的确切目的是什么? –

+0

我们可以有任何多边形复杂度和任何多边形大小。目前我们使用边界矩形对角线的一部分来计算胖线宽度,但是想知道是否存在更“科学”的方法。 – abenci