def angle(a,b,c):
# In case numpy.dot() returns larger than 1
# and we cannot take acos() to that number
acos_out_of_bound = 1.0
v1 = a - b
v2 = c - b
v1 = v1 / np.sqrt(v1[0]**2 + v1[1]**2 + v1[2]**2)
v2 = v2 / np.sqrt(v2[0]**2 + v2[1]**2 + v2[2]**2)
dot_product = np.dot(v1,v2)
if dot_product > acos_out_of_bound:
dot_product = acos_out_of_bound
if dot_product < -1.0 * acos_out_of_bound:
dot_product = -1.0 * acos_out_of_bound
return np.arccos(dot_product)
评论列表
文章目录