处理!正弦波

时间:2017-03-21 13:52:11

标签: processing sine

当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);
}

1 个答案:

答案 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);
}