尝试从另一个stackoverflow答案中使用矢量角度公式,但无法将其打印为打印角度

时间:2019-06-18 00:19:14

标签: python vector angle

我正在尝试使用此问题(https://stackoverflow.com/a/13849249)中的代码来计算两个向量之间的夹角。但是我无法获得打印/显示的角度

我已经尝试从缩进和非缩进位置进行print(angle_between)。我也尝试从缩进和非缩进位置返回(angle_between)。但是我没有包括我只是代码的解释。

import numpy as np

 def unit_vector(vector):
    np.linalg.norm(vector)

def angle_between(p_Sun, p_Titan):

   v1_u = unit_vector(p_Sun)
   v2_u = unit_vector(p_Titan)
   return np.arccos(np.clip(np.dot(v1_u, v2_u), -1.0, 1.0))
print(angle_between(p_Sun, p_Titan))

我希望它以弧度为单位打印角度,但是反而会出现错误。

"TypeError: unsupported operand type(s) for *: 'NoneType' and 'NoneType'"

当我以不同的方式计算角度时(从同一篇文章中只是一个不同的评论,https://stackoverflow.com/a/2827475),我可以使用print() function来获取角度。但是,我不喜欢这种方法,因为它对某些向量对失败。

1 个答案:

答案 0 :(得分:0)

unit_vector函数应写为:

def unit_vector(vector):    
    return vector / np.linalg.norm(vector)

当前,您的函数未返回任何内容,因此默认情况下它返回None。这就是为什么您会收到关于乘以NoneTypes的错误的原因。此外,它还计算一个值,即标准值。对于单位向量,必须将当前向量除以范数。 希望有帮助!