Python 三维图形中点与圆弧之间的距离
我想计算三维空间中圆弧和点之间的距离。我发现的只是一个圆和一个点之间的距离(要么是错误的,要么是因为我得到了错误的值而犯了错误): 在x-y平面上有一个圆,原点为x-y-z=0,半径为1。兴趣点位于圆上方距离1处。与代码的距离结果为1.73。。而不是1Python 三维图形中点与圆弧之间的距离,python,algorithm,math,Python,Algorithm,Math,我想计算三维空间中圆弧和点之间的距离。我发现的只是一个圆和一个点之间的距离(要么是错误的,要么是因为我得到了错误的值而犯了错误): 在x-y平面上有一个圆,原点为x-y-z=0,半径为1。兴趣点位于圆上方距离1处。与代码的距离结果为1.73。。而不是1 点圆距离的正确公式是什么 如何将其延伸到点弧距离 您的代码中有几个错误。这是你第一个问题的答案 首先,您尝试将n2和Delta的点积实现为n2*Delta,但这不是两个np数组相乘的功能。改用np.dot()。接下来,您尝试使用np.abs获取向
您的代码中有几个错误。这是你第一个问题的答案 首先,您尝试将
n2
和Delta
的点积实现为n2*Delta
,但这不是两个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
提供了正确的答案,您如何知道自己“得到了错误的值”?也就是说,请告诉我们您使用的数据、您得到的结果以及您预期的结果。看见别忘了告诉我们P
和center
和radius
的数据类型。对不起,我的错。示例/测试输入如下所示。在x-y平面上有一个圆,原点为x-y-z=0,半径为1。兴趣点位于圆上方距离1处将numpy导入为np uuup=np.array([1,0,1])uuuuu中心=np.array([0,0,0])uuuu半径=1 uuuuun2=np.array([0,0,1])uuuu,从中我预计到圆的距离为1——结果为1.73。感谢您第一个问题所需的额外信息。我已经回答了这个问题。对于第二个问题,弧是如何定义的?很明显,这是循环的一部分,但是你如何陈述哪一部分呢?感谢你在下面的快速回答和回答。至于弧:我有两个额外的点作为输入(np.array([x,y,z])用顺时针或逆时针来定义方向。这两点的用途是什么?你是说圆弧是指光线从圆心到这两点在圆平面上的投影所形成的角度吗?或者更简单的一点:这些点保证在圆上,圆弧继续从一个点到另一个点,“方向”告诉我们是使用较小的圆弧还是较大的圆弧?
Delta = P-center
dist = np.sqrt(np.dot(n2, Delta)**2 + (np.linalg.norm(np.cross(n2, Delta))- radius)**2)