找到y轴为正的矢量角度的最佳方法,顺时针



所以,到目前为止,我一直在使用常用的数学公式:cos theta = a.b/|a|*|b|。使用以下代码位在python上实现

vector=[point2[0]-point1[0],point2[1]-point1[1]]
y_axis = [0, 1]
unit_vector = vector / np.linalg.norm(vector)
unit_y = y_axis / np.linalg.norm(y_axis)
dot_product = np.dot(unit_vector, unit_y)
angle = numpy.arccos(dot_product)

我发现这不能始终提供合适的角度。

是否有其他更好的方法来实现这个仅仅使用numpy?

我认为问题可能是你的角度并不总是顺时针计算的事实。也就是说,如果"矢量"的x坐标是负的,那么arccos()将给出一个有效地以逆时针方向计算角度的结果。在下面的代码中,我也用度表示了结果。

import numpy as np
vector = [-0.25, -0.25]
y_axis = [0, 1]
unit_vector = vector / np.linalg.norm(vector)
unit_y = y_axis / np.linalg.norm(y_axis)
dot_product = np.dot(unit_vector, unit_y)
angle = np.arccos(dot_product)
AngleInDegrees = 360*angle/(2*np.pi);
if vector[0]<0:
AngleInDegrees = 360-AngleInDegrees
print(AngleInDegrees)

相关内容

最新更新