找到两个轴承之间的角度

Ada*_*ies 10 java navigation math trigonometry

鉴于两个轴承,我如何找到它们之间的最小角度?

因此,例如,如果1个航向为340度而第二个航向为10度,则最小角度为30度.

我附上一张照片来表明我的意思.我试过从另一个中减去一个,但由于圆圈的环绕效果而无效.我也尝试过使用负度(180 - 359为-180到0),但是当试图计算正数和负数之间的角度时,它会搞砸.

我确信必须有一个更容易的方法,有很多的if陈述.

谢谢您帮忙.亚当

BTW.这是一个导航问题,因此圆的半径是未知的.

找到两个标题之间的角度

小智 14

我最终使用了此留言板上的以下公式,因为我需要根据方向(顺时针或逆时针)对结果进行签名.它可以很好地解释究竟发生了什么.

((((bearing - heading) % 360) + 540) % 360) - 180
Run Code Online (Sandbox Code Playgroud)


Rob*_*tts 9

float getDifference(float a1, float a2) {
    return Math.min((a1-a2)<0?a1-a2+360:a1-a2, (a2-a1)<0?a2-a1+360:a2-a1)
}
Run Code Online (Sandbox Code Playgroud)

  • 等效地:`Math.min((a1-a2 + 360)%360,(a2-a1 + 360)%360)`(对于`%`不适用的其他语言,请使用`fmod`,`IEERemainder`等。 t支持浮点值。) (2认同)

fem*_*gon 5

关于什么:

angle = Math.abs(a1-a2);
if (angle > 180)
    angle = 360 - angle;
Run Code Online (Sandbox Code Playgroud)

你提到了关于正数和负数的问题,所以也许我在这里不考虑......