我试图找出两个向量之间的夹角。
以下是我用来计算向量ba
和bc
之间夹角的代码:
import numpy as np
import scipy.linalg as la
a = np.array([6,0])
b = np.array([0,0])
c = np.array([1,1])
ba = a - b
bc = c - b
cosine_angle = np.dot(ba, bc) / (la.norm(ba) * la.norm(bc))
angle = np.arccos(cosine_angle)
print (np.degrees(angle))
我的问题是,在下面这段代码中:
对于 c = np.array([1,1])
和 c = np.array([1,-1])
你得到的答案都是45度。我可以从数学的角度理解这一点,因为通过点积,你总是关注在区间 [0,180]
中的角度。
但从几何角度来看,这是误导性的,因为点 c
在 [1,1]
和 [1,-1]
两个不同的位置。
那么,是否有一种方法可以获得起始点 b = np.array([x,y])
的角度在区间 [0,360]
中的通用方法呢?
感谢您的帮助。
arccos
结果与输入值相关性的逻辑。你只需要查找完整的圆周定义并应用该逻辑,测试y
值即可。 - Prune