【发布时间】:2026-01-08 03:35:02
【问题描述】:
我有一系列大致(但不完全)相交的线。
我需要找到使中心每条线之间的距离最小的点。我一直在尝试遵循这种方法:
Nearest point to intersecting lines in 2D
当我在 Python 中创建脚本来执行此功能时,我得到了错误的答案:
这是我的代码,我想知道是否有人可以建议我做错了什么?或者更简单的方法来解决这个问题。每条线由两个点 x1 和 x2 定义。
def directionalv(x1,x2):
point1=np.array(x1) #point1 and point2 define my line
point2=np.array(x2)
ortho= np.array([[0,-1],[1,0]]) #see wikipedia article
subtract=point2-point1
length=np.linalg.norm(subtract)
fraction = np.divide(subtract,length)
n1=ortho.dot(fraction)
num1=n1.dot(n1.transpose())
num = num1*(point1)
denom=n1.dot(n1.transpose())
return [num,denom]
n1l1=directionalv(x1,x2)
n1l2=directionalv(x3,x4)
n1l3=directionalv(x5,x6)
n1l4=directionalv(x7,x8)
n1l5=directionalv(x9,x10)
numerall=n1l1[0]+n1l2[0]+n1l3[0]+n1l4[0]+n1l5[0] #sum of (n.n^t)pi from wikipedia article
denomall=n1l1[1]+n1l2[1]+n1l3[1]+n1l4[1]+n1l5[1] #sum of n.n^t
point=(numerall/denomall)
我的观点如下 Line1 由点 x1= [615, 396] 和 x2 = [616, 880] 组成
第 2 行,x3 = [799, 449] x4= [449, 799]
第 3 行,x5 = [396, 637] x6 = [880, 636]
第 4 行,x7 = [618, 396] x8 = [618, 880]
第 5 行,x9 = [483, 456] x10 = [777, 875]
任何帮助将不胜感激!
感谢您的宝贵时间。
【问题讨论】:
标签: python-3.x math vector least-squares