使用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()

画好了,下面看结果

 

物联沃分享整理
物联沃-IOTWORD物联网 » 使用Python绘制标准五星红旗的方法详解

发表评论