我有两条相交的线。我知道两条线的端点。如何在 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)
编辑:最初有一个错字。那是fixed感谢@zidik,2014 年 9 月。
这只是下面公式的Python音译,其中的行是(a1, a2)和(b1, b2) 和交叉点是 p。 (如果分母为零,则线条没有唯一的交点。)
关于python - 如何计算两条线的交点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20677795/