Python 2.7 在由点列表生成的python图上查找点的交点
我试图找到由点列表生成的两条直线之间的交点 我有两个点列表,然后用Python 2.7 在由点列表生成的python图上查找点的交点,python-2.7,numpy,matplotlib,Python 2.7,Numpy,Matplotlib,我试图找到由点列表生成的两条直线之间的交点 我有两个点列表,然后用 import matplotlib.pyplot as plt import numpy as np a = arrayOfPoints1 plt.plot(*zip(*a)) b = arrayOfPoints2 plt.plot(*zip(*b)) plt.show() 现在我已经生成了一个类似这样的图 我的目标是找到这两个图形相交的所有点,即蓝色和绿色线的交点。乍一看,这些点似乎只是阵列a和b中的点,但在生成点之间的直
import matplotlib.pyplot as plt
import numpy as np
a = arrayOfPoints1
plt.plot(*zip(*a))
b = arrayOfPoints2
plt.plot(*zip(*b))
plt.show()
现在我已经生成了一个类似这样的图
我的目标是找到这两个图形相交的所有点,即蓝色和绿色线的交点。乍一看,这些点似乎只是阵列a和b中的点,但在生成点之间的直线时,可能会出现一些阵列中没有的交点
我如何找到所有的十字路口
注意:我正在寻找一种在Python2.7中工作的解决方案,如果两个图使用相同的X轴值,在同一数组中计算不同的函数,您可以通过直接计算每对连续线段的交点手动完成。如果段是平行的,则必须考虑几个情况。交叉点可以用平面中的直线方程来计算。您可以在一般情况下添加此方法,方法是取X轴值的并集并计算所需的值 一个更简单但可能效率更低的方法是依赖shapely库,如果您必须对其进行数百万次计算的话。如果路径不使用相同的X轴值,此方法也有效。下面是一个简单的例子
from shapely.geometry import LineString
l1 = LineString([(0,0), (10,10)])
l2 = LineString([(1,0), (5,10), (10,0)])
intersection = l1.intersection(l2)
intersect_points = [list(p.coords)[0] for p in intersection]
print intersect_points
这会回来的
[(1.6666666666666667, 1.6666666666666665), (6.666666666666667, 6.666666666666667)]
减去两个数组的值,然后找到差数组的零
您可以使用scipy.signal.argrelmin来查找差分数组绝对值的局部极小值。请向我们展示您迄今为止尝试的代码。您能否解释一下直接计算每对连续线段的交点的意思?我对python中的图形和数学库相当陌生,所以我不确定我是否完全理解了您的建议。您需要为每对连续点执行此操作。不过,我强烈建议您使用shapely解决方案。可靠且简单。