用Python绘制美国队长盾牌

阶段难度:❤❤

 

用Python绘制美国队长盾牌_第1张图片

效果如下:

用Python绘制美国队长盾牌_第2张图片

 

编一编:

import turtle
import math

turtle.delay(1)
t=turtle.Pen()

#setPen()画笔定位子程序模块是画圆和画五角星模块都要调用到的
def setPen(x,y):
    t.penup()
    t.goto(x,y)
    t.pendown()
    t.setheading(0)

#drawCircle()画圆子程序模块
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()

#画五角星子程序模块
def drawFiveStars(r):
    setPen(0,r)   #A点坐标为画五角星的起点坐标
    t.right(72)   #向右转过72度
    t.pencolor('whitesmoke')
    t.fillcolor("whitesmoke")
    t.begin_fill()
    for i in range(5):
        #线长a =r*2*cos(18°) =120*2*cos(18°) =240*0.951 =228
        #18*math.pi/180 为了将角度转换为弧度
        t.forward(r*2*math.cos(18*math.pi/180)) 
        t.right(144)
    t.end_fill()

#drawShield()画盾牌子程序模块
def drawShield():
    drawCircle(0,0,240,'red')#四个以O(0,0)圆心的同心圆
    drawCircle(0,0,200,'white')
    drawCircle(0,0,160,'red')
    drawCircle(0,0,120,'blue')#最里面的小圆半径为120
    drawFiveStars(120) #五角星的内接圆半径为120

#采用“模块化”设计方案。if __name__=='__main__' 为主程序入口
if __name__=='__main__':
    drawShield()
    turtle.done()

 

读一读:

        这个案例采用自定义函数,函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。函数能提高应用的模块性,和代码的重复利用率。

        if __name__=='__main__' 为主程序入口,调用drawShield()画盾牌子程序模块,drawShield()去调用drawCircle()画圆子程序模块4次(红白红蓝)和drawFiveStar()画五角星子程序模块1次,setPen()画笔定位子程序模块是画圆和画五角星模块都要调用到的。

 

五角星数学原理:

用Python绘制美国队长盾牌_第3张图片

结论:a=2rcos(18°)   

应用:t.forward(r*2*math.cos(18*math.pi/180)) 

    ​turtle.circle(r,angle) ,表示以海龟当前位置,距离海龟r距离的左侧某一个点为圆心,进行angle角度(默认angle=360)大小的曲线运行,所以如果让圆心仍保持在(0,0)位置,则要让笔的纵坐标下移r,即setPen(x,y-r)。如下图所示:

用Python绘制美国队长盾牌_第4张图片

应用:setPen(x,y-r)   

 

用Python绘制美国队长盾牌_第5张图片

   应用:t.right(72)   t.right(144)

                       

      上述内容属于Python基础知识--海龟绘图--第4部分,案例源自于网络,经本人多次整理修改优化,尽量通俗易懂。

   后期将继续更新代码,请持续关注!

 

你可能感兴趣的:(Python)