前幾天在B站看到一個用Python結(jié)合函數(shù)繪制愛心的方法,我這樣一個充滿好奇心的人肯定也要試試看,而且還要把這種算法帶到Scratch中。
三角函數(shù)是基本初等函數(shù)之一,是以角度為自變量,角度對應(yīng)任意終邊與單位圓交點坐標(biāo)或其比值為因變量的函數(shù)。三角函數(shù)中常用的有正弦sin、余弦cos、正切tan三種。在Scratch中我們可以在運算模塊中調(diào)用這些函數(shù)(圖1)。
下面我們來繪制sin和cos函數(shù),先將舞臺背景切換成坐標(biāo)軸(Xy-grid),目的是為了清晰地了解繪制時的坐標(biāo)情況。點擊擴展畫筆工具,將舞臺中的內(nèi)容全部擦除,設(shè)置畫筆的粗細(xì)和顏色,并且添加一個變量“X的值”。很多同學(xué)會問,是不是需要再次添加一個變量“Y的值”呢?在只繪制三角函數(shù)時因為Y=sin(X)或Y=cos(X),Y直接用表達(dá)式寫出來就可以了(圖2)。
將畫筆移到最左邊,設(shè)X的值為-240,由于cos和sin在角度0-360之間的值是-1到1之間,為了讓曲線更明顯,我將sin(X)×100,擴大Y的變化值。同理將sin變?yōu)閏os就可以繪制出cos曲線(圖3)。
繪制完sin和cos三角函數(shù)曲線后我們可以開始繪制愛心圖形了??梢岳L制出不同愛心的函數(shù)表達(dá)式有不少,最有名的笛卡爾曲線我們之前介紹過,搜索“matlab心形圖大全”,這里有多種平面和立體愛心的繪制公式。我挑選了一個較簡單不需要分段函數(shù)的愛心畫法(圖4)。
這個心形的坐標(biāo)表達(dá)式如下:
X=16(sint)3
Y=13cos(t)-5cos(2t)-2cos(3t)-cos(4t)
根據(jù)公式我們需要三個變量T,X,Y。X的值和Y的值通過T的變化來控制,重復(fù)360次,每次將T的值增加1,X變量設(shè)置為16×(sint)3;Y變量設(shè)置為13×(cost)-5×cos(2×t)-2×cos(3×t)-cos(4×t),之后你就可以看到一個完美的愛心啦。之后可以展示給自己喜歡的人看(圖5)。
將公式轉(zhuǎn)化為代碼的難度并不大,大家還可以動一下腦筋,如何在此基礎(chǔ)上添加出一些不同的花樣呢?填充、漸變、特效……期待你的驚喜。