python与分形0011 - 【教程】带辐条的多边形
上一篇的教程中说到了如何画一条旋转的带色的直线,其中已经把如何用turtle绘图所需的全部元素讲的比较细致了,也就是:配置,基本图形,色彩和动画
今天这篇,我们再延伸下直线,给一个教程,讲一下如何用turtle画一个带辐条的多边形,它的基本形状是这样的:
看起来是不是还蛮酷。
注意多边形的顶点都同中心点相连接,也就是有辐条。
下面请开始表演,以画五边形为例。
首先,我们从数学和编程的角度把复杂的问题进行分解。
五边形是由五个同心的三角形组成的,中心角是72°。
N边形是由N个同心的三角形组成的,中心角是360/N°。
这是数学规律,小学的奥数应该讲过这个,手动狗头。
到这里,我们的问题就变成了如何画这个三角形,并且我们希望它的角度可变。
画三角形有2种画法:
鼠标指示的位置是中心点,从中心点出去的两条边是等边。
A方法的顺序是:1等边 - 2底边 - 3另一条等边
B方法的顺序是:1等边 - 2另一条等边 - 3底边
毫无疑问,从编程的角度来讲,B方法更简单,A方法至少需要3-4次数学计算才能算出来,而且还要处理误差,太南了。
对于B方法,编程的思路就比较简单:
从(0,0)出发,走length长度,结束点记为(x,y)
从(0,0)出发,在1基础上转动72°(五边形),走length长度
走到(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()
搞到这里,眼尖的同学一定发现了什么?
画第一个图和第二个图除了角度不一样,其他都是一样的,那还不赶紧重构一把,等着过年吗??
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()
最后,再把各个多边形的美图给一下:
--EOF--
例行求粉,谢谢!
python与分形0011 - 【教程】带辐条的多边形相关推荐
- python绘制分形图形教程_Python教程之绘制Mandelbrot集合
原标题:Python教程之绘制Mandelbrot集合 一. 分形与混沌 自然界的很多事物,如树木.云彩.山脉.雪花.海岸线等,都呈现出传统几何学所不能描述的形状,这些形状都有如下的特性: 有着十分精 ...
- python绘制分形图形教程_#python绘制分形图形教程#如何用Python绘制Circos图
用Python实现Circos图的在线绘制的Circos有局限性,如对数据的要求.个性局限理速度等的问题,但如果你是一个Pythoneer或者喜欢用更加Pythonic的方式来个性化地绘制Circos ...
- python绘制分形图形教程_python-图形绘制(1)-turtle-递归-分形几何美学-分形树
分形几何美学:客观事物具有自相似的层级结构,局部与整体在形态.功能.信息.时间.空间等方面具有统计意义上的相似性,称为自相似性.自相似性指局部是整体成比例缩小的性质. 分形树 单根树 所有的分形树是由 ...
- 手把手带你飞Python爬虫+数据清洗新手教程(一)
本文共有2394字,读完大约需要10分钟. 目录 简介 思考 撸起袖子开始干 1 获取网页源代码 2 在网页源代码里找出所需信息的位置 3 数据清洗 4 完整代码 5 优化后的代码 简介 本文使用An ...
- python与分形0017 - 【教程】彩色色阶蛛网
前些天说到基础入门教程的时候,我们画了多边形,今天写一个简单点的教程,我们基于多边形做一个彩色色阶的蜘蛛网. 回顾下多边形和彩色多边形 多边形 直接贴代码,细节找旧文看. def draw_gon(l ...
- 80个Python经典资料(教程+源码+工具)汇总——下载目录
2019独角兽企业重金招聘Python工程师标准>>> 大家好,51CTO下载中心根据资料的热度和好评度收集了80个Python资料,分享给Python开发的同学.内容包括1个Pyt ...
- python是什么编程教程-Python 从不懂到入门
基础知识 什么是编程语言 可以简单的理解为一种计算机和人都能识别的语言 什么是 Python 一种编程语言 安装 Python 开发环境 何为开发环境 简单理解为运行 Python 的平台 去 Pyt ...
- python编程入门经典教程-2020年5个经典python编程入门视频教程推荐学习
近三年,python在一二线城市,越来越火热了!企业的需求也是python编程学习者的动力!python学习网整理了适合于零基础朋友的5个python编程入门视频课程,这些都是python编程入门经典 ...
- 用python写脚本看什么书-终于知晓python编写脚本入门教程
PyQt5是基于Digia公司强大的图形程式框架Qt5的python接口,由一组python模块构成.PyQt5本身拥有超过620个类和6000函数及方法.在可以运行于多个平台.PyQt5拥有双重协议 ...
- python最新版下载教程-各种版本的Python下载安装教程
关键时刻,第一时间送达! 先不说楚枫的这般年纪,能够踏入元武一重说明了什么,最主要的是,楚枫在刚刚踏入核心地带时,明明只是灵武七重,而在这两个月不到的时间,连跳两重修为,又跳过一个大境界,踏入了元武一 ...
最新文章
- 信息记录拉取失败_天猫入驻为什么失败?猫店侠做详细解读
- tensorflow练习
- 使用go build 进行条件编译
- SpringBoot 的属性配置文件
- 在Ubuntu下使用Apt-Get安装Google Chrome
- [Misc]IE浏览器真正全屏幕操作技巧
- AutoCAD自带CAD Express Tools实现停车位自动编序号
- 树莓派 Docker部署甜糖星愿
- 常见算法工程师面试题总结(机器学习,深度学习)
- EcmaScript 2022中的新特性
- 腾讯笔试题——java题总结无答案
- prisma中where对象转换RedisJson查询字符串
- 模模搭古城搭建学习笔记2:基础设施篇
- manjaro linux树莓派,manjaro
- Kotlin语言内置函数学习2:with,also,takeIf,takeUnless
- 音乐和计算机跨界融合,上海尝试音乐创新:中国传统文化与西方艺术跨界融合...
- CentOS下载与安装
- 数据分析如何避免客户流失
- 绿布抠图;绿衣服抠图,视频单背景抠图
- 最近最开心的一件事情
热门文章
- matlab符号运算求二阶微分方程,matlab二阶微分方程求解x 0.2x 0.4x=0.2u(t)
- GRBL分析:gcode解释器(二)
- ucos II 操作系统
- Java连接数据库——JDBC的快速入门
- 大众点评字体_大众点评字体解析
- 208个地级市和31个省市城乡泰尔指数(2010-2019年)
- 【24】基于java的宠物医院管理系统
- 谷歌浏览器网页翻译失效,无法翻译成中文,且谷歌翻译api报404问题
- 联想小新v2000bigger安装黑苹果
- NLP——12.词向量及相关应用