Loops 处理不需要';t使用while循环绘制完整的曲线

Loops 处理不需要';t使用while循环绘制完整的曲线,loops,while-loop,processing,curve,generative-art,Loops,While Loop,Processing,Curve,Generative Art,我正在调查处理给生成艺术带来的可能性,我偶然发现了一个问题: void setup() { size(1000,500); background(#ffffff); } float[] i_x = {1,1}; float[] i_y = {1,1}; void draw() { while (i_y[0] < height) { bezier(0,i_y[0],100,height

我正在调查处理给生成艺术带来的可能性,我偶然发现了一个问题:

void setup() {
  size(1000,500);
  background(#ffffff);
    }
      float[] i_x = {1,1};
      float[] i_y = {1,1};

    void draw() {
      
      while (i_y[0] < height)  
      {  
      bezier(0,i_y[0],100,height-100,width - 100,height-100,width, i_y[0]);
      i_y[0] = i_y[0] * 1.1;
      } 
       save("bezier.jpg");
    }
我想使用while循环生成多条贝塞尔曲线。但是,程序跳过某些曲线的一部分,而其他曲线则正确绘制

下面是一个工作示例:

void setup(){
规模(1000500);
背景(#ffffff);
}
float[]i_x={1,1};
float[]i_y={1,1};
作废提款(){
while(i_y[0]<高度)
{  
贝塞尔(0,i_y[0],100,高-100,宽-100,高-100,宽,i_y[0]);
i_y[0]=i_y[0]*1.1;
} 
保存(“bezier.jpg”);
}

这是输出。如您所见,只有少数曲线以其完整形状绘制

另外,当我从循环中画出一条“断开”的曲线时,效果很好


我非常感谢你的帮助。我正在用处理提供的可视输出学习编码概念。

它按预期工作。看看当你改变背景颜色时会发生什么(顺便说一句,很好的文章,工作示例使它足够好,我想调试它!):

如果你很聪明,你会注意到曲线的“内部”有一种颜色。只是现在它是白色的。这就是为什么只有最上面的部分是“看不见的”:你在一个接一个地绘制它们,从最上面开始,所以每一条新曲线都会通过在其上绘制来吃掉最后一条曲线,但只能“在曲线内部”。看看当我应用一些颜色来更好地区分填充和背景时会发生什么:

既然问题显而易见,那么答案就是:透明度

while(y<高度)
{
fill(0,0,0,0);//这是最重要的一行,您可以在剩下的时间里保留您的算法
贝塞尔(0,y,偏移,高度偏移,宽度偏移,高度偏移,宽度,y);
y*=1.1;
}
这给了我们这个结果:


玩得开心

您可以(也应该)将此循环放置在
setup
方法中,因为它只需运行一次。
draw
方法实际上只是一个每秒运行约60次的循环(您可以更改),您不需要这样做,尤其是在保存到文件时。太棒了!我不希望曲线有背景色。谢谢。:)
  while (y < height)  
  {
    fill(0, 0, 0, 0); // this is the important line, you can keep your algo for the rest
    bezier(0, y, offset, height-offset, width - offset, height-offset, width, y);
    y *= 1.1;
  }