▷Scratch課堂丨雪花曲線【遞歸解說】

從一個正三角形開始,把每條邊分成三等份,然後以各邊的中間長度爲底邊。分別向外作正三角形,再把“底邊”線段抹掉,這樣就得到一個六角形,它共有12條邊。再把每條邊三等份,以各中間部分的長度爲底邊,向外作正三角形後,抹掉底邊線段。反覆進行這一過程,就會得到一個“雪花”樣子的曲線。它由瑞典人科赫於1904年提出,這曲線叫做科赫曲線或雪花曲線。



01

—效果展示(1-4級)—



02

—代碼展示—



03

—知識要點—

  1. 數據模塊中變量創建與使用

  2. 控制模塊中循環和條件表達式的使用

  3. 動作模塊的使用

  4. 畫筆模塊的使用

  5. 角色在舞臺上中心座標的使用

04

—腳本解說—


在開始介紹雪花曲線的畫法之前我們先來認識一個術語“遞歸”(遞歸概念比較簡單,但是實際運用中理解起來還是有難度的

什麼是遞歸?

  一個過程或函數在其定義或說明中有直接或間接調用自身的一種方法被稱爲遞歸,遞歸做爲一種算法在程序設計語言中廣泛應用。 那麼這句話怎麼理解呢?我們來scratch來做一個例子看一下。

圖中我們自定義了一個模塊(過程)倒計時,在定義這個過程中直接調用了自身倒計時,直到數字小於0.

我們再來看看其他人怎麼理解這個遞歸的吧。

  遞歸就是包子餡的包子。它的極限是饅頭。

  山上有座廟:

  從前有座山,山上有個廟,廟裏有個老和尚,有一天,老和尚給小和尚講故事。講的故事是:山上有座廟

當兩面鏡子相互之間近似平行時,鏡中嵌套的圖像是以無限遞歸的形式出現的。也可以理解爲自我複製的過程。

 由於雪花曲線是從三角行不斷變換得到,因此我們繪製雪花曲線之需要關注一條邊的變化規律即可,想辦法畫出來,另外兩條邊都是完全一樣的。下面我們從0級開始,看看這個三角形底邊是如何一級一級發生變化的。

0級(三角形):畫直線

1級:0級(1/3長度)右轉60度  0級(1/3長度)左轉120度 0級(1/3長度)右轉60度 0級(1/3長度)

2級:1級(1/3長度)右轉60度 1級(1/3長度) 左轉120度 1級(1/3長度) 右轉60度 1級(1/3長度)

依次類推:

  4級:3級(1/3長度)右轉60度 3級(1/3長度) 左轉120度 3級(1/3長度) 右轉60度 3級(1/3長度)

  ...

  n級:n-1級(1/3長度)右轉60度 n-1級(1/3長度) 左轉120度 n-1級(1/3長度) 右轉60度 n-1級(1/3長度)

 我們發現了這樣的規律那麼在程序中該怎麼寫呢?這裏就用到了我們開始所講到的遞歸。

  打開scratch->更多積木->添加新的積木塊:我們自定義一個模塊“繪製邊”這裏需要兩個參數,一個是變化的級數,另一個是長度,如果是0級就直接繪製一個線段停止,否則就按照上面的規律:級數-1級(1/3長度)右轉60度 級數-1級(1/3長度)左轉120度 級數-1級(1/3長度)右轉60度 級數-1級(1/3長度


這樣這個程序的核心部分就完成了,代碼很簡潔,不過理解起來有點難,需要多去想想理解。

  畫邊的程序做好了,我們只需要像畫三角形一樣,拼接起來即可。接下來我們來完成這個程序,畫出這個曲線吧。


05

—腳本獲取—


獲取腳本代碼可以點擊原文獲取最後,如果覺得不錯,歡迎大家點個贊,如果還有不明白的地方可以評論留言哦!


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章