我想计算弧与3D空间中的点之间的距离。我找到的只是圆圈和点link之间的距离(这是错误的,或者我犯了错误,因为我得到了错误的值):
P = np.array([1,0,1])
center = np.array([0,0,0])
radius = 1
n2 = np.array([0,0,1])
Delta = P-center
dist_tmp = np.sqrt( (n2*Delta)**2 + (np.abs(np.cross(n2, Delta))-radius)**2 )
dist = np.linalg.norm(dist_tmp)
我在x-y平面上有一个圆,原点在x-y-z = 0,半径= 1.感兴趣的点在圆上方的距离1。与代码的距离的结果是1.73 ..而不是1.
答案 0 :(得分:2)
您的代码中有多处错误。以下是您第一个问题的答案。
首先,您尝试将n2
和Delta
的点积实现为n2*Delta
,但这不是2 np数组的乘法。请改用np.dot()
。接下来,您尝试使用np.abs
获取向量的“绝对值”(幅度),但后者仅用于实数和复数。获得矢量幅度的一种方法是np.linalg.norm()
。更改这些将为您提供正确的答案,并且您不需要用于变量dist
的计算。所以使用
Delta = P-center
dist = np.sqrt(np.dot(n2, Delta)**2 + (np.linalg.norm(np.cross(n2, Delta))- radius)**2)
这为dist
,1.0
提供了正确答案。