奥运五环效果图

画圆的代码很简单:

turtle.circle(30)

对于五环而言,比较麻烦的有两点:

  • 图形比例关系。

  • 五环是嵌套的。

数学和推导

标准五环的比例关系,官方有详细描述,总结起来(假设内环半径为1):

  • 外环半径是1.2

  • 水平圆心距离是2.6

  • 上面3个圆心连线和下面2个圆心连线的垂直距离是1.1

  • 五环旗比例是3:5

其他相关的:

  • 奥林匹克标志周边应当预留环半径二分之一的距离作为不可入侵范围,且标志的宽度不得小于8毫米/30像素。

  • 奥运五环比例,红绿蓝都是1个单位,黄色1.3个单位,黑色0.92个单位。

另外,五环的颜色也有标准配色:

  • 蓝色 R0 G129 B200 #0081C8

  • 黑色

  • 红色 R238 G51 B78 #EE334E

  • 黄色 R252 G177 B49 #FCB131

  • 绿色 R0 G166 B81 #00A651

画布配置代码:

turtle.setup(width=1.0, height=1.0, startx=None, starty=None)
turtle.speed(5)
turtle.hideturtle()
#turtle.tracer(0)
turtle.colormode(255)
turtle.bgcolor('black')

比例代码:

# 尺寸 r1=内环半径,r2=外环半径,d1=水平圆心距离,d2=垂直圆心垂距
r1 = 100
r2 = int(1.2*r1)
d1 = int(2.6*r1)
d2 = int(1.1*r1)

画旗面

def rectangle(center, length_x, length_y, penc, fillc):turtle.pensize(1)turtle.fillcolor(fillc)turtle.pencolor(penc)turtle.up()pos=(center[0]-length_x/2, center[1]+length_y/2)turtle.goto(pos)turtle.begin_fill()turtle.down()turtle.seth(0)turtle.fd(length_x)turtle.seth(-90)turtle.fd(length_y)turtle.seth(180)turtle.fd(length_x)turtle.seth(90)turtle.fd(length_y)turtle.end_fill()# 旗帜
W = 2*d1+3*r1
H = W*3//5
rectangle((0,d2//2), W, H, '#fffbf0', '#fffbf0')

画五环

之前的教程中推导过堆叠的圆柱,其本质是计算出坐标数据。

同理:

turtle.home()
turtle.pensize(r2-r1)
# 蓝色 R0 G129 B200 #0081C8
turtle.pencolor((0, 129, 200))
turtle.penup()
turtle.goto((-d1, 0))
turtle.pendown()
turtle.circle(r1)# 黑色
turtle.pencolor('black')
turtle.penup()
turtle.goto((0, 0))
turtle.pendown()
turtle.circle(r1)# 红色 R238 G51 B78 #EE334E
turtle.pencolor((238, 51, 78))
turtle.penup()
turtle.goto((d1, 0))
turtle.pendown()
turtle.circle(r1)# 黄色 R252 G177 B49 #FCB131
turtle.pencolor((252, 177, 49))
turtle.penup()
turtle.goto((-d1//2, -d2))
turtle.pendown()
turtle.circle(r1)# 绿色 R0 G166 B81 #00A651
turtle.pencolor((0, 166, 81))
turtle.penup()
turtle.goto((d1//2, -d2))
turtle.pendown()
turtle.circle(r1)

处理嵌套

其原理是把重叠的部分重新绘制一遍,细节就不说了,注意其中坐标位置的提取。

代码如下(在视频中可以清楚地看到此过程):

# 修正 蓝色
turtle.pencolor((0, 129, 200))
turtle.penup()
turtle.goto((-d1+r1, r1))
turtle.pendown()
turtle.seth(-90)
turtle.circle(-r1, 30)# 修正 黑色
turtle.pencolor('black')
turtle.penup()
turtle.goto((0, 0))
turtle.pendown()
turtle.seth(-180)
turtle.circle(-r1,30)turtle.penup()
turtle.goto((r1, r1))
turtle.pendown()
turtle.seth(-90)
turtle.circle(-r1,30)# 修正 红色
turtle.pencolor((238, 51, 78))
turtle.penup()
turtle.goto((d1, 0))
turtle.pendown()
turtle.seth(-180)
turtle.circle(-r1,30)

pefect。

视频

python与分形0021 - 【教程】奥林匹克五环相关推荐

  1. python绘制分形图形教程_Python教程之绘制Mandelbrot集合

    原标题:Python教程之绘制Mandelbrot集合 一. 分形与混沌 自然界的很多事物,如树木.云彩.山脉.雪花.海岸线等,都呈现出传统几何学所不能描述的形状,这些形状都有如下的特性: 有着十分精 ...

  2. python绘制分形图形教程_#python绘制分形图形教程#如何用Python绘制Circos图

    用Python实现Circos图的在线绘制的Circos有局限性,如对数据的要求.个性局限理速度等的问题,但如果你是一个Pythoneer或者喜欢用更加Pythonic的方式来个性化地绘制Circos ...

  3. python绘制分形图形教程_python-图形绘制(1)-turtle-递归-分形几何美学-分形树

    分形几何美学:客观事物具有自相似的层级结构,局部与整体在形态.功能.信息.时间.空间等方面具有统计意义上的相似性,称为自相似性.自相似性指局部是整体成比例缩小的性质. 分形树 单根树 所有的分形树是由 ...

  4. Blender中的Python脚本介绍学习教程

    Blender中的Python脚本介绍学习教程 MP4 |视频:h264,1280×720 |音频:AAC,48000 Hz 语言:英语+中英文字幕(根据原英文字幕机译更准确)|大小解压后:1.63 ...

  5. 分享一个python cookbook的在线教程地址

    分享一个python cookbook的在线教程地址: http://python3-cookbook.readthedocs.org/zh_CN/latest/ 翻译者:熊能 转载于:https:/ ...

  6. python商业爬虫教程_廖雪峰老师的Python商业爬虫课程 Python网络爬虫实战教程 体会不一样的Python爬虫课程...

    廖雪峰老师的Python商业爬虫课程 Python网络爬虫实战教程 体会不一样的Python爬虫课程 1.JPG (53.51 KB, 下载次数: 1) 2019-8-9 08:15 上传 2.JPG ...

  7. scrapy爬虫储存到mysql_详解Python之Scrapy爬虫教程NBA球员数据存放到Mysql数据库

    获取要爬取的URL 爬虫前期工作 用Pycharm打开项目开始写爬虫文件 字段文件items # Define here the models for your scraped items # # S ...

  8. python是什么编程教程-Python 从不懂到入门

    基础知识 什么是编程语言 可以简单的理解为一种计算机和人都能识别的语言 什么是 Python 一种编程语言 安装 Python 开发环境 何为开发环境 简单理解为运行 Python 的平台 去 Pyt ...

  9. python自学平台-Python学习交流平台与教程推荐

    Python学习交流平台与教程推荐 目录 一.有编程问题怎么办? 1 Stack Overflow 2 Github 3 CSDN-专业IT技术社区 二.Python教程 1 跟我读Python文档 ...

最新文章

  1. PHP 读取数据库内容并以二维数组按指定列输出实例
  2. qpython3l手机版怎么用_qpython怎么用
  3. 164. 可达性统计【拓扑排序 / bitset】
  4. IE浏览器打不开解决的方法
  5. 数据结构------选择排序
  6. [html] label都有哪些作用?并举相应的例子说明
  7. 前端学习(1959)vue之电商管理系统电商系统之通过路由加载分类参数
  8. qmake生成VS的vcproj/sln工程文件
  9. 【搞事】HTTP文件传输服务器搭建|网站文件分享|HFSxCHFS用法
  10. [bzoj2190][SDOI2008]仪仗队
  11. 原创:CAD批量去除教育版戳记
  12. 使用matlab生成高斯滤波模板_matlab实现图像高斯滤波
  13. 安装软件时“应用程序无法启动,因为应用程序的并行配置不正确......”
  14. html链接变灰,怎么在HTML中设置点击超链接后变成灰色
  15. 产品日记(二)一些愚见, 记录在此
  16. 计算机内存条多大容量,电脑内存条到底怎么选?选多大容量最合适?
  17. Windows上安装Linux
  18. Mybatis中的 useGeneratedKeys
  19. [MySQL数据库]-基础多表练习题---员工工资
  20. 基于Web html的“我的家乡”网站前端设计

热门文章

  1. 一个屌丝程序猿的人生(四十五)
  2. 微擎php页面跳转,登录微擎后台直接跳转到人人商城后台首页
  3. 公司股权分配协议范文
  4. 微信小程序 云开发-答题小程序 demo
  5. Powershell 过火绒免杀上线
  6. 激荡20年:IE浏览器的辉煌与落寞
  7. 【CAD算法】【计算机图形学】Bezier贝塞尔曲线生成程序(python/numpy实现)[1]
  8. 【金猿产品展】诸葛用户数据分析平台(Insight)——聚焦业务场景数据应用价值挖掘,赋能精细化运营...
  9. 迅雷服务器响应超时无法加速,迅雷无法加速敏感资源怎么办?迅雷解除无法加速敏感资源限制教程...
  10. WRF如何单独指定站点位置输出数据