我的Python程序的一部分在两个罗盘标题之间线性插值。只要我不必穿过北方,它就可以正常工作。 有没有好的方法来处理这种相当简单的插值? 例如,340 和 010 之间的中点应该是 355,而不是 175。提前致谢。
我正在使用 numpy.interp(x, xp, fp) 并且它通常可以工作。然而有时,我会得到 180 度的错误,例如标题 340 和 010 之间的插值。
这是角度计算的常见问题,最常见的解决方法是添加尺寸。在这种情况下,如果它的正弦和余弦
,我们用向量替换你的角度theta = np.array([340, 10])
theta = theta * np.pi / 180 #radians
theta_2d = np.array([np.sin(theta), np.cos(theta)])
avg = np.arctan2(*theta_2d.mean(1))
print((avg * 180 / np.pi) % 360) # back to degrees, on the interval [0, 360)
355.0
此方法有一个特殊情况,即正好相距 180 度的角度的平均值将是未定义的:
arctan2(0, 0)
没有答案 - 但之前它有点未定义,因为有两个有效答案。