用python海龟画笔绘制标准五星红旗 |
您所在的位置:网站首页 › 用matlab画五星红旗 › 用python海龟画笔绘制标准五星红旗 |
审核原因 此处红旗用网格分隔的图片已从文中删除,核心就是先将旗面网格化,以便于画笔定位,这个可以百度搜索到相关带网格的红旗图片 绘制月饼的方法也分享给大家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): 先将旗面划分为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() |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |