文章目录

  • 绘制有层次感的奥运五环
    • 五环的尺寸
    • 说明
      • 第一层(最底层)
      • 第二层(中间层)
      • 第三层(顶层)
    • 开始行动
      • 绘制第一层
      • 绘制第二层
      • 绘制第三层
    • 完成的动图
    • 后记

绘制有层次感的奥运五环

五环的尺寸

以圆环内圈半径为单位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)——海龟绘图法绘制有层次感的奥运五环相关推荐

  1. Python基础学习笔记——用海龟绘图实现两两相连

    学习目标: 使用海龟绘图.输入多个点,将这些点都两两相连. 代码: def connect_dot(*args):for i in range(len(args) - 1):for j in rang ...

  2. PSM倾向得分匹配法【python实操篇】

    前言 大家好,我是顾先生,PSM倾向性得分匹配法的Python代码实操终于来啦! ​ 对于PSM原理不太熟悉的同学可以看看前一篇文章:PSM倾向得分匹配法[上篇:理论篇] 目前网上PSM实操的相关文章 ...

  3. Python海龟绘图法详解

    Python的画图简直是比C++强太多了! 光是海龟画图法就赢了,因为我不知道还有什么更强的画图法,没学到------ 海龟绘图法基础: 需要调用turtle库,语法import turtle,即可引 ...

  4. 【Python 实操】labelImg标注的xml格式转换为yolo的txt文件

    [Python 实操]labelImg标注的xml格式转换为yolo的txt文件 背景 YOLO家族开枝散叶(尤其是YOLOv5)的广泛应用就涉及到图像的标注与文件格式转换,常用的标注工具有 Labe ...

  5. 浪潮式发售实操笔记(中国版)

    浪潮式发售实操笔记(中国版) 覃小龙 中国互联网权威营销专家 沃克其人 产品发售公式的发明人叫杰夫·沃克,一个精彩的吊丝逆袭人生,他堪称互联网赚钱速度最快的人,目前是亚马逊创始人贝佐斯的创业教练. 杰 ...

  6. 小马同学 学习python实操的第一天

    学习python实操的第一天 第一个实操案例 任务1:向文件输出"一段属于你自己的话" ##方法一 fp= open('d:/test.txt','w') ##open('文件存储 ...

  7. 实操笔记——笔记本加内存及清灰

    实操笔记--笔记本加内存及清灰 写在前面 一.加内存 1 如何确定能否增加 1)当前电脑内存 2)系统是否支持 3)当前电脑支持的最大内存 4)内存条插槽数 2 如何选择内存条 首选确定当前内存条是几 ...

  8. 基于创龙TMS320C665x平台GigE工业相机图像采集案例实操笔记

    基于创龙TMS320C665x平台GigE工业相机图像采集案例实操笔记 开发平台:创龙TL665x-EasyEVM: 基于TI KeyStone C66x多核定点/浮点DSP TMS320C665x, ...

  9. Python—实操小实验之人机PK游戏(终极版本—应用类与对象的知识点应用)

    Python-实操小实验之人机PK游戏(终极版本-应用类与对象的知识点应用) 人机PK游戏所需要的基础元素如下: ①要有玩家.敌人.生命值.攻击力,还要有计分: ②要可以互相进行攻击,攻击之后生命值要 ...

最新文章

  1. rpath和runpath的区别
  2. Linux下监控文件系统
  3. 如何让VB6代码编辑器垂直滚动条随鼠标滚轮滚动
  4. MySql采用range分区可提升查询效率
  5. wxWidgets:wxIdleEvent类用法
  6. file协议 控制面板_如何在Windows File Explorer导航窗格中显示控制面板和回收站
  7. 构建高性能WEB站点笔记二
  8. iap php,PHP语言之华为应用内支付IAP验签
  9. python pip安装报错_python pip安装requests时报错,怎么解决
  10. gmm中隐变量是什么的_机器学习-隐变量模型和期望最大算法
  11. 多语言可视化编辑webControl 2.0版
  12. java求解LeetCode题目,实现求解数组中的majority element
  13. xp系统打开itunes显示服务器失败,windowsxp系统安装不了itunes的两种解决方法
  14. 数据结构与算法 计算表达式(一)
  15. Rocksdb 的compaction_filter和table_properties_collector 用法 及 其底层实现
  16. Codeforces Round #622 C2 - Skyscrapers
  17. python降低图像分辨率_python如何更改图像像素
  18. 数据分析-数据来源、字段类型、数据采集陷阱
  19. python另存为_python 将word另存为txt
  20. linux下数据库启动和停止

热门文章

  1. [转]机器学习资料(非常好理解)
  2. 【搜索】单词方阵 luogu-1101
  3. 新冠疫情下的巨大压力,越来越多的人患上了心碎综合症……
  4. 微信控制树莓派运行python_树莓派笔记07-微信公众号控制树莓派(一)
  5. 中国工业钩环市场深度研究分析报告
  6. 基于卷积神经网络(CNN)的图像识别 之 火焰识别
  7. r语言中将茎叶图旋转90度_R语言(02)绘图
  8. flutter去除阻尼效果
  9. xch-sboot单体服务架子
  10. arcgis加载项双击没反应