Python 中两条线段的交点
Intersection of two line segments in Python
不同的文章讨论了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)
。怎样才能得到这样的交点呢?
我问题的第二部分,如果两条线段重叠怎么办(partially/totally)?也就是说,
a = [(0, 2), (2, 4)]
b = [(-2, 0), (1, 3)]
在您上次参考中,第一个答案 returns False if A1 == A2
因为线是平行的。你提出了一个合法的边缘案例,所以如果两条线平行,你需要做的就是检查它们是否都位于同一条线上。这是通过检查 b1 == b2
。仅当此条件为 False
、return 时为假,因为线段平行但不位于同一超平面上。否则,按照答案指定继续,这是通过检查两个段是否有共同点。
不同的文章讨论了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)
。怎样才能得到这样的交点呢?
我问题的第二部分,如果两条线段重叠怎么办(partially/totally)?也就是说,
a = [(0, 2), (2, 4)]
b = [(-2, 0), (1, 3)]
在您上次参考中,第一个答案 returns False if A1 == A2
因为线是平行的。你提出了一个合法的边缘案例,所以如果两条线平行,你需要做的就是检查它们是否都位于同一条线上。这是通过检查 b1 == b2
。仅当此条件为 False
、return 时为假,因为线段平行但不位于同一超平面上。否则,按照答案指定继续,这是通过检查两个段是否有共同点。