【发布时间】:2011-07-17 06:22:07
【问题描述】:
我正在尝试计算两个角度之间的最小差异。
这是我当前的代码(与我在网上找到的内容略有不同):
float a1 = MathHelper.ToDegrees(Rot);
float a2 = MathHelper.ToDegrees(m_fTargetRot);
float dif = (float)(Math.Abs(a1 - a2);
if (dif > 180)
dif = 360 - dif;
dif = MathHelper.ToRadians(dif);
除了在圆形边缘的情况外,它工作正常。例如,如果当前角度为 355 度,目标角度为 5 度,则计算出的差值为 -350 而不是 10,因为 365 度等于 5 度。
关于我可以做些什么来完成这项工作的任何想法?
【问题讨论】:
-
这看起来是正确的。你也不需要转换成度数然后再转换成弧度 - 你可以用弧度计算
-
答案中不喜欢
MathHelper.WrapAngle:( -
很棒的电话,@Andrew。我在没有任何 MathHelper 知识的情况下来到这里,但 WrapAngle 似乎是写解决方案。希望您发布了解决方案,但既然您没有发布,我将更新我的答案。