今天我们来画一个谢尔宾斯基三角形。

好我们先看原图:

这是一个等边三角形,把每一条边平均分成两份,再把这三个焦点连起来,形成四个等边三角形,中间的一个不看,紧接着再继续按着刚刚的步骤走,就可以画出来这个谢尔宾斯基三角形了。那么得算出中间点怎么求,所以我们就得写一段这样的代码:

import turtle as p
p.pensize(3)
p.speed(10)
def get_midpoint(a,b):ax,ay=abx,by=breturn(ax+bx)/2,(ay+by)/2

现在我们知道了中点的坐标位置,就可以把他们连在一起形成一个三角形了。

def draw_triangle(a,b,c):ax,ay=abx,by=bcx,cy=cp.penup()p.goto(ax,ay)p.pendown()p.goto(bx,by)p.goto(cx,cy)p.goto(ax,ay)

下面就差我们的主程序了,只要把三个坐标点一定,就可以运行了。

def draw_sierpinski(triangle,depth):""":param trangle:指定三角形三个顶点坐标,示例:((ax,ay),(bx,by),(cx,cy)):param depth:指定层数"""a,b,c=triangledraw_triangle(a,b,c)if depth==0:returnelse:d=get_midpoint(a,b)e=get_midpoint(b,c)f=get_midpoint(c,a)draw_sierpinski([a,d,f],depth-1)draw_sierpinski([d,b,e],depth-1)draw_sierpinski([f,e,c],depth-1)
triangle=[[-200,-100],[0,200],[200,-100]]
draw_sierpinski(triangle,3)
p.done()

好我们整理一下,全部的程序就是这些:

import turtle as p
p.pensize(3)
p.speed(10)
def get_midpoint(a,b):ax,ay=abx,by=breturn(ax+bx)/2,(ay+by)/2
def draw_triangle(a,b,c):ax,ay=abx,by=bcx,cy=cp.penup()p.goto(ax,ay)p.pendown()p.goto(bx,by)p.goto(cx,cy)p.goto(ax,ay)
def draw_sierpinski(triangle,depth):""":param trangle:指定三角形三个顶点坐标,示例:((ax,ay),(bx,by),(cx,cy)):param depth:指定层数"""a,b,c=triangledraw_triangle(a,b,c)if depth==0:returnelse:d=get_midpoint(a,b)e=get_midpoint(b,c)f=get_midpoint(c,a)draw_sierpinski([a,d,f],depth-1)draw_sierpinski([d,b,e],depth-1)draw_sierpinski([f,e,c],depth-1)
triangle=[[-200,-100],[0,200],[200,-100]]
draw_sierpinski(triangle,3)
p.done()

用PYTHON画谢尔宾斯基三角形(代码可复制)相关推荐

  1. Python实验舱谢尔宾斯基三角形绘制教程

    三角形,大家应该再熟悉不过了. 上图是一个由四个小三角形拼成的大三角形,也叫谢尔宾斯基三角形. 谢尔宾斯基三角形还能继续画下去: 2阶(上图是1阶): 3阶: 5阶: 8阶: (小编奉劝一句:不要试图 ...

  2. java中画三角形的方法_java画谢尔宾斯基三角形

    欢迎进入Java社区论坛,与200万技术人员互动交流 >>进入 //6.定义重绘方法,拖动窗口,改变窗口大小后,绘制的图片仍然留在窗体上 public void paint(Graphic ...

  3. turtle库使用教程 及 绘制 浪漫樱花 五角星 彩虹玫瑰 谢尔宾斯基三角形 实例

    目录 一.turtle简介 二.绘图坐标体系 三.笔画控制函数 四.形状绘制函数 五.颜色填充 六.浪漫樱花代码实例 七.五角星代码实例 八.彩虹玫瑰代码实例 九.谢尔宾斯基三角形代码实例 一.tur ...

  4. Python数据结构15:turtle模块制图,画直线,正方形,星星,递归可视化:分形树,谢尔宾斯基三角形

    1. Python中的turtle模块制图 前面已经讲了递归的原理,这里用递归作图来直观的理解递归. 首先了解以下Python中用于作图的内置海龟作图系统turtle module. Python内置 ...

  5. python螺旋圆的绘制_python 使用turtule绘制递归图形(螺旋、二叉树、谢尔宾斯基三角形)...

    插图工具使用Python内置的turtle模块,为什么叫这个turtle乌龟这个名字呢,可以这样理解,创建一个乌龟,乌龟能前进.后退.左转.右转,乌龟的尾巴朝下,它移动时就会画一条线.并且为了增加乌龟 ...

  6. 学习Python中turtle模块的基本用法(4:绘制科赫曲线和谢尔宾斯基三角形)

      科赫曲线和谢尔宾斯基三角形是常见的分形图形(详细介绍见参考文献1),本文使用turtle库绘制这两类图形. 科赫曲线   科赫曲线的详细介绍见参考文献2,其中的绘图思路是"画正三角形,并 ...

  7. 按钮动作监听器和鼠标监听器的同时实现,在画图板上画出三角形,射线,曲笔,谢尔宾斯基三角形,谢尔宾斯基地毯Random类的实现,数组的实现,Thread.sleep的实现

    按钮动作监听器和鼠标监听器的实现 实例化 实现 监听器的类 DrawListener dl = new DrawListener();// 在界面上添加鼠标监听器对象(鼠标监听器的对象可以是界面和按钮 ...

  8. Python实验舱谢尔宾斯基地毯绘制教程

    谢尔宾斯基地毯,和谢尔宾斯基三角形相似,下图就是谢尔宾斯基地毯 一,起始代码 p.width(3) p.speed(10) import turtle n=int(input()) base=int( ...

  9. 数据结构与算法(Python版)二十二:递归可视化(谢尔宾斯基三角形)

    谢尔宾斯基Sierpinski三角形 分形构造, 平面称谢尔宾斯基三角形, 立体称谢尔宾斯基金字塔 谢尔宾斯基三角形:作图思路 根据自相似特性, 谢尔宾斯基三角形是由3个尺寸减半的谢尔宾斯基三角形按照 ...

  10. 混沌与分形(一):谢尔宾斯基三角形与门格海绵

    研究混沌运动,少不了对分形理论的探讨.分形:通常被定义为"一个粗糙或零碎的几何形状,可以分成数个部分,且每一部分都(至少近似地)是整体缩小后的形状",即具有自相似的性质. 本篇将从 ...

最新文章

  1. 标准功能模块组件 -- 内部联络单组件,内部邮件组件,提高多人异地协同办公效率...
  2. 硬核教程:五步掌握用VSCode进行高效Python开发
  3. 【分治】P1228 地毯填补问题(多联骨牌覆盖棋盘问题)(递归,分治)难度⭐⭐⭐
  4. python面向对象之方法
  5. Java开发程序员最值得学习的10大技术
  6. 区块链开发公司 注重用户的价值才是企业归宿
  7. 桩位编号插件xzbh_饶平专业泵站基坑拉森钢板桩施工规范
  8. Android反编译(逆向)教程
  9. 5.13 综合案例2.0-火焰检测系统(2.2版本接口有更新)
  10. 管家婆软件二次开发(在管家婆财贸双全中实现建行支付)
  11. 哈尔滨工业大学邮件系统客户端设置
  12. kubernetes 的 滚动升级和回滚(rollout)
  13. Matlab对图像进行裁剪。seam carving
  14. 浙大计算机专业是不是图灵班,浙大图灵班录取条件
  15. OA的部门管理和员工管理模块的实现总结
  16. 什么是TXT记录?如何设置、检测TXT记录
  17. 【C语言学习04】跳出嵌套循环
  18. 7-1 古埃及探秘-金字塔 (10分)
  19. openssl: error while loading shared libraries: libcrypto.so.3: cannot open shared object file: No su
  20. ios公司开发者账号申请

热门文章

  1. Unity 设置固定移动路线
  2. 移动热修复Sophix之初体验
  3. libtorrent源码分析(四)LSD实现
  4. linux拷贝文件夹下所有文件
  5. linux加载scsi硬盘驱动程序使用,linux scsi硬盘的安装
  6. vue:antV G2在vue中的使用(阿里图表,类似echarts)
  7. 50个C/C++面试题
  8. 【转】框架(蔡学镛)
  9. 《shard 入门精要》冯乐乐
  10. windows下使用XShell上传文件至服务器