iT邦幫忙

2022 iThome 鐵人賽

DAY 30
0
Modern Web

P5.js 學習之路系列 第 30

Day30 - p5.js中應用條件遞迴

  • 分享至 

  • xImage
  •  

在許多作品中會看到,有不規則大小的的區塊,重複出現在畫布上,或者是隨機的畫出同樣風格,但樣式有些微差異的模組,如下圖,我自己把它稱為條件遞迴。

像這樣的操作手法不僅用在這種正方形切割,也會用在畫其他幾何形狀,線段上面,在看別的大師的原始碼的時候也常常看到這種寫法。比如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,希望大家看得不要太痛苦~


上一篇
Day29 - 利用class生成物件
系列文
P5.js 學習之路30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

2 則留言

0
前端小小咖
iT邦新手 4 級 ‧ 2022-10-15 18:14:56

恭喜完賽!!!!

0
Tree
iT邦新手 3 級 ‧ 2022-10-15 22:48:48

恭喜完賽!/images/emoticon/emoticon12.gif

我要留言

立即登入留言