繁体   English   中英

找到具有正y轴的向量角度的最佳方法,顺时针

[英]Best way to find the angle of a vector with positive y-axis, clockwise

所以,直到现在我一直在使用常用的数学公式:cos theta = ab/|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 来实现这一目标?

我认为问题可能是您的角度并不总是顺时针计算。 也就是说,如果 "vector" 的 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)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM