我有一个问题,我需要验证一个点是否越过了一条线路,
线路径是线的集合(y = ax + b)
有谁知道一些已知的算法吗?
所以我这样解决了: 我在路径的开头和结尾添加了2个点 - 所以现在它是一个多边形 我将90度的2个点添加到固定距离的点上。 我使用了光线算法。
答案 0 :(得分:1)
有一些简单的算法可以知道一个点是在多边形的内部还是外部:http://en.wikipedia.org/wiki/Point_in_polygon 这可以通过将多边形的一些边缘推到无穷大来适应线路径设置(实际上,您可以将线路径放在一个大的盒子中,并且可以选择由右侧框的部分形成的多边形(或者离开,如你所愿)的一面)。
答案 1 :(得分:0)
给定输入点(x_1,y_1),并且您的行的格式为y = ax + b
,然后您可以通过将x_1放入线方程中来确定输入点的位置:
if y_1 == a * x_1 + b then (x_1, y_1) is on the line
if y_1 < a * x_1 + b then (x_1, y_1) locates below the line
if y_1 > a * x_1 + b then (x_1, y_1) locates above the line
因此,您可以通过跟踪该点的上述结果来判断某个点是否越过了一条线。
答案 2 :(得分:0)
所以我这样解决了:我在路径的开始和结束处添加了2个点 - 所以现在它是一个多边形,我将90度的2个点添加到固定距离的点。我使用了射线算法。
编辑:它不总是90度,它取决于点开始和点结束之间的角度
答案 3 :(得分:0)
我知道两种方法: