⽤python海龟画笔绘制标准五星红旗
审核原因 此处红旗⽤⽹格分隔的图⽚已从⽂中删除
先将旗⾯划分为4个等分长⽅形,再将左上⽅长⽅形划分长宽15×10个⽅格。⼤五⾓星的中⼼位于该长⽅形上5下5、左5右10之处。⼤五⾓星外接圆的直径为6单位长度。(此处得单位长度做为后续程序中的尺⼨⽐例参考值)
四颗⼩五⾓星的中⼼点,
第⼀颗位于上2下8、左10右5,
第⼆颗位于上4下6、左12右3,
第三颗位于上7下3、左12右3,
长城腾翼c30价格
第四颗位于上9下1、左10右5之处。
狮跑价格
每颗⼩五⾓星外接圆的直径均为2单位长度。四颗⼩五⾓星均有⼀⾓尖正对⼤五⾓星的中⼼点。
此处红旗⽤⽹格分隔的图⽚⼀并删除
⼤五⾓星:左上⾓起点(2/30,4/20)【左数第2格,上数第4格】 边长 (6/30) 中⼼点(5/30,5/20)【5,5】
⼩五⾓星:
第⼀颗 : 中⼼点(10/30,2/20) 【左10,上2】
第⼆颗 : 中⼼点(12/30,4/20) 【左12,上4】
第三颗 : 中⼼点(12/30,7/20) 【左12,上7】
第四颗: 中⼼点(10/30,9/20) 【左10,上9】
河南冯长革《国旗法》还给出了国旗的五种尺度规格:
尺度长⾼(厘⽶)
1288 × 192
2240 × 160
3192 × 128
4144 × 96
596 × 64
import turtle
import math
t = turtle.Pen()
width = 900
height = 600
t.speed(6)  # 设置画笔的绘制速度值为 --> 1(慢)-->10(快),0为最快
t.screen.title('祖国万岁')  # 设置图画的名称
t.screen.setup(width, height)  # 设置画布的⼤⼩宽⾼(正好等于五星红旗的宽⾼)
t.screen.bgcolor('red')  # 设置画布的颜⾊,此处设为五星红旗的底⾊红⾊
t.fillcolor('yellow')  # 五⾓星的填充颜⾊
t.pencolor('yellow')  # 画笔颜⾊和五⾓星颜⾊⼀致
# 计算不同直径外接圆的五⾓星的边长(⽐如6)当被调⽤的时候直接返回结果(具体的边长)
def side_length(diameter):  # diameter:直径h8
return math.sin(math.radians(72))*diameter*30
# 将画布平均分为宽30个单位正⽅形⾼20个单位正⽅形的坐标参考系
# 计算每⼀个⼩正⽅形格⼦的实际宽度⽤以移动画笔当被调⽤的时候直接返回结果
def scale(diameter):  # scale:⽐例尺  diameter代表格⼦数(五⾓星外接圆的直径)
return width/30*diameter  # width/30代表每⼀个格⼦的实际长度
# 绘制不同⼤⼩的五⾓星每个五⾓星的画法轨迹是⼀样的
def star(diameter,angle):  # star:星星第⼀个参数代表五⾓星的外接圆直径第⼆个代表画笔旋转⾓度
t.setheading(angle)  # 当画笔来到某个五⾓星的中⼼点后,对画笔的指向进⾏调整,以使⼩五⾓星⼀⾓指向⼤五⾓星的中⼼    t.forward(scale(diameter)/2)  # 画笔从五⾓星的中⼼点前进到五⾓星的起始绘制点距离为外接圆直径的⼀半所以要除以2    t.setheading(angle-180)  #  使画笔指向180°反转本来都是向左的现在调成向右
t.left(18)  # 画笔再次进⾏微调18度(五⾓星内⾓的⼀半)准确指向将要开始绘制第⼀条边的⽅向
t.begin_fill()  # 准备颜⾊填充填充将要绘制出的五⾓星
for i in range(5):
t.forward(side_length(diameter))
t.right(144)
def spin(x,y):  # spin:旋转主要是为了4个⼩五⾓星都有1个⾓都能对准⼤五⾓星的中⼼
return math.degrees(math.atan2(x,y))
def national_flag(x,y,z,h):  # x:从往左移格数 y:往上移格数 z:五⾓星直径 h:画笔旋转⾓度
t.up()
<(-scale(x), scale(y))
t.down()1m coupe
star(z,h)
national_flag(10, 5, 6, 180-18)  # (五⾓星中⼼点位置:从画布中⼼左移距离,上移格数,尺⼨,画笔旋转⾓度)
national_flag(5, 8, 2, spin(3, 5)+180)  # 第⼀个⼩五⾓星
national_flag(3, 6, 2, spin(1, 7)+180)  # 第⼆个⼩五⾓星
national_flag(3, 3, 2, 180-spin(2, 7))  # 第三个⼩五⾓星
national_flag(5, 1, 2, 180-spin(4, 5))  # 第四个⼩五⾓星
二手奇瑞瑞虎t.hideturtle()
turtle.done()