求两条线段是否相交

Find out if two line segments intersect

本文关键字:是否 两条线 段是否      更新时间:2023-09-26

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

欢迎任何帮助。谢谢!

在下列情况下两行相交: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;
}