【问题标题】:Intersection of two line segments in PythonPython中两条线段的交点
【发布时间】:2021-10-29 10:16:26
【问题描述】:

不同的文章讨论了Python中两条线段的交集,例如

How do I compute the intersection point of two lines?,

Numpy and line intersections,

How can I check if two segments intersect?

但是,没有人使它完美,因为他们没有涵盖一个特殊情况。给定以下两条线段:

a = [(0, 2), (2, 4)]
b = [(-2, 0), (0, 2)]

这两条线段的斜率相同。事实上,它们在(0, 2) 相交。怎样才能得到这样的交点?

我的问题的第二部分,如果两条线段重叠(部分/全部)怎么办?也就是说,

a = [(0, 2), (2, 4)]
b = [(-2, 0), (1, 3)]

【问题讨论】:

  • “这两条线段的斜率相同,但不平行”实际上没有意义,因为“平行”的意思是“相同的斜率”。
  • @Woodford 显然,它们在 (0, 2) 很常见。
  • 在 (0, 2) 和 (1, 3) 之间有无数个“交点”(重叠)。你想要哪一个?
  • 这能回答你的问题吗? How can I check if two segments intersect?
  • @balmy 我没看到。你到底是什么意思?

标签: python geometry line intersection line-intersection


【解决方案1】:

在您的最后一个参考中,如果A1 == A2 由于线是平行的,第一个答案返回 False。你提出了一个合法的边缘情况,所以如果线平行,你需要做的就是检查它们是否都在同一条线上。这是通过检查是否b1 == b2。仅当此条件为 False 时,才返回 False,因为这些段是平行的,但不位于同一超平面上。否则,按照答案说明继续,这是通过检查两个段是否有共同点。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多