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

Math 从两个给定的真方位确定角度的数学方法是什么?,math,geometry,bearing,Math,Geometry,Bearing,考虑到我有两个真方位,一个起始方位315度,一个结束方位45度,有没有更好的方法来确定两个真方位之间的角度?当起始轴承大于结束轴承时,会出现复杂情况。我有下面的方法,但我认为有更好的/数学的方法 double tStartBearing = 315; double tEndBearing = 45; double tAngle; if (tStartBearing > tEndBearing) { tAngle = tStartBearing - tEndBearing - 180

考虑到我有两个真方位,一个起始方位315度,一个结束方位45度,有没有更好的方法来确定两个真方位之间的角度?当起始轴承大于结束轴承时,会出现复杂情况。我有下面的方法,但我认为有更好的/数学的方法

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

if (tStartBearing > tEndBearing) {
   tAngle = tStartBearing - tEndBearing - 180;
} else {
   tAngle = tEndBearing - tStartBearing;
}
预期tAngle的结果值为90。考虑0的起始轴承和359.9的端部轴承,缠结的结果值应该是359.9,而不是0.1。

< P>(符号)的角度总是<代码>结束-开始< /代码>。假设开始角和结束角都在相同的范围内,则它们的差值将在
(-360,360)
之间

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

tAngle = (tEndBearing - tStartBearing + 360) % 360;
要将差值规格化为范围
[-180,180)
内的有符号角度,请使用:

tAngle = (tEndBearing - tStartBearing + 360 + 180) % 360 - 180;
无论起始角小于结束角,还是相反,上述操作都有效。

有符号的角度始终是
结束-开始
。假设起始角和结束角都在相同的范围
[n,n+360)
,它们的差异将在
(.360,360)
之间

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

tAngle = (tEndBearing - tStartBearing + 360) % 360;
要将差值规格化为范围
[-180,180)
内的有符号角度,请使用:

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

无论起始角小于结束角,还是相反,上述操作都有效。

非常感谢!非常感谢!