在許多作品中會看到,有不規則大小的的區塊,重複出現在畫布上,或者是隨機的畫出同樣風格,但樣式有些微差異的模組,如下圖,我自己把它稱為條件遞迴。
像這樣的操作手法不僅用在這種正方形切割,也會用在畫其他幾何形狀,線段上面,在看別的大師的原始碼的時候也常常看到這種寫法。比如A方法是一直切割畫布,首先讓程式不斷進行A方法,但設定一切條件決定他可否進入執行A方法,等都跑完A方法了以後,把執行結果的數據拿去做其他事,例如繪圖,上色等等。
let initGrid = 1000;
function setup() {
createCanvas(initGrid,initGrid);
drawMap(0, 0, initGrid);
noLoop()
}
//進行隨機切割
let drawMap = (x,y,widthD) => {
let rectNumber = int(random(1,4)); //決定到底切幾塊,控制分割和拆分
let w = widthD/rectNumber; //每個隨意切割後的塊狀的寬度
for(let i = x; i< x + widthD -1 ; i+=w){
for(let j = y; j < y + widthD -1; j+=w){
if(widthD > initGrid/2){ //設定條件
// 繼續切
drawMap(i,j,w);
}
else{
//不切了,畫方塊
rect(i, j, w )
}
}
}
}
首先謝謝大家一路觀看到現在,這是我第一次參加鐵人賽,每篇進度的安排好像不是很順暢,多災多難的結束了,整個p5.js也只有講到基礎的應用而已,就叨叨絮絮的30天XD,希望大家看得不要太痛苦~