用Python绘制美国队长盾牌

结合中学的三角函数知识,采用Python函数方法,用turtle来实现美国队长盾牌的绘制。让我们开始学习吧!

阶段难度:❤❤❤


image.png

美国队长之盾的外表涂装与美国国旗相似,由红色(象征勇气)、白色(象征真理)和蓝色(象征正义)组成,中间有着一个白色五角星。我们可以从最外面的圆开始向里面画。
效果如下:


image

编一编:

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()画笔定位子程序模块是画圆和画五角星模块都要调用到的。

外接圆中画五角星的数学原理:

image

结论:a=2rcos(18°)

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

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


image

应用:setPen(x,y-r)

image

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

image

上述内容属于Python基础知识--海龟绘图--第4部分,案例源自于网络,经本人多次整理修改优化,尽量通俗易懂。
后期将继续更新代码,请持续关注!

本文同步CSDN链接:https://blog.csdn.net/xiaozhao_19/article/details/102643733

你可能感兴趣的:(用Python绘制美国队长盾牌)