gpt4 book ai didi

c# - 两个角度之间的最小差异?

转载 作者:太空狗 更新时间:2023-10-29 18:19:08 30 4
gpt4 key购买 nike

我正在尝试计算两个角度之间的最小差异。

这是我当前的代码(我在网上找到的代码略有不同):

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 度。

关于我可以做些什么来完成这项工作有什么想法吗?

最佳答案

你基本上已经做到了。在检查是否大于 180 之前,只需取 dif 模数 360:

float a1 = MathHelper.ToDegrees(Rot);
float a2 = MathHelper.ToDegrees(m_fTargetRot);

float dif = (float)Math.Abs(a1 - a2) % 360;

if (dif > 180)
dif = 360 - dif;

dif = MathHelper.ToRadians(dif);

编辑:@Andrew Russell 在对您的问题的评论中提出了一个很好的观点,下面的解决方案按照他的建议利用了 MathHelper.WrapAngle 方法:

diff = Math.Abs(MathHelper.WrapAngle(a2 - a1));

关于c# - 两个角度之间的最小差异?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6722272/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com