处理不使用 while 循环绘制完整的曲线
Processing doesn't draw complete curves using while loop
我正在研究 Processing 提供的关于生成艺术的可能性,我偶然发现了一个问题:
我想使用 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");
}
和here是输出。如您所见,只有少数曲线以完整形状绘制。
此外,当我在循环外绘制其中一条 'broken' 曲线时,它工作正常。
如有任何帮助,我将不胜感激。我很高兴通过 Processing 提供的视觉输出来学习编码概念。
它按预期工作。看看当你改变背景颜色时会发生什么(很棒 post 顺便说一句,这个工作示例已经足够好了,我想调试它!):
如果你够聪明,你会注意到曲线的“内部”有颜色。除了现在它是白色的。这就是为什么只有最上面的是“不可见的”:你一个接一个地绘制它们,从最上面开始,所以每条新曲线都会通过在它上面绘画来吃掉最后一条曲线,但只是“在曲线内部”。看看当我应用一些颜色来更好地区分填充和背景时会发生什么:
既然问题很明显,那就是答案:透明度。
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;
}
这给了我们这个结果:
玩得开心!
我正在研究 Processing 提供的关于生成艺术的可能性,我偶然发现了一个问题:
我想使用 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"); }
和here是输出。如您所见,只有少数曲线以完整形状绘制。
此外,当我在循环外绘制其中一条 'broken' 曲线时,它工作正常。
如有任何帮助,我将不胜感激。我很高兴通过 Processing 提供的视觉输出来学习编码概念。
它按预期工作。看看当你改变背景颜色时会发生什么(很棒 post 顺便说一句,这个工作示例已经足够好了,我想调试它!):
如果你够聪明,你会注意到曲线的“内部”有颜色。除了现在它是白色的。这就是为什么只有最上面的是“不可见的”:你一个接一个地绘制它们,从最上面开始,所以每条新曲线都会通过在它上面绘画来吃掉最后一条曲线,但只是“在曲线内部”。看看当我应用一些颜色来更好地区分填充和背景时会发生什么:
既然问题很明显,那就是答案:透明度。
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;
}
这给了我们这个结果:
玩得开心!