从getBearing()值计算标题变化

时间:2013-05-25 18:11:40

标签: android location

我一直在尝试构建一段代码来计算两点之间的标题变化。我的方法是获取android为每个值返回的'getBearing()'值,并用最后一个减去第一个值。

但是在极端情况下会出现问题:android返回的值范围为0; 360],这意味着一些减法会返回大的标题更改,即使更改可能更小。

例如,如果向北略微倾斜,轴承为355º,然后变为5º度,则航向变化值应为10º,但使用我的方法,它将读取-350º。

有关如何使用这些值找到计算标题更改的方法的想法,但是相应地返回相应的更改?

注意:标题更改还必须表示更改的方向。

2 个答案:

答案 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;