斐波那契數(shù)列又稱黃金分割數(shù)列,而斐波那契螺旋線是在斐波那契數(shù)列為邊長的一系列正方形中繪制一個90度的弧線,將這些弧線連接起來組成的一條漂亮的螺旋線,又稱為“黃金螺旋”。自然界中存在許多“黃金螺旋”的圖案,不得不感嘆大自然的鬼斧神工(圖1)。
先思考斐波那契螺旋線的繪制算法,需要產(chǎn)生符合斐波那契數(shù)列的數(shù)字(0,1,1,2,3,5,8,13……),這個數(shù)列可以用遞歸的方法定義F0=0,F(xiàn)1=1,F(xiàn)n=F(n-1)+F(n-2)。接著按這個數(shù)列繪制出對應邊長的正方形并拼接在一起,然后繪制出對應的弧度進行組合完成“黃金螺旋”。
接下來思考用Scratch完成這個算法需要將繪制過程分為幾個步驟。對應分成三個步驟:1.繪制正方形;2.計算斐波那契數(shù)列;3.繪制弧線(圖2)。
開始編程,刪除小貓角色,新增鉛筆角色用于繪制正方形,在繪制前先在造型中將筆尖的位置調(diào)整到中心。初始化畫筆的粗細、角色大小、抬筆狀態(tài)。接下來考慮需要使用的變量,變量有三個:“正方形的邊長”,從圖中觀察到初始值是1;為了用遞歸產(chǎn)生斐波那契數(shù)列的數(shù)字,還需變量F1初始值0和F2初始值1。圖中有六個正方形,所以可以定義循環(huán)重復執(zhí)行6次(也可以手動輸入其他循環(huán)次數(shù))。增加兩個自制積木:“繪制正方形”和“計算斐波那契數(shù)列”;正方形的繪制比較簡單,就不細說了,用(“正方形的邊長”×30)讓正方形大小更好看。需要注意一個細節(jié),畫完一個正方形后下一個正方形的起點不是在上一個正方形的終點,圖2中綠色箭頭標注的就是前三個正方形的起點,仔細分析知道畫完后還要移動兩次。繪制完一個正方形后用自制積木“計算斐波那契數(shù)列”計算出下一個正方形的邊長。到這一步結束后,我們已經(jīng)完成了所有正方形框的繪制。接下來是對弧線進行繪制了(圖3)。
正方形用藍色繪制,螺旋用紅色繪制,所以需要創(chuàng)建一個新的空白角色用于繪制螺旋線。初始化畫筆粗細、起始位置、抬筆狀態(tài)。弧線角度為90度,重復執(zhí)行10次,每次右旋轉9度。確定旋轉時移動的步數(shù)要稍微難一些。直接告訴你答案,這里用(“正方形的邊長”×30×0.154)。為什么是0.154倍呢?本來移動步長應該為以正方形邊長為半徑的弧線長的十分之一(πr/2÷10=0.157r),不過考慮到畫筆還有3的粗細,所以經(jīng)過調(diào)整為0.154倍邊長。
“黃金螺旋”只是數(shù)學中的六大經(jīng)典螺旋之一,還有“費馬螺旋、阿基米德螺旋、雙曲螺旋”都是非常有意思的圖形,大家也可以去嘗試挑戰(zhàn)一下自己哦。