3

如果我有一条描述道路的折线并且我知道所有部分的道路宽度,是否有一种算法可以用来确定一个点是否在道路上?我不完全确定如何做到这一点,因为线本身的宽度为 1px。

谢谢,

杰夫

4

2 回答 2

2

找到点到线的最小距离(它将是垂直于线的向量)。实际计算,其中 P0 是路段的第一个点,v 是路段向量,w 是从 P0 到相关点的向量。您将不得不遍历折线中的每条边。如果距离小于该段的宽度,则它“在”道路上。

d = |v x w| / |v|

角落可能很棘手,具体取决于您将它们视为圆形(恒定半径)还是有角的。

于 2009-08-24T01:52:12.727 回答
2

也许您可以取每个线段,构建线段的矩形 + 其宽度,并使用矩形/点碰撞算法来确定矩形是否包含该点。一个好的算法将考虑宽度 = 1 的情况,它应该简单地尝试构建线段的反函数并确定 y-1(point.y) 是否是 line_segment.x1 和 line_segment.x2 之间的 x

于 2009-08-24T01:52:27.750 回答