python – 如何计算两条线的交点?

我有两条线在一点交叉.我知道这两行的终点.如何计算Python中的交叉点?

# Given these endpoints
#line 1
A = [X, Y]
B = [X, Y]

#line 2
C = [X, Y]
D = [X, Y]

# Compute this:
point_of_intersection = [X, Y]

解决方法:

与其他建议不同,这很简短,不使用像numpy这样的外部库. (并不是说使用其他库是坏的…它不是很好,特别是对于这么简单的问题.)

def line_intersection(line1, line2):
    xdiff = (line1[0][0] - line1[1][0], line2[0][0] - line2[1][0])
    ydiff = (line1[0][1] - line1[1][1], line2[0][1] - line2[1][1])

    def det(a, b):
        return a[0] * b[1] - a[1] * b[0]

    div = det(xdiff, ydiff)
    if div == 0:
       raise Exception('lines do not intersect')

    d = (det(*line1), det(*line2))
    x = det(d, xdiff) / div
    y = det(d, ydiff) / div
    return x, y

print line_intersection((A, B), (C, D))

而且仅供参考,我会使用元组而不是列表来表示你的观点.例如.

A = (X, Y)

编辑:最初有一个错字.那是@ 2014年9月7日,感谢@zidik.

这只是以下公式的Python音译,其中行是(a1,a2)和(b1,b2),交点是p. (如果分母为零,则线条没有唯一的交叉点.)

上一篇:java-剪切线的最优雅方法?


下一篇:CodeGo.net>如何绘制石原变换(圆圈没有交集的圆圈)?