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

标签 python geometry line intersect

我有两条相交的线。我知道两条线的端点。如何在 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/

相关文章:

algorithm - 凸包由最大组成。 n 点

java - 如何在图表上画线?

Python Socket(简单服务器脚本)

python - 如何检查排列是否具有相等的奇偶性?

python - pytest ScopeMismatch 错误 : how to use fixtures properly

java - 如何在Java中查找两条线段是否相交?

java - 仅渲染与主圆相交的圆的段/区域

C:如何通过随机布局逐行读取来存储整数?

android - 有什么方法可以通过双击自动访问 Logcat 中的任何登录?

python - 如何在 Debian jessie 上安装适用于 Python 3 的 pygame?