繪製正弦波形 ( sin 波 )
這篇文章會介紹在 Scratch 裡使用擴充功能的畫筆,搭配數學三角函數、函式、邏輯判斷、重複無限次...等積木,實際繪製一個正弦波形 ( sin 波 )。
正弦波形原理
「正弦波形」是什麼呢?是一種來自三角函數中的正弦比例的曲線波形,當 x 不斷改變時,透過震幅、角度和正弦函數計算 y 座標,模擬週期性的波形圖案。
正弦波形 y 座標公式:y = y0 + n × sin(deg)
( y0:y 軸位置、n:震幅大小、deg:角度 )
更多詳細正弦波形公式,可以參考:The General Sinusoidal Function
積木程式原理
開啟 Scratch 擴充功能,加入「畫筆」積木。
首先繪製一條最基本的正弦波形,也就是角度從 0~360 的一個完整正弦波:
- 放入點擊綠旗積木,點擊綠旗時先將貓咪定位到 (-180, 0)。
- 新增變數 deg,預設為 0。
- 放入「筆跡全部清除」積木,清空舞台畫面上的筆跡。
- 使用「重複 360 次」積木,搭配 deg 變數改變 1,剛好是一個完整的正弦波週期。
- 每次重複讓 deg 改變 1,角色的 x 座標改變 1 ( 水平往右移動 )。
- 每次重複讓 y 座標設定為「y0 + n × sin(deg)」,預設 y0 為 0,n 為 50。
完成後,點擊綠旗,就會看到貓咪一邊移動,一邊畫出正弦波形。
為了讓程式更有彈性 ( 例如要連續畫出好幾條正弦波 ),可以將程式改成函式的方式運作,新增一個名為「正弦波」的函式,加入一個「deg」參數,並勾選「執行完畢再更新畫面」。
將原本的程式,搬移到正弦波函式裡,並加入「停筆」積木,避免出現不必要的線段,完成後在點擊綠旗的積木裡,呼叫正弦波函式。
完成後,點擊綠旗,舞台上就會出現一個正弦波的形狀 ( 因為勾選了「執行完畢再更新畫面」,所以會在極短的時間內繪製完成 )。
最後修改點擊綠旗的程式:
- 在點擊綠旗時,隱藏貓咪角色。
- 新增變數 a,預設 0。
- 放入重複 30 次積木,每次重複把 a 增加 1。
- 每次重複呼叫正弦波函式,將 a 的數值作為 deg 參數使用。
完成效果
完成後,點擊綠旗,舞台上就會出現 30 個正弦波的圖案。
範例解答
範例解答:繪製正弦波形 ( sin 波 )
延伸練習
如果已經熟悉了繪製正弦波形 ( sin 波 )的原理,還可以嘗試更多好玩的作法:
新增正弦波函式的參數,讓函式可以調整震幅、顏色或筆畫粗細 ( 解答 )
意見回饋
如果有任何建議或問題,可傳送「意見表單」給我,謝謝~