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
我想使用while循环生成多条贝塞尔曲线。但是,程序跳过某些曲线的一部分,而其他曲线则正确绘制 下面是一个工作示例: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"); }
这是输出。如您所见,只有少数曲线以其完整形状绘制 另外,当我从循环中画出一条“断开”的曲线时,效果很好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
方法实际上只是一个每秒运行约60次的循环(您可以更改),您不需要这样做,尤其是在保存到文件时。太棒了!我不希望曲线有背景色。谢谢。:)draw
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; }