gpt4 book ai didi

java - 如何使用正弦/余弦波返回振荡数

转载 作者:行者123 更新时间:2023-11-29 06:19:37 25 4
gpt4 key购买 nike

我是 Java 编程的新手,我正在使用 Android 编写 Java 1.6。

我有一个简单的函数,可以使数字在 0 到 200 之间上下波动。我想将其放入正弦函数中,但我一直在尝试,结果总是出错。

我希望我的程序通过正弦波 y 轴更新一个 int (Number1)。

有什么想法可以将以下逻辑更改为正弦函数吗? (忽略第二个数字)

代码:

private int Number1 = 150;
private int Number2 = 0;
private int counter = 0;

public void updateNumbers() {
if (counter == 0) {
if (Number1 < 200) {
Number1 = Number1 + 50;
Number2 = Number2 - 50;
if (Number1 >= 200) {
counter = 1;
}
}
} else if (counter == 1) {
if (Number2 < 200) {
Number1 = Number1 - 50;
Number2 = Number2 + 50;
if (Number2 >= 200) {
counter = 0;
}
}
}
}

最佳答案

好的,那么您要做的是构建一个介于 0 和 200 之间的正弦波,但周期是多少?您是否希望它每 8 个调用循环一次?

这个怎么样,利用内置的 Java Math.sin 函数:

private static final double PERIOD = 8; // loop every 8 calls to updateNumber
private static final double SCALE = 200; // go between 0 and this

private int _pos = 0;
private int Number1 = 0;

public void updateNumber() {
_pos++;
Number1 = (int)(Math.sin(_pos*2*Math.PI/PERIOD)*(SCALE/2) + (SCALE/2));
}

基本上,我们保留一个变量来计算我们已完成的更新次数,并对其进行缩放以匹配正弦波的周期 2*PI。它充当“真实”sin 函数的输入,为我们提供介于 -1 和 1 之间但具有正确频率的值。然后,为了实际设置数字,我们只需将其缩放到 -100 到 100 之间,然后加上 100 以使其从一开始就处于您想要的 0-200 范围内。

(如果 double 适合你,你不必将数字转换为 int,我只是与你上面写的精神保持一致。)

关于java - 如何使用正弦/余弦波返回振荡数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3671160/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com