繁体   English   中英

找出两个线段是否相交

[英]Find out if two line segments intersect

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM