确定平均角度

Joe*_*hel 3 math angle

我正在开发一个涉及在游戏中获取摄像机角度的应用程序.角度可以是0-359.0是North,90是East,180是South等.我正在使用API​​,它在Camera类中有一个getAngle()方法.

如何找到不同摄像机角度之间的平均值.实际平均值0和359是179.5.作为摄像机角度,这将是南方,但显然0和359都非常接近北方.

ars*_*jii 6

你可以用矢量来思考它.让我们和在表达你的两个角弧度.然后我们可以确定处于这些角度的单位向量的x和y分量:?1?2

x1 = sin(?1)
y1 = cos(?1)

x2 = sin(?2)
y2 = cos(?2)

然后,您可以添加这两个向量,并确定结果的x和y分量:

x* = x1 + x2
y* = y1 + y2

最后,您可以确定此结果向量的角度:

?avg = tan-1(y*/x*)

或者,更好的是,使用atan2(许多语言支持的功能):

?avg = atan2(y*, x*)

你可能会需要单独处理的情况下,,因为这意味着这两个向量恰好指向相反的方向(所以什么都要"平均"是什么?).y* = 0 x* = 0