[Processing Example]
本週的範例中,蝦爸分享利用遞迴來繪製複雜圖形,遞迴的特性是函數之中可呼叫函數本身,因此透過此功能,我們可以建構複雜、且規律的圖形。
在此範例中按下滑鼠右鍵新增遞迴次數,左鍵則是減少遞迴次數。
在pd中,因為[gemhead]傳遞的訊息本來就會累加,所以做法很簡單,只要重複變形、移動的動作即可。
[Processing code] ↓
int size; void setup() { size(400, 400,P2D); rectMode(CENTER); size=0; } void draw() { background(0); stroke(255); noFill(); drawRect(width/2, height/2, 200, size); } void drawRect(float px, float py, float r, int i) { rect(px, py, r, r); if (i>0) { drawRect(px-r/2, py-r/2, r/2, i-1);//右上 drawRect(px-r/2, py+r/2, r/2, i-1);//右下 drawRect(px+r/2, py-r/2, r/2, i-1);//左上 drawRect(px+r/2, py+r/2, r/2, i-1);//左下 } } void mouseReleased() { if (mouseButton == LEFT) { if (size<=4) { size=size+1; } } else if (mouseButton == RIGHT) { if (size>=1) { size=size-1; } } }
[Pd Example]
在pd中,因為[gemhead]傳遞的訊息本來就會累加,所以做法很簡單,只要重複變形、移動的動作即可。
[Pd code] ↓
(square_recusion.pd)
( [pd recursion] )