查找与两个numpy数组的交点的坐标点

时间:2016-05-06 05:27:41

标签: python numpy matplotlib scipy

这种问题与正常的“如何通过numpy找到两条线的交叉点”略有不同。这是情况,我正在创建一个程序来查看斜率稳定性,我需要找到一个圆与一条线相交的位置。

我有两个numpy数组:

一个数组给出了2D

中高程剖面的正常(x,y)值

另一个数组是坐标(x,y)的计算值,它跨越定义中心的圆周。

我需要以某种方式比较两者在圆的坐标与轮廓线相交的近似点?

这里有一些数据可供使用:

circ_coords = np.array([
                        [.71,.71],
                        [0.,1.]
                       ])

linear_profile = np.array([
                           [0.,0.],
                           [1.,1.]
                         ])

我需要一个可以吐出的函数说一个或多个坐标值,这些坐标值表示基于这些圆形坐标和你的线性轮廓......两者将在这里相交。

def intersect(array1, array2):
    # stuff
    return computed_array

2 个答案:

答案 0 :(得分:2)

你可以用代数方式解决它。 (x1,y1)和(x2,y2)之间的线段上的点(x,y)的参数表示是:

x = tx1 +(1-t)x2和y = ty1 +(1-t)y2,

其中0≤t≤1。

如果将其替换为圆的方程并求解t的二次方程,则可以测试0≤t01≤1,即带圆的线段间。 t01值可用于计算交点。

答案 1 :(得分:1)

Shapely有一些很酷的功能。根据{{​​3}},此代码应该有效:

from shapely.geometry import LineString
from shapely.geometry import Point

p = Point(0,0)//center
c = p.buffer(0.71).boundary//radius
l = LineString([(0.,0.), (1., 1.)])//line point
i = c.intersection(l)

显然我在这里是你正在寻找的阵列,同样,也请查看this post。希望这会有所帮助。