java - java中的快速正弦和余弦函数

标签 java optimization trigonometry

我知道 Math.sin()Math.cos() 函数,但我想知道是否有一种方法可以创建(或使用已经存在)更快的功能,因为我不关心精确定位的准确性。我希望执行基本的 sin 或 cos 计算,并让它尽可能快地执行。简单地迭代 sigma 几次会比 Math.sin() 快吗?

最佳答案

由于您不太关心准确性,因此将其存储在预先计算或仅计算一次的表中,这就是我在想避免调用 Math 时所做的,这在以下情况下可能很昂贵做了很多。

大致

public class CosSineTable {
double[] cos = new double[361];
double[] sin = new double[361];
private static CosSineTable table = new CosSineTable();

private CosSineTable() {
    for (int i = 0; i <= 360; i++) {
        cos[i] = Math.cos(Math.toRadians(i));
        sin[i] = Math.sin(Math.toRadians(i));
    }
}

public double getSine(int angle) {
    int angleCircle = angle % 360;
    return sin[angleCircle];
}

public double getCos(int angle) {
    int angleCircle = angle % 360;
    return cos[angleCircle];
}

public static CosSineTable getTable() {
    return table;
}
}

我把循环和方法的优化留给你。

关于java - java中的快速正弦和余弦函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16930581/

相关文章:

java - 如何从 map 中删除所有空元素?

math - 某个角度的扰动向量

java - 如何在 Java 中转义正则表达式的文本?

JAVA - SSL 客户端 - 未使用 key 管理器

c++ - 优化 C++11 随机生成器的使用

c# - 优化 C# 代码片段、ObservableCollection 和 AddRange

c++ - 创建一个 Fast Sin() 函数来提高 fps ?快速 sin() 函数?

javascript - 如何在知道前两个点和到下一个点的距离的情况下获得下一个点的坐标

java - 如何在windows和linux环境下打开一个文件夹路径?

javascript - jQuery 视差/滚动事件性能