- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
Java 中是否有库函数或众所周知的快速有效方法来将角度归一化为 +/- π——例如添加两个角度时?
我现在得到的(基于 this answer )基本上是下面的代码......
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
不是某个相对较大的数字,所以我不认为有没有循环的纯加法/减法解决方案。我实际上不知道手如何-滚动循环很可能与 %
进行比较。)
是否有我可以使用的经过充分测试的优化库函数,或者更好的算法,或者这已经很好了吗?
最佳答案
Apache commons 有一个:
normalize an angle between -π and +π
a = MathUtils.normalizeAngle(a, 0.0);
查看源代码,您可以用它来重现它(他们使用他们自己的 FastMath.floor
但如果您想在没有外部库的情况下这样做):
theta - TWO_PI * Math.floor((theta + Math.PI) / TWO_PI)
future 读者注意:此方法刚刚(2017 年 6 月)been removed来自最新的 commons-math 4.x 代码库。如果您在此之后使用的版本,您将需要使用 commons-numbers相反(一旦发布)- 目前:
a = PlaneAngleRadians.normalizeBetweenMinusPiAndPi(a);
或
a = PlaneAngleRadians.normalize(a, 0.0);
关于java - 在 Java 中将角度归一化为 +/- π 弧度的标准方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24234609/
我如何将纬度和经度转换为度数/弧度?你们有任何公式或任何想法吗?我想在 MapKit 上显示它。谢谢...... 最佳答案 由于纬度和经度以度为单位,您可以使用以下公式转换为弧度,然后再转换为度: R
我希望能够告诉服务器我的模型的方向,以便它可以反过来将其发送回所有其他玩家。但是通过共享内存获取值(最坏情况下取字节值,最好情况下取整数)。 有没有一种数学方法可以检查我的模型的旋转,将其转换为偏离默
我想将角度从弧度转换为度数。我知道 Matlab 2014 有一个内置函数可以执行此操作,但在我的特定情况下该函数还不够好。基本上,角度 pi/2 是 90 度,-pi/2 也是 90 度,但是我需要
如何获取 UIView 的当前角度/旋转/弧度? 最佳答案 你可以这样做...... CGFloat radians = atan2f(yourView.transform.b, yourView.t
我正在使用 Python 和 Numpy/Scipy 进行一些数字滤波工作。 我正在使用 scipy.signal.iirdesign 生成我的滤波器系数,但它需要我不熟悉的格式的滤波器通带系数 wp
我是一名优秀的程序员,十分优秀!