如何在Processing中实现DRAWING处理?

时间:2012-10-04 15:03:53

标签: arrays arraylist drawing processing linear-algebra

我们都知道如何在Processing中画一条线。

但是当我们绘制一条线时,该线会立即显示。

如果我想见证绘画过程,即看到前进线,逐渐完成整行,该怎么办。

这就是我想要实现的:绘制几条线和曲线,最终变成某种模式。

那么如何实现呢?使用数组?

非常感谢。

2 个答案:

答案 0 :(得分:0)

在处理过程中,所有绘图都在循环中进行。创建动画序列的简单方法就是使用frameCount来驱动它,使用模数函数%是创建循环的好方法。例如,要沿x轴设置动画:

void draw() {
   float x = 50;
   float y = 50;
   float lineLength = 50;
   int framesToAnimate = 60;
   line(x,y,x+float(frameCount % framesToAnimate)/framesToAnimate*lineLength, y);
}

注意:如果你没有转换/转换为浮动

,会发生奇怪的事情

我经常使用它来动画其他功能,例如颜色。

fill(color(127 + sin(float(frameCount)/90)*127, 0, 0, 127));

如果您想获得更高级的功能,请使用PVector设置矢量和坐标。 Daniel Shiffman's site上有一个非常好的教程。

答案 1 :(得分:0)

如果要将动画设置为与帧速率无关,则可以使用mills()代替。这将返回自草图开始以来的当前时间,因此您可以设置在给定时间内以秒为单位发生的事情。 例如:

long initialTime;

void setup(){
size(400,200);
initialTime = millis();
}
void draw() {
float x = 50;
float y = 50;                              //set the multiplier to adjust speed
line(x,y,x+(millis()-initialTime)*0.01, y);           //10 px/sec
line(x,y+50,x+(millis()-initialTime)*0.05, y+50);     //50 px/sec
line(x,y+100,x+(millis()-initialTime)*0.001, y+100);  // 1 px/sec
 }

还有一些动画库,我看到一些令人印象深刻的结果,但我从未使用它们。这是list