【问题标题】:Processing For loop sequence处理循环序列
【发布时间】:2023-03-23 10:00:01
【问题描述】:

我试图沿着画布的 y 轴和 x 轴依次绘制几个椭圆。这些点在随机的 y 位置绘制。

我之前在随机高度沿 x 轴顺序绘制椭圆。但是,沿 y 轴的所有椭圆都是一次绘制的。

 for (int x = 0; x < xStep; x++) {
    int mh = int(map(noise(offset+(x*0.05)), 0, 1, 0, h));


    for (int y = mh; y > mh - 3; y--) {
      ellipse(x*diam, y*diam, diam, diam);
    }
  }
  xStep++;
  if (xStep > w) {
    xStep = 0;
    offset = random(1000);
  }

然后我继续添加另一个 for 循环,以尝试沿 y 轴和 x 轴对椭圆进行排序。因此,在绘制下一列(x 轴)之前,从视觉上看,每个椭圆在 y 轴上一个接一个地绘制。但是,使用下面的代码,我得到的是 y 轴和 x 轴按顺序“绘图”,但同时在视觉上它看起来不像在绘制下一列之前完成了一行。

  //count rows and frames
  if (counter > 7) {
    counter = 0;
    rowCounter++;
  }

for (int j=0; j<7; j++) { //set values to match counter
        if (j == counter){

          for (int x = 0; x < xStep; x++) {
            int mh = int(map(noise(offset+(x*0.05)), 0, 1, 0, h));

            for (int y = mh; y > mh - 3; y--) {
              y=y-j;
              ellipse(x*diam, y*diam, diam, diam);

            }
          }
        }
      }
  xStep++;

  counter++;

  if (rowCounter > 7) {
    rowCounter = 0;
  }

  if (xStep > w) {
    xStep = 0;
    offset = random(1000);
  }

或者,如果我尝试对 xStep 使用条件,我只会绘制一行椭圆。

  //count rows and frames
  if (counter > 7) {
    counter = 0;
    rowCounter++;
  }

  for (int j=0; j<7; j++) { //set values to match counter
    if ((j == counter) && (xStep != lastXstep)) {

      for (int x = 0; x < xStep; x++) {
        int mh = int(map(noise(offset+(x*0.05)), 0, 1, 0, h));

        for (int y = mh; y > mh - 3; y--) {
          y=y-j;
          ellipse(x*diam, y*diam, diam, diam);
          xStep=lastXstep;
        }
      }
    }
  }

  xStep++;

  counter++;

  if (rowCounter > 7) {
    rowCounter = 0;
  }

  if (xStep > w) {
    xStep = 0;
    offset = random(1000);
  }

谁能帮我指出我在 for 循环构造中出错的方向? 谢谢。

【问题讨论】:

    标签: processing sequence ellipse


    【解决方案1】:

    请记住,每次调用 draw() 函数都会绘制一个帧。处理是双缓冲的,所以屏幕直到draw() 函数结束时才更新。这就是为什么您只看到最终结果而不是中间步骤的原因。

    如果要渲染中间步骤,则必须将其拆分为多个帧。为此,您可以在一组变量中跟踪程序的状态,随时间更改这些变量,并使用这些变量绘制每一帧。

    无耻的自我推销:here 是 Processing 中的动画教程,更详细地描述了上述方法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-05-05
      • 2015-10-31
      • 1970-01-01
      • 2014-01-06
      • 2015-04-05
      • 2012-03-05
      • 1970-01-01
      • 2019-08-06
      相关资源
      最近更新 更多