科赫曲线,也叫做雪花曲线。是一种分形几何,分形几何是一种迭代的几何图形,广泛存在于自然界中。

科赫曲线是一种迭代的图形,所以我们是可以利用python中的迭代法来绘制。
我们先考虑如何实现迭代。
首先我们确定递归的基例,考虑最基本的情况,就是直接绘制一条曲线,没有任何的改变,即0阶的科赫曲线。

if n==0:
turtle.fd(size)

这里的size指的是长度。
然后我们来确定递归的链条。

else:
for angle in [0,60,-120,60]:
turtle.left(angle)
kehe(size/3,n-1)

我们观察每一条线,对每一个三分之一处进行一次转向,角度依次为0、60、-120、60,单位为度。
然后我们加入定义主函数,用来绘制一个科赫曲线。

#科赫曲线
import turtle
def kehe(size,n):
if n==0:
turtle.fd(size)
else:
for angle in [0,60,-120,60]:
turtle.left(angle)
kehe(size/3,n-1)
def main():
turtle.setup(800,400)
turtle.penup()
turtle.goto(-300,-50)
turtle.pendown()
turtle.pensize(2)
kehe(600,3)
#三阶科赫曲线
turtle.hideturtle()
main()

turtle.hideturtle()用来最后将画笔隐藏。
最终画出的效果如下:

而我们希望得到的科赫雪花这是三个上面这样的图形组成而成,这时我们就需要在绘制上面图像的结束时转变角度,然后继续绘制。
代码如下:

#科赫雪花
import turtle
def kehe(size,n):
if n==0:
turtle.fd(size)
else:
for angle in [0,60,-120,60]:
turtle.left(angle)
kehe(size/3,n-1)
def main():
turtle.setup(600,600)
turtle.penup()
turtle.goto(-200,100)
turtle.pendown()
turtle.pensize(2)
level=3
#三阶科赫雪花
kehe(400,level)
turtle.right(120)
kehe(400,level)
turtle.right(120)
kehe(400,level)
turtle.hideturtle()
main()

可以最终得出如下图形:

这里我们可以通过改变参数来得到我们所需要的高阶图形,也可以通过加快画笔的速度来缩减画图的所用时间。下面是我改变阶数画出的四阶与五阶的图形。


对于科赫雪花,我们还可以进行拓展,比如我把三边改为四边,将绘制三角形改为四边形进行迭代,有很多种的改变方式,但思路方法一致,下面是我自己随意改变形状所得的图形形状。
整体为三角形,突起为四边形的二阶图形:

整体为三角形,突起为四边形的三阶图形:


整体为三角形,突起为四边形的三阶图形:

python学习笔记 第五章(科赫雪花与科赫曲线)相关推荐

  1. 【Python学习笔记】第一章基础知识:格式化输出,转义字符,变量类型转换,算术运算符,运算符优先级和赋值运算符,逻辑运算符,世界杯案例题目,条件判断if语句,猜拳游戏与三目运算符

    Python学习笔记之[第一章]基础知识 前言: 一.格式化输出 1.基本格式: 2.练习代码: 二.转义字符 1.基本格式: 2.练习代码: 3.输出结果: 三.输入 1.基本格式: 2.练习代码: ...

  2. Programming Entity Framework-dbContext 学习笔记第五章

    ### Programming Entity Framework-dbContext 学习笔记 第五章 将图表添加到Context中的方式及容易出现的错误 方法 结果 警告 Add Root 图标中的 ...

  3. python学习笔记(五岁以下儿童)深深浅浅的副本复印件,文件和文件夹

    python学习笔记(五岁以下儿童) 深拷贝-浅拷贝 浅拷贝就是对引用的拷贝(仅仅拷贝父对象) 深拷贝就是对对象的资源拷贝 普通的复制,仅仅是添加了一个指向同一个地址空间的"标签" ...

  4. 《Go语言圣经》学习笔记 第五章函数

    <Go语言圣经>学习笔记 第五章 函数 目录 函数声明 递归 多返回值 匿名函数 可变参数 Deferred函数 Panic异常 Recover捕获异常 注:学习<Go语言圣经> ...

  5. python学习笔记(五)缩进

    python学习笔记(五)缩进 原作:http://www.cnblogs.com/vamei/archive/2012/05/29/2524706.html 笔记: #!/usr/bin/env p ...

  6. 5岁自学python编程-python学习笔记(五岁以下儿童)深深浅浅的副本复印件,文件和文件夹...

    python学习笔记(五岁以下儿童) 深拷贝-浅拷贝 浅拷贝就是对引用的拷贝(仅仅拷贝父对象) 深拷贝就是对对象的资源拷贝 普通的复制,仅仅是添加了一个指向同一个地址空间的"标签" ...

  7. python学习笔记(五)---替换函数

    python学习笔记(五)-替换函数 replace()函数替换内容 用法: replace('需要替换的内容','替换后的内容',替换次数) 备:如果需要替换单引号需要加'\' 例子: str = ...

  8. 2022 最新 Android 基础教程,从开发入门到项目实战【b站动脑学院】学习笔记——第五章:中级控件

    第 5 章 中级控件 本章介绍App开发常见的几类中级控件的用法,主要包括:如何定制几种简单的图形.如何使用几种选择按钮.如何高效地输入文本.如何利用对话框获取交互信息等,然后结合本章所学的知识,演示 ...

  9. Python学习笔记__13.2章 requests

    # 这是学习廖雪峰老师python教程的学习笔记 相比于Python内置的urllib模块,使用requests可以更好地处理URL资源. 1.使用requests 1)通过GET访问一个页面 > ...

最新文章

  1. [转] 先验概率and后验概率
  2. 用铁丝做“电路板”,这波操作你不得不服!
  3. php页面采集正则,PHP simple_html_dom.php+正则 采集文章代码
  4. pycharm远程调试python_使用PyCharm进行Python远程调试
  5. JAVA之NIO按行读写大文件,完美解决中文乱码问题
  6. 算法笔记_面试题_22. 图与搜索(BFS/DFS)相关_模板及示例十几道
  7. v割与邮票孔_pcb板V割和邮票孔的区别
  8. SSH 有关密钥和私钥 的那些事儿
  9. PyTorch实现TPU版本CNN模型
  10. 亲手将TP-LINK路由器改装成交换机使用
  11. C语言异或运算逆运算,异或的逆运算
  12. RWD----响应式网页设计
  13. 【技巧】解决谷歌浏览器自带的谷歌翻译无法自动翻译问题
  14. python公式计算_Python Numpy计算各类距离的方法
  15. 勒让德符号判断二次剩余-C语言
  16. PYQT5|一键自动生成并应用QRC资源文件
  17. linux命令之 whatis
  18. 摄像头视频监控是如何与流媒体服务器云平台连接的?
  19. 绘制地铁线路html,基于HTML5技术绘制上海地铁图
  20. 数据可视化之交通可视化

热门文章

  1. 【春晚鬼畜】赵本山:我就是念诗之王!
  2. 上海世博会展示未来6大生活趋势
  3. SpringMVC框架个人笔记之响应数据、文件上传
  4. 会说话的简历 TalkingCV
  5. linux降低磁盘的读,Linux磁盘I/O优化:vm.dirty_ratio - 米扑博客
  6. SEO竞争对手分析及网站SEO优化方案设计分析
  7. 领先华为鸿蒙,国产手机操作系统上载国产手机
  8. 九连环的递回算法(C战C++)
  9. 软件工程网络15个人阅读作业1(201521123111 陈伟泽)
  10. 服务器与云服务器租用有哪些区别呢?