上一篇的教程中说到了如何画一条旋转的带色的直线,其中已经把如何用turtle绘图所需的全部元素讲的比较细致了,也就是:配置,基本图形,色彩和动画

今天这篇,我们再延伸下直线,给一个教程,讲一下如何用turtle画一个带辐条的多边形,它的基本形状是这样的:

五边形

六边形

360边形

看起来是不是还蛮酷。

注意多边形的顶点都同中心点相连接,也就是有辐条。

下面请开始表演,以画五边形为例。

首先,我们从数学和编程的角度把复杂的问题进行分解。

五边形是由五个同心的三角形组成的,中心角是72°。

N边形是由N个同心的三角形组成的,中心角是360/N°。

这是数学规律,小学的奥数应该讲过这个,手动狗头。

到这里,我们的问题就变成了如何画这个三角形,并且我们希望它的角度可变。

画三角形有2种画法:

三角形画法

鼠标指示的位置是中心点,从中心点出去的两条边是等边。

A方法的顺序是:1等边 - 2底边 - 3另一条等边

B方法的顺序是:1等边 - 2另一条等边 - 3底边

毫无疑问,从编程的角度来讲,B方法更简单,A方法至少需要3-4次数学计算才能算出来,而且还要处理误差,太南了。

对于B方法,编程的思路就比较简单:

  1. 从(0,0)出发,走length长度,结束点记为(x,y)

  2. 从(0,0)出发,在1基础上转动72°(五边形),走length长度

  3. 走到(x,y)点,结束

我们可以看到这个流程中,几乎没有数学计算。

三角形画法

我们把代码弄出来:

length = 400turtle.goto(0, 0)
turtle.pendown()
turtle.seth(0)
turtle.fd(length)
(x,y)=turtle.pos()
turtle.penup()
turtle.goto(0, 0)
turtle.pendown()
turtle.seth(72)
turtle.fd(length)
turtle.goto(x,y)
turtle.penup()

实际上,如果到了这一步,画一个多边形所需要的的基础知识80%已经具备了。

画完第一个,我们再来画第二个。

同样上代码:

turtle.goto(0, 0)
turtle.pendown()
turtle.seth(72)
turtle.fd(length)
(x,y)=turtle.pos()
turtle.penup()
turtle.goto(0, 0)
turtle.pendown()
turtle.seth(72+72)
turtle.fd(length)
turtle.goto(x,y)
turtle.penup()

三角形画法2

搞到这里,眼尖的同学一定发现了什么?

画第一个图和第二个图除了角度不一样,其他都是一样的,那还不赶紧重构一把,等着过年吗??

length = 400
for index in range(5):turtle.goto(0, 0)turtle.pendown()turtle.seth(72*index)turtle.fd(length)(x,y)=turtle.pos()turtle.penup()turtle.goto(0, 0)turtle.pendown()turtle.seth(72*(index+1))turtle.fd(length)turtle.goto(x,y)turtle.penup()

五边形

漂亮,一个完美的五边形。

我们再来把代码重构一把,让它支持N边形。

def draw_gon(length, line):angle = 360//linefor index in range(line):turtle.goto(0, 0)turtle.pendown()turtle.seth(angle*index)turtle.fd(length)(x,y)=turtle.pos()turtle.penup()turtle.goto(0, 0)turtle.pendown()turtle.seth(angle*(index+1))turtle.fd(length)turtle.goto(x,y)turtle.penup()

到这里,基本功能就完工了。

这里,我们每次起笔都是往东画,我们再重构一把,给它增加一个起始的角度值,为我们后面的旋转埋下伏笔。

def draw_gon(length, start_angle, line):angle = 360//linefor index in range(line):turtle.goto(0, 0)turtle.pendown()turtle.seth(start_angle + angle*index)turtle.fd(length)(x,y)=turtle.pos()turtle.penup()turtle.goto(0, 0)turtle.pendown()turtle.seth(start_angle+angle*(index+1))turtle.fd(length)turtle.goto(x,y)turtle.penup()

五边形_角度10

最后,再把各个多边形的美图给一下:

八边形

九边形

十边形

十二边形

十八边形

三十边形

--EOF--

例行求粉,谢谢!

python与分形0011 - 【教程】带辐条的多边形相关推荐

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

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

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

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

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

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

  4. 手把手带你飞Python爬虫+数据清洗新手教程(一)

    本文共有2394字,读完大约需要10分钟. 目录 简介 思考 撸起袖子开始干 1 获取网页源代码 2 在网页源代码里找出所需信息的位置 3 数据清洗 4 完整代码 5 优化后的代码 简介 本文使用An ...

  5. python与分形0017 - 【教程】彩色色阶蛛网

    前些天说到基础入门教程的时候,我们画了多边形,今天写一个简单点的教程,我们基于多边形做一个彩色色阶的蜘蛛网. 回顾下多边形和彩色多边形 多边形 直接贴代码,细节找旧文看. def draw_gon(l ...

  6. 80个Python经典资料(教程+源码+工具)汇总——下载目录

    2019独角兽企业重金招聘Python工程师标准>>> 大家好,51CTO下载中心根据资料的热度和好评度收集了80个Python资料,分享给Python开发的同学.内容包括1个Pyt ...

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

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

  8. python编程入门经典教程-2020年5个经典python编程入门视频教程推荐学习

    近三年,python在一二线城市,越来越火热了!企业的需求也是python编程学习者的动力!python学习网整理了适合于零基础朋友的5个python编程入门视频课程,这些都是python编程入门经典 ...

  9. 用python写脚本看什么书-终于知晓python编写脚本入门教程

    PyQt5是基于Digia公司强大的图形程式框架Qt5的python接口,由一组python模块构成.PyQt5本身拥有超过620个类和6000函数及方法.在可以运行于多个平台.PyQt5拥有双重协议 ...

  10. python最新版下载教程-各种版本的Python下载安装教程

    关键时刻,第一时间送达! 先不说楚枫的这般年纪,能够踏入元武一重说明了什么,最主要的是,楚枫在刚刚踏入核心地带时,明明只是灵武七重,而在这两个月不到的时间,连跳两重修为,又跳过一个大境界,踏入了元武一 ...

最新文章

  1. 信息记录拉取失败_天猫入驻为什么失败?猫店侠做详细解读
  2. tensorflow练习
  3. 使用go build 进行条件编译
  4. SpringBoot 的属性配置文件
  5. 在Ubuntu下使用Apt-Get安装Google Chrome
  6. [Misc]IE浏览器真正全屏幕操作技巧
  7. AutoCAD自带CAD Express Tools实现停车位自动编序号
  8. 树莓派 Docker部署甜糖星愿
  9. 常见算法工程师面试题总结(机器学习,深度学习)
  10. EcmaScript 2022中的新特性
  11. 腾讯笔试题——java题总结无答案
  12. prisma中where对象转换RedisJson查询字符串
  13. 模模搭古城搭建学习笔记2:基础设施篇
  14. manjaro linux树莓派,manjaro
  15. Kotlin语言内置函数学习2:with,also,takeIf,takeUnless
  16. 音乐和计算机跨界融合,上海尝试音乐创新:中国传统文化与西方艺术跨界融合...
  17. CentOS下载与安装
  18. 数据分析如何避免客户流失
  19. 绿布抠图;绿衣服抠图,视频单背景抠图
  20. 最近最开心的一件事情

热门文章

  1. matlab符号运算求二阶微分方程,matlab二阶微分方程求解x 0.2x 0.4x=0.2u(t)
  2. GRBL分析:gcode解释器(二)
  3. ucos II 操作系统
  4. Java连接数据库——JDBC的快速入门
  5. 大众点评字体_大众点评字体解析
  6. 208个地级市和31个省市城乡泰尔指数(2010-2019年)
  7. 【24】基于java的宠物医院管理系统
  8. 谷歌浏览器网页翻译失效,无法翻译成中文,且谷歌翻译api报404问题
  9. 联想小新v2000bigger安装黑苹果
  10. NLP——12.词向量及相关应用