Python实操笔记(2)——海龟绘图法绘制有层次感的奥运五环
文章目录
- 绘制有层次感的奥运五环
- 五环的尺寸
- 说明
- 第一层(最底层)
- 第二层(中间层)
- 第三层(顶层)
- 开始行动
- 绘制第一层
- 绘制第二层
- 绘制第三层
- 完成的动图
- 后记
绘制有层次感的奥运五环
五环的尺寸
以圆环内圈半径为单位1,外圈半径为1.2;相邻圆环圆心水平距离2.6;
两排圆环圆心垂直距离为1.1。颜色从左到右依次时蓝、黄、黑、绿、红。
在实际绘图中,将内圈设为50,外圈为60,相邻圆环水平距离为130,两排圆环圆心垂直距离为55.
首先推断出圆环的坐标,我们设最左边的点为(0,0),则从左到右最左边的点依次为(0,0),(65,-55),(130,0),(195,-55),(260,0)
说明
绘制有层次感的奥运五环其实不难,就是有点麻烦。我的初步想法是将每个环分成不同的部分,然后分别绘制,而不是一个画一整个圆。
所以我把五环分成了三个层次 。
第一层(最底层)
第一层是上面三个环被遮住的部分
也就是
我们为了绘图的方便性将它分成不同的部分
第二层(中间层)
第二层压在第一层上
中间层就是下面两个环
中间层的绘制特别方便,当然这也是精心设计的。
第三层(顶层)
顶层压在第二层上
开始行动
绘制第一层
第一层有4个部分
蓝色(小)
大致思路是
从起点(0,0)开始,先找到位置,再围成一个封闭的图形
#蓝色45°
turtle.setheading(90) #设置箭头方向
turtle.penup() #抬起?(这样笔迹就不会显示出来)
turtle.circle(-60,225) #顺时针转,半径为60,旋转的圆心角为225°
turtle.color("blue","blue")#设置pencolor和fillcolor
turtle.pendown() #放下?(这样笔迹就会显示出来)
turtle.begin_fill() #开始填充颜色
turtle.circle(-60,45) #顺时针转,半径60,旋转的圆心角为45°
turtle.right(90) #顺时针旋转90°
turtle.forward(10) #向前走10个像素点
turtle.right(90)
turtle.circle(50,45) #逆时针转,半径为50,旋转的圆心角为45°
turtle.right(90)
turtle.forward(10)
turtle.end_fill() #填充颜色结束,在其中的封闭图形都会被填充上fillcolor
黑色(长)
大致思路是
直接将光标放到黑色环形的顶点,然后围成一个封闭的图形
#黑色135°
turtle.penup()
turtle.setposition(190,60) #直接将海龟放到黑色环形的最顶点
turtle.setheading(-90) #设置向下的方向
turtle.pendown()
turtle.color("black","black")
turtle.begin_fill()
turtle.forward(10)
turtle.right(90)
turtle.circle(50,135)
turtle.left(90)
turtle.forward(-10)
turtle.left(90)
turtle.circle(-60,135)
turtle.end_fill()
剩下的两个图形其实和之前两个差不多。
关键点就是要找到开始画图的点。
还有一点不同就是颜色要换。
大家可以自己敲一下代码。
绘制第二层
第二层是最简单的一层
只要找到初始点,然后画两个圆,再在两个圆之间填充上颜色就行。
但是
上面说了
begin_fill()
之间的封闭图形都会被填上颜色
end_fill()
如果我们这样写代码
turtle.penup()
turtle.setposition(65,-55)
turtle.setheading(90)
turtle.pendown()
turtle.pencolor("yellow")
turtle.fillcolor("yellow")
turtle.begin_fill()
turtle.circle(60)
turtle.right(90)
turtle.forward(10)
turtle.right(90)
turtle.circle(50)
turtle.end_fill()
竟然可以得到一个圆环(○´・д・)ノ
但是这样写
turtle.penup()
turtle.setposition(65,-55)
turtle.setheading(90)
turtle.pendown()
turtle.pencolor("yellow")
turtle.fillcolor("yellow")
turtle.begin_fill()
turtle.circle(-60)
turtle.right(90)
turtle.forward(10)
turtle.left(90) #这里改动
turtle.circle(-50) #这里改动
turtle.end_fill()
就不能得到一个圆环
???
我当初写这个的时候是这么做的
画两个半圆环,然后填充上颜色。代码如下
turtle.penup()
turtle.setposition(65,-55)
turtle.setheading(90)
turtle.pendown()
turtle.pencolor("yellow")
turtle.fillcolor("yellow")
turtle.begin_fill()
turtle.circle(-60,180)
turtle.right(90)
turtle.forward(10)
turtle.right(90)
turtle.circle(50,180)
turtle.right(90)
turtle.forward(10)
turtle.end_fill()
turtle.setheading(-90)
turtle.begin_fill()
turtle.circle(60,180)
turtle.right(90)
turtle.forward(-10)
turtle.right(90)
turtle.circle(-50,180)
turtle.right(90)
turtle.backward(10)
turtle.end_fill()
绘制第三层
说到这里感觉也没什么好说的了,相信大致方法大家都已经掌握了。
找到开始的位置,然后画出一个封闭图形,最后填充颜色。
大家可以自己亲手试试。
完成的动图
后记
画一个有层次感的五环其实并不困难,最主要的其实还是麻烦。
如果大家有什么更简单的方法,可以和我交流。
完整的代码在附录里。
如果这篇文章,或者代码有问题,可以在评论区指出,谢谢大家!
Python实操笔记(2)——海龟绘图法绘制有层次感的奥运五环相关推荐
- Python基础学习笔记——用海龟绘图实现两两相连
学习目标: 使用海龟绘图.输入多个点,将这些点都两两相连. 代码: def connect_dot(*args):for i in range(len(args) - 1):for j in rang ...
- PSM倾向得分匹配法【python实操篇】
前言 大家好,我是顾先生,PSM倾向性得分匹配法的Python代码实操终于来啦! 对于PSM原理不太熟悉的同学可以看看前一篇文章:PSM倾向得分匹配法[上篇:理论篇] 目前网上PSM实操的相关文章 ...
- Python海龟绘图法详解
Python的画图简直是比C++强太多了! 光是海龟画图法就赢了,因为我不知道还有什么更强的画图法,没学到------ 海龟绘图法基础: 需要调用turtle库,语法import turtle,即可引 ...
- 【Python 实操】labelImg标注的xml格式转换为yolo的txt文件
[Python 实操]labelImg标注的xml格式转换为yolo的txt文件 背景 YOLO家族开枝散叶(尤其是YOLOv5)的广泛应用就涉及到图像的标注与文件格式转换,常用的标注工具有 Labe ...
- 浪潮式发售实操笔记(中国版)
浪潮式发售实操笔记(中国版) 覃小龙 中国互联网权威营销专家 沃克其人 产品发售公式的发明人叫杰夫·沃克,一个精彩的吊丝逆袭人生,他堪称互联网赚钱速度最快的人,目前是亚马逊创始人贝佐斯的创业教练. 杰 ...
- 小马同学 学习python实操的第一天
学习python实操的第一天 第一个实操案例 任务1:向文件输出"一段属于你自己的话" ##方法一 fp= open('d:/test.txt','w') ##open('文件存储 ...
- 实操笔记——笔记本加内存及清灰
实操笔记--笔记本加内存及清灰 写在前面 一.加内存 1 如何确定能否增加 1)当前电脑内存 2)系统是否支持 3)当前电脑支持的最大内存 4)内存条插槽数 2 如何选择内存条 首选确定当前内存条是几 ...
- 基于创龙TMS320C665x平台GigE工业相机图像采集案例实操笔记
基于创龙TMS320C665x平台GigE工业相机图像采集案例实操笔记 开发平台:创龙TL665x-EasyEVM: 基于TI KeyStone C66x多核定点/浮点DSP TMS320C665x, ...
- Python—实操小实验之人机PK游戏(终极版本—应用类与对象的知识点应用)
Python-实操小实验之人机PK游戏(终极版本-应用类与对象的知识点应用) 人机PK游戏所需要的基础元素如下: ①要有玩家.敌人.生命值.攻击力,还要有计分: ②要可以互相进行攻击,攻击之后生命值要 ...
最新文章
- rpath和runpath的区别
- Linux下监控文件系统
- 如何让VB6代码编辑器垂直滚动条随鼠标滚轮滚动
- MySql采用range分区可提升查询效率
- wxWidgets:wxIdleEvent类用法
- file协议 控制面板_如何在Windows File Explorer导航窗格中显示控制面板和回收站
- 构建高性能WEB站点笔记二
- iap php,PHP语言之华为应用内支付IAP验签
- python pip安装报错_python pip安装requests时报错,怎么解决
- gmm中隐变量是什么的_机器学习-隐变量模型和期望最大算法
- 多语言可视化编辑webControl 2.0版
- java求解LeetCode题目,实现求解数组中的majority element
- xp系统打开itunes显示服务器失败,windowsxp系统安装不了itunes的两种解决方法
- 数据结构与算法 计算表达式(一)
- Rocksdb 的compaction_filter和table_properties_collector 用法 及 其底层实现
- Codeforces Round #622 C2 - Skyscrapers
- python降低图像分辨率_python如何更改图像像素
- 数据分析-数据来源、字段类型、数据采集陷阱
- python另存为_python 将word另存为txt
- linux下数据库启动和停止