-1

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

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

例如,如果向北略微倾斜,方位角为 355º,然后变为 5º 度,则航向变化值应为 10º,但我的方法将显示为 -350º。

关于如何找到使用这些值计算航向变化的方法,但相应地返回适当的变化的任何想法?

注意:航向变化也必须表示变化的方向。

4

2 回答 2

1

所有角度(以度为单位)仅以 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;
于 2013-05-25T18:51:00.243 回答
0

如果您不关心方向而只关心差异,那么您可以计算如下

(bearingA - bearingB + 360) % 360;
于 2013-05-25T19:04:02.773 回答