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

article/2025/8/29 14:26:46

三角形,大家应该再熟悉不过了。

上图是一个由四个小三角形拼成的大三角形,也叫谢尔宾斯基三角形。

谢尔宾斯基三角形还能继续画下去:

2阶(上图是1阶):

3阶:

5阶:

8阶:

 

(小编奉劝一句:不要试图挑战你的电脑)

接下来,就要开始代码讲解了

一,起始代码

p.width(3).speed(10)#1#2

  第1条 前面一半的代码是调整笔的大小,后面一半的代码是调整笔移动的速度,“3”和“10”这两个数值是可以自行调整的

  第2条 空行(目的:为区分两段代码,方便查看)

二,定义函数midpoint

def get_midpoint(a,b): #3ax,ay=a #4bx,by=b #5return (ax+bx)/2,(ay+by)/2 #6

  第3条 定义函数get_midpoint(a,b),第4条至第6条即函数的定义

  第4条 将ax,bx赋值a

  第5条 将bx,by赋值b

  第6条 返回ax+bx的1/2,ay,by的1/2

 三,定义函数draw_triangle

def draw_triangle(a,b,c): #7ax,ay=a #8bx,by=b #9cx,cy=c #10p.penup() #11p.goto(ax,ay) #12p.pendown() #13p.goto(bx,by) #14p.goto(cx,cy) #15p.goto(ax,ay) #16p.penup() #17

  第7条 定义函数draw_triangle(a,b,c),第8条至第17条即函数的定义

  第8条 将ax,ay赋值a

  第9条 将bx,by赋值b

  第10条 将cx,cy赋值c

  第11条 抬笔

  第12条 前进ax,ay

  第13条 落笔

  第14条 前进bx,by

  第15条 前进cx,cy

  第16条 前进ax,ay

  第17条 抬笔

四,定义函数draw_sierpinski(triangle,depth)

def draw_sierpinski(triangle,depth): #18"""   #注释,下面不讲解,自己看:param triangle: 指定三角形三个顶点坐标,示例:((ax,ay),(bx,by),(cx,cy))。:param depth: 指定层数"""   #下面就不是注释了a,b,c=triangle #19draw_triangle(a,b,c) #20if depth==0: #21return #22else: #23d=get_midpoint(a,b) #24e=get_midpoint(b,c) #25f=get_midpoint(c,a) #26draw_sierpinski([a,d,f],depth-1) #27draw_sierpinski([d,b,e],depth-1) #28draw_sierpinski([f,e,c],depth-1) #29

  第18条 定义函数draw_sierpinski(triangle,depth),第19条至第20条即函数的定义

  第19条 将a,b,c,赋值函数draw_triangle

  第20条 运行draw_triangle(a,b,c)

  第21条 如果depth等于0成立,那么执行第22条代码

  第22条 返回,即停止运行函数draw_sierpinski

  第23条 接第21条,如果depth等于0不成立,那么执行第24条至第29条代码

  第24条 将d赋值函数get_midpoint(a,b)

  第25条 将e赋值函数get_midpoint(b,c)

  第26条 将f赋值函数get_midpoint(c,a)

  第27条 运行函数draw_sierpinski([a,d,f],depth-1)

  第28条 运行函数draw_sierpinski([d,b,e],depth-1)

  第29条 运行函数draw_sierpinski([f,e,c],depth-1)

五,执行函数

 #30
triangle=[[-200,-100],[0,200],[200,-100]] #31
draw_sierpinski(triangle,1) #32#33

  第30条 同第2条

  第31条 将triangle赋值[[-200,-100],[0,200],[200,-100]]

  第32条 执行函数draw_sierpinski(triangle,1)

  第33条 同第2条

 六,结束代码

p.hide() #34
p.draw() #35

  第34条 隐藏笔

  第35条 结束

  以上就是小编为大家整理的谢尔宾斯基三角形的绘制教程了,制作不易,发条评论再走吧

Bye~

 


http://chatgpt.dhexx.cn/article/bRes60KF.shtml

相关文章

谢尔宾斯基三角新

谢尔宾斯基三角形(英语:Sierpinski triangle)是一种分形,由波兰数学家谢尔宾斯基在1915年提出。它是自相似集的例子。它的豪斯多夫维 1.取一个实心的三角形。(多数使用等边三角形) 2.沿三边中点的连线&am…

谢尔宾斯基三角形的讲解

谢尔宾斯基三角形是数学家谢尔宾斯基提出的⼀个分形图形,谢尔宾斯基三⻆形和谢尔宾斯基地毯基本类似,不同之处在于谢尔宾斯基三⻆形采⽤的是等边三⻆形进⾏分形构造,⽽谢尔宾斯地毯基采⽤的是正⽅形进⾏分形构造。 下面是我的代码展示&#x

谢尔宾斯基三角用Python做,你知道吗?

大家好,我叫王若冲。因为我妈叫我冲姐,所以你们也可以这么叫我。今天是我的第一篇文章,就给大家讲谢尔宾斯基三角的代码吧。如果你既想要试一试,又懒得自己写代码,那么原代码就在下面。*注意,这次我用的软件…

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

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

谢尔宾斯基三角形

谢尔宾斯基三角形(英语:Sierpinski triangle)是一种分形,由波兰数学家谢尔宾斯基在1915年提出 取一个实心的三角形。(多数使用等边三角形)沿三边中点的连线,将它分成四个小三角形。去掉中间的那…

混沌分形之谢尔宾斯基(Sierpinski)

本文以使用混沌方法生成若干种谢尔宾斯基相关的分形图形。 (1)谢尔宾斯基三角形 给三角形的3个顶点,和一个当前点,然后以以下的方式进行迭代处理: a.随机选择三角形的某一个顶点,计算出它与当前点的中点位置…

关于谢尔宾斯基三角形(Sierpinski triangle)的讲解

谢尔宾斯基三角形(Sierpinski triangle)是一种分形,由波兰数学家谢尔宾斯基在1915年提出。它是自相似集的例子。它的豪斯多夫维是log(3)/log(2) ≈ 1.585。 谢尔宾斯基(Sierpinski)三角形 1.画一个(正&…

谢尔宾斯基三角形——python递归

一、 问题描述 类似于分形树,分形三角形——谢尔宾斯基三角形同样是一种分形,由波兰数学家谢尔宾斯基在1915年提出。它是自相似集的例子。它的豪斯多夫维是log(3)/log(2) ≈ 1.585。对于谢尔宾斯基三角形的构造,可以先作一个正三角形&#x…

Redis的RDB和AOP总结

目录 1.RDB和AOF是什么 2.RBD 2.1 配置参数 2.1.1 配置文件位置 2.1.2 save 2.1.3 stop-writes-on-bgsave-error 2.1.4 rdbcompression 2.1.5 rdbchecksum 2.1.6 dbfilename 2.1.7 dir 2.2 fork 2.3 如何触发RDB快照 2.3.1 配置文件中默认的快照配置 2.3.2 客户端使用命令sav…

redis RDB设计与实现

redis RDB设计与实现 文章目录 redis RDB设计与实现RDB功能RDB文件的创建和保存SAVE 和 BGSAVERDB保存冲突RDB文件的载入自动保存 RDB 文件结构 RDB功能 为了使Redis储存在内存中的数据库状态保存到磁盘里面防止丢失,Redis提供了RDB持久化功能,将Redis内…

比redis-rdb-tools快10倍的rdb分析工具

背景 为了满足快速分析rdb的情况,对rdr进行测试调研。 测试环境 测试机器:本机macbook pro 工具:rdr,redis-rdb-toolsrdb 文件:dump_7709.rdb,Redis实例大小3G,rdb文件大小1G git地址&…

Redis持久化之RDB原理

Redis持久化之RDB 一.RDB文件作用二. 触发条件三、执行流程1、总体流程2、fork实现复制原理 四、RDB文件五、 启动时加载六、 RDB常用配置总结七、优缺点1、优点2、缺点 个人复习笔记一.RDB文件作用 RDB持久化是将当前进程中的数据生成快照保存到硬盘(因此也称作快照持久化)&a…

Redis RDB持久化

文章目录 一、持久化简介二、数据快照RDB1. save指令2. RDB文件相关配置验证save后数据保存在了rdb文件验证重启服务后,程序会从rdb文件中恢复数据到内存 3. bgsave指令4. 配置自动持久化5. RDB三种启动方式对比6. rdb特殊启动形式7. RDB优缺点 一、持久化简介 什么…

Redis 持久化与故障恢复之rdb

一、摘要 老生常谈一下吧,redis持久化分为rdb和aof两种模式,本篇先说一说rdb模式吧,共分为三部分:1:如何触发rdb持久化, 2:rdb持久化源码, 3:rdb文件解析。 ps:本文基于r…

【Redis】Redis持久化之RDB详解(Redis专栏启动)

📫作者简介:小明java问道之路,2022年度博客之星全国TOP3,专注于后端、中间件、计算机底层、架构设计演进与稳定性建设优化。文章内容兼具广度深度、大厂技术方案,对待技术喜欢推理加验证,就职于知名金融公司…

redis持久化之rdb

redis持久化之rdb RDB相关配置rdb快照的触发条件rdb快照过程rdb文件结构rdb和aof文件的加载顺序 Redis的RDB持久化方式是指将某个时刻的内存数据进行快照,生成.rdb文件可以用于恢复快照时刻redis的内存数据。 RDB相关配置 我们可以在redis.conf中进行rdb相关的配置…

redis之AOF和RDB持久化

写在前面 redis数据存储在内存,为了避免服务器重启或者是宕机导致数据全部丢失,提供了数据持久化机制,有AOF(Append Only File)和RDB,接下来我们分别看下。 1:AOF 如下是我本地环境生成aof文件: 1.1&am…

AOFRDB

序言 主要用于查看不同备份模式可以调优的一些方式. RDB: Redis服务器在规定时间内将内存中的数据保存到指定路径的文件中,服务器重启的时候直接将RDB文件读取到内存中AOF:Redis服务器以日志的形式追加所有的REDIS操作,服务器重启的时候读取AOF文件依次执行一遍. 关于RDB最主…

RDB持久化触发机制

RDB持久化 触发机制 手动触发 手动触发分别对应save和bgsave命令: save命令:同步,在主线程中保存快照;阻塞当前Redis服务器,直到RDB过程完成为止,对于内存比较大的实例会造成长时间阻塞,线上…

Redis RDB 和 AOF

导读 RDB 和 AOF 对比: 持久化方式选择 如果对数据安全性要求极高,应该同时使用两种持久化方式。 如果可以承受若干时间内的数据丢失,可以只使用 RDB 持久化。 不建议只使用 AOF 持久化,因为定时生成 RDB 快照(s…