三维点与弧之间的距离

时间:2016-12-01 17:27:29

标签: python algorithm math

我想计算弧与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.

  1. 点圆距离的正确方程是什么?
  2. 如何将其扩展到点弧距离?

1 个答案:

答案 0 :(得分:2)

您的代码中有多处错误。以下是您第一个问题的答案。

首先,您尝试将n2Delta的点积实现为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)

这为dist1.0提供了正确答案。