Processing分形之一——Wallpaper

以前用C語言實現過一些分形,可是代碼比較複雜。而對於天生對繪圖友好的Processing,及其方便。微信

在大天然中分形廣泛存在,咱們用圖形模擬,主要是找到一個貼近的函數。函數

代碼

 1 /**
 2  * Wallpaper
 3  * 微信公衆號:維度模態
 4  * 做者:Hewes
 5  */
 6 
 7 size(800, 800);  //畫布尺寸
 8 background(0);  //背景色
 9 
10 //相關參數的設定
11 //double a = 0.50, b = 2.00, c = 0.00;
12 //int mag=60;
13 //double a = 0.4, b = 1, c = 0; 
14 //int mag=100;
15 double a = 1, b = 4, c = 60;
16 int mag=1;
17 //double a = -1, b = -2, c = -3;
18 //int mag=5;
19 //double a = -1000, b = 0.1, c = -10;
20 //int mag=10;
21 
22 double x1=0, y1=0, temp;  //涉及變量
23 
24 for (int i = 0; i < 2550000; i++) {
25   //壁紙公式:
26   //xn+1 = yn - sign(xn) | b xn - c |1/2 
27   //yn+1 = a - xn 
28   temp = x1;
29   x1 = y1 - Math.signum(a * x1) * Math.sqrt(Math.abs(b * x1 - c));
30   y1 = a - temp;
31 
32   //放大+平移
33   int m = (int) (x1 * mag + width/2);
34   int n = (int) (y1 * mag + height/2);
35   //筆觸顏色設置
36   stroke(255, i/10000, i/10000);
37   //stroke(255-i/10000,255-i/10000, 0); 
38   point(m, n);
39 }

調節參數會有看起來徹底不一樣的結果:spa

double a = 1, b = 4, c = 60;
int mag=1;
code

double a = –1000, b = 0.1, c = –10;
int mag=10;
blog

double a = 0.4, b = 1, c = 0;
int mag=100;
ip

 

 

參考連接:http://iprocessing.cn/2017/08/10/第四期-processing分形之一-wallpaper/get

相關文章
相關標籤/搜索