用Python绘制美国队长盾牌

用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