分享

Python Turtle 画五星红旗

 流形sbz 2023-11-04 发布于甘肃

本方法参照网上查阅的国旗标准绘制方法编写

需输入国旗的长度,其它参数自动计算

import turtle as ttlimport math as mdef draw_star(x=0,y=0,r=1,heading=0): '''x,y为五角星的中心点坐标;r为中心点到尖角点的距离;heading为画笔的角度画笔起点为最左侧的尖角 ''' pen = ttl.Pen()# 设置画笔颜色和填充颜色 pen.color('yellow','yellow') pen.speed(0) # 画笔速度调到最快# 根据画笔朝向角度计算# 画笔起点至中心点连线与Y轴夹角角度 degree = heading + 72# 根据中心点坐标计算画笔起点坐标 newX = x - r*m.sin(m.radians(degree)) newY = y + r*m.sin(m.radians(90 - degree)) pen.up()# 设置画笔起点坐标 pen.setpos(newX,newY) # 设置画笔朝向 pen.setheading(heading) pen.down() pen.begin_fill() while True: pen.fd(2*r*m.sin(m.radians(72))) pen.right(144) if abs(pen.pos() - (newX,newY)) < 1: break pen.end_fill() pen.hideturtle() # 如果遇到五角星内部不填充# 就用以下方法画星:从外部走一圈def draw_stars(x=0,y=0,r=1,heading=0): '''x,y为五角星的中心点坐标;r为中心点到尖角点的距离;heading为画笔的角度画笔起点为最左侧的尖角 ''' pen = ttl.Pen()# 设置画笔颜色和填充颜色 pen.color('yellow','yellow') pen.speed(0) # 画笔速度调到最快 fd = 2*r*m.sin(m.radians(72))*( m.sin(m.radians(18)))/( m.sin(m.radians(180-36-18)))# 根据画笔朝向角度计算# 画笔起点至中心点连线与Y轴夹角角度 degree = heading + 72# 根据中心点坐标计算画笔起点坐标 newX = x - r*m.sin(m.radians(degree)) newY = y + r*m.sin(m.radians(90 - degree)) pen.up()# 设置画笔起点坐标 pen.setpos(newX,newY) # 设置画笔朝向 pen.setheading(heading) pen.down() pen.begin_fill() while True: pen.fd(fd) pen.left(72) pen.fd(fd) pen.right(144) if abs(pen.pos() - (newX,newY)) < 1: break pen.end_fill() pen.hideturtle() def draw_flag(length=100):'''x,y为国旗左下角的坐标, length为国旗的长度'''# 根据田旗长度设置窗口尺寸 ttl.Screen().setup(int(length*1.5), int(length))# 运行时间将海龟窗口顶置 ttl.Screen().getcanvas().winfo_toplevel( ).attributes('-topmost', True) pen = ttl.Pen()# 设置画笔颜色和填充颜色 pen.color('red','red') pen.up() x = -length/2 y = -length/3 pen.setpos(x,y) LW = [length,2*length/3] # 国旗的长宽 pen.down() pen.begin_fill()# 画国旗的底幕 for i in range(2): for fd in LW: pen.fd(fd) pen.left(90) pen.end_fill() pen.hideturtle() stars = [] # 记录星星的x,y,r,heading# 大星的参数 stars.append((length/6+x, length/2+y,length/10,0)) # 计算4颗小星星的画笔朝向角度 heading1 = 180 - m.degrees(m.atan(5/3)) heading2 = 180 - m.degrees(m.atan(7)) heading3 = m.degrees(m.atan(7/3)) heading4 = m.degrees(m.atan(5/4))# 设置4颗小星星的参数 stars.append([length/3+x, 3*length/5+y,length/30, heading1]) stars.append([2*length/5+x, 8*length/15+y,length/30, heading2]) stars.append([2*length/5+x, 13*length/30+y,length/30, heading3]) stars.append([length/3+x, 11*length/30+y,length/30, heading4]) for star in stars:# 用列表传入参数,需用 * 分解列表元素 Dw_star = draw_stars(*star)length = int(input('请输入国旗的长度:'))dw = draw_flag(length)
Python Turtle 画五星红旗
Python Turtle 画五星红旗

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多