在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
不是一些相对较大的数字,因此我认为没有纯加法/减法解决方案而无需循环。我实际上不知道手动编写的循环可能与%
相比如何。)
是否有经过良好测试和优化的库函数可以使用,或者有更好的算法,还是这是最好的选择?