用Python繪制美國(guó)隊(duì)長(zhǎng)盾牌

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

階段難度:???


image.png

美國(guó)隊(duì)長(zhǎng)之盾的外表涂裝與美國(guó)國(guó)旗相似,由紅色(象征勇氣)、白色(象征真理)和藍(lán)色(象征正義)組成,中間有著一個(gè)白色五角星。我們可以從最外面的圓開(kāi)始向里面畫(huà)。
效果如下:


image

編一編:

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é)原理:

image

結(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)。如下圖所示:


image

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

image

應(yīng)用:t.right(72) t.right(144)

image

上述內(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

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容