我有一个问题,我需要验证一个点是否越过线路径,
线路径是线(y = ax + b)的集合。
有谁知道一些已知的算法?
所以我这样解决它:我在路径的起点和终点添加了 2 个点 - 所以现在它是一个多边形,我将 90 度的 2 个点添加到固定距离的点上。我使用了射线算法。
我有一个问题,我需要验证一个点是否越过线路径,
线路径是线(y = ax + b)的集合。
有谁知道一些已知的算法?
所以我这样解决它:我在路径的起点和终点添加了 2 个点 - 所以现在它是一个多边形,我将 90 度的 2 个点添加到固定距离的点上。我使用了射线算法。
有一些简单的算法可以知道一个点是在多边形内部还是外部:http ://en.wikipedia.org/wiki/Point_in_polygon 这可以通过将多边形的某些边缘推到无穷大来适应线路径设置(实际上,你可以把你的线路径放在一个大盒子里,然后把由盒子的右边(或左边,如你所愿)边的部分形成的多边形放在一边)。
给定一个输入点 (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 个点 - 所以现在它是一个多边形,我将 90 度的 2 个点添加到固定距离的点上。我使用了射线算法。
编辑:它并不总是 90 度,它取决于点起点和终点之间的角度
我知道两种方法: