我知道这应该很简单,但我无法弄清楚以下内容:我想编写一个函数来检查两条一维线是否相交。如果它们相交则返回" true&#34 ;,否则返回" false"。
我有两行名为A和B.每行有两个端点(A1,A2 / B1,B2)。我的逻辑是,如果两条线相交,那么'> A2> = B1&& B2> = A1"是真的。但是,这似乎不起作用。
function linesIntersect (A1, A2, B1, B2) {
if (A2 >= B1 && B2 >= A1) {
return true
} else {
return false
}
}
欢迎任何帮助。谢谢!
答案 0 :(得分:0)
如果有以下几行,则相交: a)第一行在第二行开始之前,在第二行开始之后结束。 b)相反的方式。 所以:
function overlap(A1,A2,B1,B2) {
return (A1<=B1 && A2>=B1) || (B1<=A1 && B2>=A1);
}
或者:
function overlap(A1,A2,B1,B2) {
return A1<=B1?A2>=B1:B2>=A1;
}
答案 1 :(得分:0)
我尝试过不同的方法。我的函数现在适用于“不重叠”= false(else语句)。但它仍然不适合第一部分(重叠=真)。
function Overlap(lineA, lineB) {
if (((lineA.y + lineA.height) < (lineB.y)) ||
(lineA.y > (lineB.y + lineB.height)) ||
((lineA.x + lineA.width) < lineB.x) ||
(lineA.x > (lineB.x + lineB.width))) {
return true;
} else {
return false;
}
}