processing制作动态山水背景

效果
代码

 1 float theta, step;  
 2 int num=5, frames = 1200;  
 3 Layer[] layers = new Layer[num];  //
 4 
 5 void setup() {  
 6   size(600, 400);  
 7   step = (height-120)/num;  
 8   for (int i=0; i<num; i++) {  
 9     layers[i] = new Layer(-20+i*step, random(1000), i+1);
10   }
11 }  
12 
13 void draw() {  
14   background(#ffffff);  
15   for (int i=0; i<layers.length; i++) {  
16     color col = lerpColor(#4A14C1, #ffffff, 0.8-0.8/num*i);  
17     fill(col);  
18     layers[i].display();
19   }  
20   theta += TWO_PI/frames;  
21 
22   //if (frameCount%2==0 && frameCount<=frames) saveFrame("image-###.gif");
23 }  
24 
25 class Layer {  
26 
27   float start, noize, speed;  
28   float yOff, yOff2;  
29 
30   Layer(float _start, float _noize, float _speed) {  
31     start = _start;  
32     noize = _noize;  
33     speed = _speed;
34   }  
35 
36   void display() {  
37     yOff = yOff2;  
38     noStroke();  
39     for (int x=0; x<width; x+=1) {  
40       float y = start + noise(noize+sin(yOff)*3)*step*3.5;  
41       rect(x, height, 1, -height+y);  
42       yOff+=TWO_PI/(width);
43     }  
44     yOff2=theta*speed;
45   }
46 }  

 

 

参考链接:http://iprocessing.cn/2017/10/22/第八期%ef%bc%9aprocessing制作动态山水背景/

posted @ 2019-05-14 11:14  Rogn  阅读(3205)  评论(0编辑  收藏  举报