gpt4 book ai didi

c++ - 如何环绕范围

转载 作者:IT老高 更新时间:2023-10-28 21:48:50 26 4
gpt4 key购买 nike

我的程序中的角度用 0 到 2pi 表示。如果结果高于 2pi,我想要一种方法来添加两个角度并让它围绕 2pi 到 0。或者如果我从一个角度中减去一个角度并且它低于 0,它会环绕 2pi。

有没有办法做到这一点?

谢谢。

最佳答案

您正在寻找的是模数。 fmod 函数将不起作用,因为它计算的是余数而不是算术模数。像这样的东西应该可以工作:

inline double wrapAngle( double angle )
{
double twoPi = 2.0 * 3.141592865358979;
return angle - twoPi * floor( angle / twoPi );
}

编辑:

余数通常定义为长除法后的余数(例如,18/4 的余数是 2,因为 18 = 4 * 4 + 2)。当您有负数时,这会变得很棘手。找到带符号除法余数的常用方法是使余数与结果具有相同的符号(例如,-18/4 的余数是 -2,因为 -18 = -4 * 4 + - 2)。

x模数y的定义是方程x=y*c+m中m的最小正值,给定c为整数。所以 18 mod 4 将是 2(其中 c=4),但是 -18 mod 4 也将是 2(其中 c=-5)。

x mod y 的最简单计算是 x-y*floor(x/y),其中 floor 是小于或等于输入的最大整数。

关于c++ - 如何环绕范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11980292/

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