from math import sin, cos, acos
from unittest import assertAlmostEqual
def assertAlmostEqualAngles(x, y, **kwargs):
c2 = (sin(x)-sin(y))**2 + (cos(x)-cos(y))**2
angle_diff = acos((2.0 - c2)/2.0) # a = b = 1
assertAlmostEqual(angle_diff, 0.0, **kwargs)
In [20]: def d(a, b):
...: c = (b - a) % 360
...: if c > 180:
...: c -= 360
...: return c
...:
In [21]: d(1, 3)
Out[21]: 2
In [22]: d(1, 358)
Out[22]: -3
您可以使用单位圆上两点之间的欧几里得距离平方和余弦定律来获得两个角度之间的绝对差:
这与弧度有关。如果角度以度为单位,则必须进行转换:
^{pr2}$我也遇到了同样的情况,通过利用模计算,找到了一个更简单的解决方案:
相关问题 更多 >
编程相关推荐