我一直在尝试构建一段代码来计算两点之间的标题变化。我的方法是获取android为每个值返回的'getBearing()'值,并用最后一个减去第一个值。
但是在极端情况下会出现问题:android返回的值范围为0; 360],这意味着一些减法会返回大的标题更改,即使更改可能更小。
例如,如果向北略微倾斜,轴承为355º,然后变为5º度,则航向变化值应为10º,但使用我的方法,它将读取-350º。
有关如何使用这些值找到计算标题更改的方法的想法,但是相应地返回相应的更改?
注意:标题更改还必须表示更改的方向。
答案 0 :(得分:0)
所有角度(以度为单位)仅以模数360定义。因此-350º与10º的角度相同。如果您想要具有最低绝对值的角度,则只需添加一些代码,如下所示:
float angle = 355; // the input angle, whatever it turns out to be
while (angle <= -180) angle += 360;
while (angle > 180) angle -= 360;
答案 1 :(得分:0)
如果您不关心方向而只关注差异,那么您可以按照以下计算
(bearingA - bearingB + 360) % 360;