Java中是否有库函数或众所周知的快速有效方法将角度标准化为+/- π - 例如添加两个角度时?
我现在得到的(基于这个答案)基本上是下面的代码......
private static final double TWO_PI = 2 * Math.PI;
double normalize(double theta) {
double normalized = theta % TWO_PI;
normalized = (normalized + TWO_PI) % TWO_PI;
return normalized <= Math.PI ? normalized : normalized - TWO_PI;
}
...但它似乎有点复杂和性能方面我对模运算符并不感到兴奋。(请注意,我不能保证theta
不是某个相对较大的数字,所以我认为没有没有循环的纯加法/减法解决方案。我实际上不知道手动循环与%
. )
是否有一个我可以使用的经过良好测试的优化库函数,或者更好的算法,或者它是否尽可能好?