加工 !正弦波
processing ! Sine wave
我试图在 y 具有最高值时显示 x 位置。在 if 语句中,我试图将 y 值与 120 进行比较,但它似乎从来都不是真的,因此它不会使用文本函数显示我的 x 位置。我也尝试将 y 值四舍五入,但结果仍然不是我想要的。谁能帮帮我?
问候 Antmar。
float x = 0.0;
float y = 0.0;
void setup() {
background(150);
size(800,200);
smooth();
line(0,100,width,100);
}
void draw() {
//background(255);
x += 0.5;
y =map (sin(x/20),-1,1,80,120) ;
noStroke();
fill(#BBFFDD);
ellipse(x, y , 1, 1);
if ( y < 119 && y > 118.94) {
textSize(10);
text(x,x-10,y+20);
}
println("x =",x,"|","y =",y);
}
我想我已经知道你的问题是什么了。当我 运行 你的代码时,它在几个地方打印出你的 x 值,但并不是每次都打印。为了解决这个问题,我首先将 x 增加 PI/4
而不是 0.5,以使其更有可能接近 120。然后,我查看了 y 的值,最高值仅略低于 120 . 为了打印出此时的 x 值,我将 if 条件设为以下,以便只捕获那个 y 值。我还添加了另一个 if 条件来获取 x 在此 sin 函数的局部最大值处的值:
if ( y >= 100 + 19.999) {
textSize(10);
text(x,x-10,y+20);
}else if(y <= 100 - 19.999){
textSize(10);
text(x,x+10,y-10);
}
编辑:查看 x 和 y 的值后,我发现将 x 递增 PI/4
会导致 y 的最小值和最大值恰好为 120 和 80,因此您可以检查这些值取而代之的是值,如下所示:
if (y == 120) {
textSize(10);
text(x,x-10,y+20);
}else if(y == 80){
textSize(10);
text(x,x+10,y-10);
}
我试图在 y 具有最高值时显示 x 位置。在 if 语句中,我试图将 y 值与 120 进行比较,但它似乎从来都不是真的,因此它不会使用文本函数显示我的 x 位置。我也尝试将 y 值四舍五入,但结果仍然不是我想要的。谁能帮帮我?
问候 Antmar。
float x = 0.0;
float y = 0.0;
void setup() {
background(150);
size(800,200);
smooth();
line(0,100,width,100);
}
void draw() {
//background(255);
x += 0.5;
y =map (sin(x/20),-1,1,80,120) ;
noStroke();
fill(#BBFFDD);
ellipse(x, y , 1, 1);
if ( y < 119 && y > 118.94) {
textSize(10);
text(x,x-10,y+20);
}
println("x =",x,"|","y =",y);
}
我想我已经知道你的问题是什么了。当我 运行 你的代码时,它在几个地方打印出你的 x 值,但并不是每次都打印。为了解决这个问题,我首先将 x 增加 PI/4
而不是 0.5,以使其更有可能接近 120。然后,我查看了 y 的值,最高值仅略低于 120 . 为了打印出此时的 x 值,我将 if 条件设为以下,以便只捕获那个 y 值。我还添加了另一个 if 条件来获取 x 在此 sin 函数的局部最大值处的值:
if ( y >= 100 + 19.999) {
textSize(10);
text(x,x-10,y+20);
}else if(y <= 100 - 19.999){
textSize(10);
text(x,x+10,y-10);
}
编辑:查看 x 和 y 的值后,我发现将 x 递增 PI/4
会导致 y 的最小值和最大值恰好为 120 和 80,因此您可以检查这些值取而代之的是值,如下所示:
if (y == 120) {
textSize(10);
text(x,x-10,y+20);
}else if(y == 80){
textSize(10);
text(x,x+10,y-10);
}