有一种简单的方法可以将角度(以度为单位)转换为介于-179和180之间吗?我确定我可以使用mod(%)和一些if语句,但它变得丑陋:
//Make angle between 0 and 360
angle%=360;
//Make angle between -179 and 180
if (angle>180) angle-=360;
Run Code Online (Sandbox Code Playgroud)
似乎应该有一个简单的数学运算,它将同时执行两个语句.我可能只需要为转换创建一个静态方法.
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;
}
Run Code Online (Sandbox Code Playgroud)
...但它似乎有点复杂和性能方面我对模运算符并不感兴趣.(请注意,我不能保证theta不是一些相对较大的数字,所以我认为没有循环的纯加法/减法解决方案.我实际上并不知道手动循环可能与之比较%. )
是否有一个经过充分测试的优化库函数,我可以使用,或者更好的算法,或者这是否与它一样好?