我写下了一个代码,用三维坐标计算三点之间的角度.
import numpy as np
a = np.array([32.49, -39.96,-3.86])
b = np.array([31.39, -39.28, -4.66])
c = np.array([31.14, -38.09,-4.49])
f = a-b # normalization of vectors
e = b-c # normalization of vectors
angle = dot(f, e) # calculates dot product
print degrees(cos(angle)) # calculated angle in radians to degree
Run Code Online (Sandbox Code Playgroud)
输出代码:
degree 33.4118214995
Run Code Online (Sandbox Code Playgroud)
但是当我使用其中一个软件来计算相同时,它会使输出位不同120度.请帮忙
参考我以前用来编写程序:
Eri*_*ric 14
您的原始代码非常接近.Adomas.m的答案不是非常惯用的numpy:
import numpy as np
a = np.array([32.49, -39.96,-3.86])
b = np.array([31.39, -39.28, -4.66])
c = np.array([31.14, -38.09,-4.49])
ba = a - b
bc = c - b
cosine_angle = np.dot(ba, bc) / (np.linalg.norm(ba) * np.linalg.norm(bc))
angle = np.arccos(cosine_angle)
print np.degrees(angle)
Run Code Online (Sandbox Code Playgroud)