如何用python来画出标准的五星红旗

1,标准的五星红旗是怎样的?

标准的五星红旗的旗面为红色,长方形,其长与高为三与二之比,旗面左上方缀黄色五角星五颗。一星较大,其外接圆直径为旗高十分之三,居左;四星较小,其外接圆直径为旗高十分之一,环拱于大星之右,且各有一角尖正对大星中心。

 有了这张图,相信大家能更好的了解我们的五星红旗!

2,如何用python来画出五星红旗?

首先我们要导入turtle库和math库

import turtle as t
import math

先把画布搞出来,这样我们就可以在画布上作画,并且设置好一个小方格的长度

t.setup(950, 600)   #先设置一个大大的画布
u = 20        #一个小方格长度为20

再把国旗的红色背景画好

t.begin_fill()       #用于填充整块区域,从t.begin_fill()开始到t.end_fill()结束。对从起始点到终点的连线和轨迹所围成的闭合区域填充颜色

t.color('red')       #红旗的背景为红色的
t.goto(-15*u, 10*u)   #以下为红旗四个顶点的坐标
t.goto(15*u, 10*u)
t.goto(15*u, -10*u)
t.goto(-15*u, -10*u)
t.goto(-15*u, 10*u)

t.end_fill()

再画出五个五角星,先画出第一个大的五角星(先给你们看示意图,这样你们更能理解代码,画的很丑,请见谅)

#将海龟挪到1星顶点且指向中心
t.color('yellow')
t.pu()                 # 抬起画笔
t.goto(-10*u, 8*u)     #海龟先到达大的五星红旗的顶点
t.seth(-90)            #然后头朝下
t.pd()                 # 放下画笔
t.left(18)             # 海龟以自身方向为标准,左转18°
t.begin_fill()

for i in range(5):     # 画出大的五角星
    t.fd(6*u*math.cos(math.radians(18)))
    t.right(144)

t.end_fill()

t.hideturtle()         #隐藏乌龟

接着画出剩下四个五角星,由于画五角星的步骤是一样的,那我们先定义个画五角星的函数。

def drawStar(u):
    t.color('yellow')
    t.pd()  # 放下画笔
    t.left(18)  # 海龟以自身方向为标准,左转18°
    t.begin_fill()

    for i in range(5):  # 画出小的五角星
        t.fd(2*u*math.cos(math.radians(18)))
        t.right(144)

    t.end_fill()

 开始画

#画出剩下的4个小五角星
for i in range(4):
    t.pu()
    
    if i==0:
        t.goto(-5*u, 8*u) #到达第一个小五角星的中心点
        t.seth(math.degrees(math.atan(3/5)))
    elif i==1:
        t.goto(-3*u, 6*u) #到达第二个小五角星的中心点
        t.seth(math.degrees(math.atan(1/7)))
    elif i==2:
        t.goto(-3*u, 3*u) #到达第三个小五角星的中心点
        t.seth(-math.degrees(math.atan(2/7)))
    else:
        t.goto(-5*u, 1*u) #到达第四个小五角星的中心点
        t.seth(-math.degrees(math.atan(4/5)))
    
    t.bk(u)
    drawStar(u)
    
t.ht()

画好了,下面看结果

 

  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值