結(jié)合中學(xué)的三角函數(shù)知識(shí),采用Python函數(shù)方法,用turtle來(lái)實(shí)現(xiàn)美國(guó)隊(duì)長(zhǎng)盾牌的繪制。讓我們開(kāi)始學(xué)習(xí)吧!
階段難度:???

美國(guó)隊(duì)長(zhǎng)之盾的外表涂裝與美國(guó)國(guó)旗相似,由紅色(象征勇氣)、白色(象征真理)和藍(lán)色(象征正義)組成,中間有著一個(gè)白色五角星。我們可以從最外面的圓開(kāi)始向里面畫(huà)。
效果如下:
編一編:
import turtle
import math
turtle.delay(1)
t=turtle.Pen()
#setPen()畫(huà)筆定位子程序模塊是畫(huà)圓和畫(huà)五角星模塊都要調(diào)用到的
def setPen(x,y):
t.penup()
t.goto(x,y)
t.pendown()
t.setheading(0)
#drawCircle()畫(huà)圓子程序模塊
def drawCircle(x,y,r,color):
t.pencolor(color)
t.fillcolor(color)
setPen(x,y-r)
t.begin_fill()
t.circle(r)
t.end_fill()
#畫(huà)五角星子程序模塊
def drawFiveStars(r):
setPen(0,r) #A點(diǎn)坐標(biāo)為畫(huà)五角星的起點(diǎn)坐標(biāo)
t.right(72) #向右轉(zhuǎn)過(guò)72度
t.pencolor('whitesmoke')
t.fillcolor("whitesmoke")
t.begin_fill()
for i in range(5):
#線長(zhǎng)a =r*2*cos(18°) =120*2*cos(18°) =240*0.951 =228
#18*math.pi/180 為了將角度轉(zhuǎn)換為弧度
t.forward(r*2*math.cos(18*math.pi/180))
t.right(144)
t.end_fill()
#drawShield()畫(huà)盾牌子程序模塊
def drawShield():
drawCircle(0,0,240,'red')#四個(gè)以O(shè)(0,0)圓心的同心圓
drawCircle(0,0,200,'white')
drawCircle(0,0,160,'red')
drawCircle(0,0,120,'blue')#最里面的小圓半徑為120
drawFiveStars(120) #五角星的內(nèi)接圓半徑為120
#采用“模塊化”設(shè)計(jì)方案。if __name__=='__main__' 為主程序入口
if __name__=='__main__':
drawShield()
turtle.done()
讀一讀:
這個(gè)案例采用自定義函數(shù),函數(shù)是組織好的,可重復(fù)使用的,用來(lái)實(shí)現(xiàn)單一,或相關(guān)聯(lián)功能的代碼段。函數(shù)能提高應(yīng)用的模塊性,和代碼的重復(fù)利用率。
if name=='main' 為主程序入口,調(diào)用drawShield()畫(huà)盾牌子程序模塊,drawShield()去調(diào)用drawCircle()畫(huà)圓子程序模塊4次(紅白紅藍(lán))和drawFiveStar()畫(huà)五角星子程序模塊1次,setPen()畫(huà)筆定位子程序模塊是畫(huà)圓和畫(huà)五角星模塊都要調(diào)用到的。
外接圓中畫(huà)五角星的數(shù)學(xué)原理:

結(jié)論:a=2rcos(18°)
應(yīng)用:t.forward(r2math.cos(18*math.pi/180))
turtle.circle(r,angle) ,表示以海龜當(dāng)前位置,距離海龜r距離的左側(cè)某一個(gè)點(diǎn)為圓心,進(jìn)行angle角度(默認(rèn)angle=360)大小的曲線運(yùn)行,所以如果讓圓心仍保持在(0,0)位置,則要讓筆的縱坐標(biāo)下移r,即setPen(x,y-r)。如下圖所示:

應(yīng)用:setPen(x,y-r)

應(yīng)用:t.right(72) t.right(144)
上述內(nèi)容屬于Python基礎(chǔ)知識(shí)--海龜繪圖--第4部分,案例源自于網(wǎng)絡(luò),經(jīng)本人多次整理修改優(yōu)化,盡量通俗易懂。
后期將繼續(xù)更新代碼,請(qǐng)持續(xù)關(guān)注!
本文同步CSDN鏈接:https://blog.csdn.net/xiaozhao_19/article/details/102643733