审核原因 此处红旗用网格分隔的图片已从文中删除,核心就是先将旗面网格化,以便于画笔定位,这个可以百度搜索到相关带网格的红旗图片

绘制月饼的方法也分享给大家
python画中秋月饼,用turtle海龟库画中秋月饼_浪淘三千的博客-CSDN博客turtle画中秋月饼效果图代码效果图代码都封装在函数里了,想改那一部分,取消原来的函数调用,然后自由加新的函数即可代码import turtlet = turtle.Pen() # 画笔一 用于画图t.speed(0)# 花纹颜色 F29407# 饼身颜色 F8B41A# 画 饼身部分def outfill_flower(flower_num: "花瓣数量", flower_color: "花瓣颜色"): for i in range(flower_num):https://blog.csdn.net/weixin_43521165/article/details/120207730

先将旗面划分为4个等分长方形,再将左上方长方形划分长宽15×10个方格。大五角星的中心位于该长方形上5下5、左5右10之处。大五角星外接圆的直径为6单位长度。(此处得单位长度做为后续程序中的尺寸比例参考值)

四颗小五角星的中心点,

第一颗位于上2下8、左10右5,

第二颗位于上4下6、左12右3,

第三颗位于上7下3、左12右3,

第四颗位于上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】

《国旗法》还给出了国旗的五种尺度规格:

尺度

长高(厘米)

1

288 × 192

2

240 × 160

3

192 × 128

4

144 × 96

5

96 × 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:直径
    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)
    t.end_fill()  # 颜色填充 直到结束

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()
    t.goto(-scale(x), scale(y))
    t.down()
    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()

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐