确定在线点是否与矩形相交的简便方法

时间:2015-08-19 09:24:24

标签: math vector geometry

我已经检查了其他答案,但我很难搞清楚它们是否满足我的需求。我试图把它变成一个MySql程序。我想检查某个点上由两个点定义的直线是否与矩形相交。我不需要知道在哪里,只要它在某个时刻确实存在。

enter image description here

2 个答案:

答案 0 :(得分:0)

对于每个矩形边,检查它是否与线相交。参见例如here有关如何解释此问题的解释。如果没有相交,则返回false。否则,仅当线和边的交点位于线的起点和终点之间时才返回true。

答案 1 :(得分:0)

在线上有两个点你可以得到two-point form线方程

(y - y1) * (x2 - x1)  = (y2 - y1) * (x - x1)

并将其转换为general form

A * x + B * y + C = 0

然后将每个矩形角的X和Y坐标替换为此等式并找到表达式的符号

S[i] = Sign(A * x[i] + B * y[i] + C)

如果所有符号相同(非零),则此线不与矩形相交(所有顶点相对于线位于相同的半平面内),否则线相交它