#隱秘的角落#正在熱播,認真觀劇的朋友一定發現了,第6集的劇情中,張老師在數學課上講了一個悽美的愛情故事——笛卡爾和心形曲線:
笛卡爾和美麗的瑞典公主相愛了,但是他們相差了三十多歲,愛情被國王知道了,國王極力反對,並流放了笛卡爾,笛卡爾在臨死之前給深愛的公主寫了一封情書,裡面只寫了這樣一條公式:r=a(1-sinθ),當公主接到信時,笛卡爾已經死在了獄中,公主也一生未嫁。這個公式就是著名的笛卡爾心形曲線。

劇中還講述了故事的另一個版本:笛卡爾並不是死於疾病,而是死於背叛。當然,這是劇情需要,通過這個故事映射劇中人物的遭遇和內心世界,而且對於這個故事並沒有明確的答案,到底是愛情童話,還是背叛?你有什麼想法,歡迎留言評論哦。
言歸正傳,作為Scratch編程學習者,我們更關注的是這個曲線的實現方式,用Scratch畫一顆愛心,是一件多麼浪漫而有趣的事情呀!
01坐標系的轉換
我們知道在Scratch3.0編程中,舞臺使用直角坐標系標註位置(直角坐標系也叫笛卡爾坐標系,它也是由著名數學家笛卡爾發明的,哦!多麼偉大的數學家啊!),而心形曲線r=a(1-sinθ)是一個極坐標方程,需要轉換為參數方程,才能在舞臺上繪製出來。

極坐標系中的兩個坐標 r和 θ可以通過x=ρcosθ,y=ρsinθ轉換為直角坐標系下的坐標值。所以轉換後的參數方程為:
x = cos t × a ( 1 - sin t)
y = sin t × a ( 1 - sin t)
其中t表示角度,取值範圍是0°~360°,a是一個常量控制繪製曲線的大小。
02在Scratch中編程
有了上面的知識基礎,再藉助Scratch3.0中的擴展工具——畫筆,來繪製出美麗的愛心曲線吧。
① 背景、角色和變量
為了演示坐標變化效果,我們直接選擇Scratch自帶的Xy-grid背景。
點擊繪製,創建一個空白的角色。
再設定兩個變量:a 和 t,分別對應參數方程中的兩個參數值。
② 組合參數方程
cos t × a ( 1 - sin t),sin t × a ( 1 - sin t)這兩個方程通過運算中的積木可以很輕鬆的組合而成,它們分別對應x坐標和y坐標的值。

③ 實現繪製過程
根據公式,我們知道t的取值範圍是0°到360°,通過設定a的值,並且控制t的變化,可以得到相應的坐標值。
所以,使用重複執行積木,使程序重複執行360次,再配合畫筆工具,就能實現繪製的過程了:

最後執行完的效果是這樣的:

03引申的思考
我們使用Scratch編程工具,很輕鬆地繪製了著名的笛卡爾心形曲線,它將死板的公式,轉化為形象的圖形化展示效果,讓我們既學習了編程知識,又掌握了數學理論。
所以,少兒編程不能孤立來看,它可以配合其他學科,讓學習變得不再枯燥。積木哥今後也會發布更多有趣的編程小例子,和大家一起學習,一起成長!