【问题标题】:How to make an increment followed by a decrement continuously?如何在递增后连续递减?
【发布时间】:2015-02-16 06:29:24
【问题描述】:

我试图获得一个从 0 上升到 n,然后从 n-1 下降到 0 的增量,并一遍又一遍地重复循环。

在这个用 Processing 编写的示例中,我希望背景从黑色 (i=0) 逐渐变为白色 (i=255),然后逐渐从白色变为黑色,依此类推。现在我只是让它从黑变白,然后突然变黑。

int i = 0;

void setup(){
size(640, 360);
frameRate(60);
}
void draw(){
  background(i);
  i++;
  if(i==256){i=0;}
}

【问题讨论】:

    标签: c++ loops processing increment


    【解决方案1】:

    试试-

     int change = 1;
     void draw(){
      background(i);
      i = i + change;
      if(i==256){change = -1;}
      if(i==0){change = 1;}
    }
    

    【讨论】:

    • 您甚至可以在void draw() 中定义static int change = 1 以便更好地封装
    【解决方案2】:

    看待这个问题的另一种方式是:“我怎样才能画出三角波?”。 我喜欢这种方式,因为它不需要“ifs”。这样的事情会做。

    triangleWave = maxNumber - abs(incrementedVar % (2*maxNumber) - maxNumber);

    不是吗?

    我有这个旧代码使用它,它不是绘制波浪,而是使用它来设置大小和填充颜色。还有一个正弦波用于比较。看看吧:

    float zigZag, toIncrement, speed =1, maxNumber = 255;
    float sine, x = 270, speed2 = 1;
    
    void setup() {
      size(800, 400);
      background(255);
    }
    void draw() {
      background(255);
    
      //triangle wave
      toIncrement+=speed;
      zigZag = maxNumber - abs(toIncrement % (2*maxNumber) - maxNumber);
      fill(zigZag);
      noStroke();
      ellipse( 150, height/2+100, 50, 50);
      strokeWeight(zigZag);
      stroke(0);
      line(100, height/2-100, 200, height/2-100);
      text("triangle = " + int(zigZag), 100, height-30);
      println("triangle wave value = " + zigZag);
    
    
      //sine wave
      x+=speed2;
      sine = (1+sin(radians(x)))*(maxNumber/2);
      fill(sine);
      noStroke();
      ellipse( 650, height/2+100, 50, 50);
      strokeWeight(sine);
      stroke(0);
      line(600, height/2-100, 700, height/2-100);
      fill(80);
      text("sine = " + int(sine), 600, height-30);
    }
    

    【讨论】:

    • 这是一个非常好的方法。会用!谢谢
    猜你喜欢
    • 2013-01-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-05
    • 2021-02-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多