資訊內(nèi)容
用scratch繪圖專題3
? ? ? 我們?cè)?
? ? ? ? ? ? ?《?用scratch繪圖專題1》里說(shuō)了畫直線和多邊型,在
? ? ? ? ? ? ? ?《用scratch繪圖專題2》里說(shuō)了畫雪花,今天說(shuō)說(shuō)用Scratch畫一棵圣誕樹吧!
? ? ? 這篇文章介紹使用分形技術(shù)繪制一棵圣誕樹的方法。分形圖是一種具有自相似特性的圖案,它的每一部分都是整體縮小后的形狀。分形圖展示了數(shù)學(xué)之美,頗有老子“道生一,一生二,二生三,三生萬(wàn)物”的哲學(xué)意味。分形圖使用簡(jiǎn)單的基本圖案構(gòu)成,通常利用遞歸技術(shù)編程實(shí)現(xiàn)。Scratch是面向青少年的圖形化編程語(yǔ)言,與Python語(yǔ)言等高級(jí)語(yǔ)言相比,雖然只是個(gè)玩具,但是Scratch的遞歸是作了專門優(yōu)化、簡(jiǎn)化,反倒使得遞歸調(diào)用的效率大大提高了,特別適合用來(lái)繪制分形圖。
? ? ?下面將介紹在Scratch中使用遞歸技術(shù)繪制圣誕樹分形圖,并在其基礎(chǔ)上演化出幾種其他類型的分形樹。
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??圣誕樹效果
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??畫圣誕樹程序
? ? ? 下面對(duì)畫圣誕樹的程序腳本進(jìn)行簡(jiǎn)單講解。
? ? ? 第一步:畫樹干
? ? ? 樹干從最初的30個(gè)單位開始,每次以0.9的比率縮減。畫筆大小設(shè)定為每段樹干長(zhǎng)度的0.2。
? ? ? 第二步:畫左側(cè)的樹枝在上面的”旋轉(zhuǎn)”模塊中,使用“右轉(zhuǎn)…度”指令設(shè)置畫筆角度,所以這里設(shè)置負(fù)值,可在樹干左側(cè)畫出樹枝。設(shè)置-120度,每次以0.55的縮減比率畫出左側(cè)的樹枝。
? ? ? 這里為了演示,將遞歸結(jié)束條件設(shè)置為“長(zhǎng)度<5”,可以看到樹枝的脈絡(luò)。小海豚科學(xué)館提示,實(shí)際的效果是樹枝會(huì)不斷的變短變小,并在小于某個(gè)閾值時(shí)把將畫筆顏色設(shè)為綠色,就能畫出樹葉效果。變化過(guò)程如下圖所示。
? ? ? 第三步:畫右側(cè)的樹枝
? ? ? 同理,設(shè)置旋轉(zhuǎn)角度為120度,畫出右側(cè)的樹枝。為了增加變化,讓右側(cè)的樹枝與左側(cè)的樹枝錯(cuò)開一下,避免左右對(duì)稱。這里以每段樹枝長(zhǎng)度的0.2作為偏移量。
? ? ? 第四步:畫禮物
使用畫筆大小設(shè)置為5,在樹枝末梢隨機(jī)畫出彩色的圓點(diǎn),給圣誕樹掛上許多禮物。
? ? ? ?這樣利用分形技術(shù)繪制出了一棵圣誕樹。為了讓樹枝有一些變化,在設(shè)置旋轉(zhuǎn)角度時(shí),設(shè)置為從100到120之間隨機(jī)選一個(gè)數(shù)作為角度。
? ? ? 可以自行調(diào)整這個(gè)角度,讓樹枝以不同的角度畫出,或向下,右向上,最終使整棵樹具有不同的外觀。小小的聲音提示您,這就像是一棵剛買回來(lái)的“圣誕樹”,慢慢調(diào)整各個(gè)樹枝的角度,把樹冠調(diào)整到合適狀態(tài)。當(dāng)然,你可以隨心所欲地調(diào)整,只要你喜歡就好。
? ? ? ? ?挑戰(zhàn)一下
? ? ? 這兩個(gè)模塊的腳本,自己實(shí)現(xiàn)吧,就是設(shè)置畫樹時(shí)的畫筆大小、顏色,以及畫禮物的畫筆大小和顏色。
聲明:本文章由網(wǎng)友投稿作為教育分享用途,如有侵權(quán)原作者可通過(guò)郵件及時(shí)和我們聯(lián)系刪除

- 上一篇
【scratch】<圖文>學(xué)習(xí)自制積木讓編程更方便
自制積木功能
- 下一篇
Scratch編程基礎(chǔ)課第十一講:一切行動(dòng)聽(tīng)指揮(1)
Scratch編程基礎(chǔ)課第十一講:一切行動(dòng)聽(tīng)指揮(1) 上節(jié)課我們已實(shí)現(xiàn)了小貓?jiān)谒椒较蛏蟻?lái)回的移動(dòng),但腳本開始運(yùn)行后小貓便開始行動(dòng)了,顯得有點(diǎn)無(wú)組織無(wú)紀(jì)律,我們能不能加一個(gè)“開關(guān)”,我讓它走就走,讓它停他就停呢?我們可以使用“控制”中的“等待……”指令模塊來(lái)實(shí)