我有一个相对简单的问题,我知道答案,但我似乎无法找到使用Python和Numpy的正确实现。这个想法是,我有两条线,我需要找到虚拟的交点(我使用https://www.youtube.com/watch?v=kCyoaidiXAU&t=313s的例子)。Python与numpy的直线交叉
两条线的形式为r = r0 + t * V,其中r0为位置矢量(线通过的点),t为变量,V为方向矢量。方向向量V可以简单地通过找到通过该行的两个点的向量来找到,例如, V = A - B.
就这样,有可能配制路线为:
L1 = R0(已知点)+ T(未知变量)* V(方向矢量)
现在,我可以很容易找到t手动,但我不知道如何告诉Python ..我尝试numpy.linalg.solve,但是这给了我一个矩阵,而我需要一个单一的值。
例如:
# Line A and Line B that intersect somewhere
A = LineString([(4., 0.), (4., -3.)])
B = LineString([(6., 2.), (10., 2.)])
# direction vectors for line A and B
v1 = (A[0].x - A[1].x, A[0].y, A[1].y) # --> [0,3]
v2 = (B[0].x - B[1].x, B[0].y, B[1].y) # --> [-4,0]
L1 = A[1] + x * v1
L2 = B[1] + y * v2
现在,我将手动解决这个通过求解L1为X:
L1 = [4, 0] + x * [0, 3] = [4, 3x]
L2 = [6, 2] + y * [-4, 0] = [6-4y, 2]
# finding intersection point by solving L1 = L2
4 = 6-4y & 3x = 2
y = 1/2 & x = 2/3
但我不知道该如何告诉numpy的/蟒蛇如何解决对于x和y。
任何帮助或指导在正确的方向将不胜感激。
相关:https://stackoverflow.com/q/41797953/67579 –
你说“与numpy”,但我没有看到任何numpy在这里。你想要一个numpy解决方案吗?或者这不是必要的? –
如果可能没有,很好,但我已经尝试Numpy.linalg.solve,所以我认为numpy会有功能来做这样的事情。 – Matthie456