找出两个线段是否相交

时间:2016-10-16 15:43:20

标签: javascript

我知道这应该很简单,但我无法弄清楚以下内容:我想编写一个函数来检查两条一维线是否相交。如果它们相交则返回" 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
  }
}

欢迎任何帮助。谢谢!

2 个答案:

答案 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;
     }
}