我知道 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/