当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);
}
答案 0 :(得分:0)
我想我已经弄清楚你的问题是什么了。当我运行你的代码时,它会在几个地方打印出你的x值,但每次都没有打印。为了解决这个问题,我首先将x递增PI/4
而不是.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);
}