gpt4 book ai didi

C++,最快的角度进入指定范围的方法?

转载 作者:行者123 更新时间:2023-11-30 00:58:52 24 4
gpt4 key购买 nike

让变量进入给定范围的最快方法是什么?例如,确保角度“double alpha”始终在 (0.0, 2*Pi) 范围内。

我自己找到了两个解决方案,其中一个要慢得多,而另一个对于这样一个简单的任务来说看起来太复杂了。一定有更好的方法吗?

//short, but very slow (so it's a no-go);
return asin(sin(alpha));

//much faster, but seems ugly (two while loops to change a variable? come on!)
while (alpha < 0.0)
{
alpha += 2.0 * M_PI;
}
while (alpha >= 2.0 * M_PI)
{
alpha -= 2.0 * M_PI;
}
return alpha;

最佳答案

我建议您使用 fmod() 系列函数来代替手动实现:http://linux.die.net/man/3/fmodf正是这样做的。不过,您仍然需要自己处理负面结果:

alpha = fmod(alpha, 2.0 * M_PI);
if (alpha < 0.0)
alpha += 2.0 * M_PI;
return alpha;

关于C++,最快的角度进入指定范围的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5449276/

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