从两个给定的真实方位角确定角度的数学方法是什么?
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;
无论起始角度小于结束角度,还是相反,以上都适用。
鉴于我有两个真实方位角,起始方位角为 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;
无论起始角度小于结束角度,还是相反,以上都适用。