从两个给定的真实方位角确定角度的数学方法是什么?

What is the mathematical way to determine an angle from two given true bearings?

鉴于我有两个真实方位角,起始方位角为 315 度,末端方位角为 45 度,是否有更好的方法来确定两个真实方位角之间的角度?当开始方位大于结束方位时,问题就来了。我有以下可行的方法,但我认为有一种 better/mathematical 方法。

double tStartBearing = 315;
double tEndBearing = 45;
double tAngle;

if (tStartBearing > tEndBearing) {
   tAngle = tStartBearing - tEndBearing - 180;
} else {
   tAngle = tEndBearing - tStartBearing;
}

预计 tAngle 的结果值为 90。考虑起始方位角 0 和结束方位角 359.9,tAngle 的结果值应为 359.9,而不是 0.1。

(有符号)角度始终为 end - start。假设起始角和结束角都在同一范围内 [n, n + 360),它们的差值将在 (-360, 360).

之间

要将差异标准化为 [0, 360) 范围内的正角度,请使用:

tAngle = (tEndBearing - tStartBearing + 360) % 360;

要将差异归一化为 [-180, 180) 范围内的有符号角度,请改用:

tAngle = (tEndBearing - tStartBearing + 360 + 180) % 360 - 180;

无论起始角度小于结束角度,还是相反,以上都适用。