首页 > 解决方案 > Python中两条线段的交点

问题描述

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

如何计算两条线的交点?,

Numpy 和线交叉点

如何检查两个线段是否相交?

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

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

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

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

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

标签: pythongeometrylineintersectionline-intersection

解决方案


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


推荐阅读