用python动态演示照片立方体_3分钟在线演示用 python 生成分形图片

大家好!欢迎来到我们第二期的代码滤镜。不关心实现细节,每天一个炫酷好玩儿的项目演示,激发编程兴趣,扩展技术视野。今天的实验主题是 使用 Python3 生成分形图片。

效果图:

分形树(Fractal tree)

科赫雪花曲线(Koch snowflake)

龙形曲线(Dragon curve)

视频演示:v2-3b6f09508099cdf45f214c20e45b853d_b.jpg使用 Python3 生成分形图片https://www.zhihu.com/video/1009835589050523648

视频内容:

分形理论是在上个世纪70年代末提出的,它通常被定义为“一个粗糙或零碎的几何形状,可以分成数个部分,且每一部分都是整体缩小后的形状”。

分形几何不仅展示了数学之美,也揭示了世界的本质,还改变了人们理解自然奥秘的方式。可以说分形几何是真正描绘大自然的几何学。

它的主要特点在于自相似以及递归,而在程序语言中递归就是自己调用自己。将递归函数放大总能在局部找到自己原本的模样。我们可以尝试写代码的办法来生成分形图片。我们这次就在实验楼环境中使用 Python3.5 亲自实现3个分形图片。

首先在实验环境中更新安装源,同时下载安装 pygame 以及 tk 包。我们在主目录下创建文件夹Fractal,并在其中分别创建 DragonCurve.py、FractalTree.py、KochSnowflake.py 三个文件,我们将分别在其中编写代码。

我们先来尝试画一棵分形树,它的画法逻辑非常简单:第一步画出树干,第二步在树干的上端指定不同的角度调用第一步,然后就是不断重复,直到到达指定深度停止。

编写好代码之后,在命令行执行python3 FractalTree.py,就可以看到一棵分形树的生成啦!是不是很有成就感呢?

那么我们继续尝试画出科赫雪花曲线,科赫曲线是一种像雪花的几何曲线,所以又称为雪花曲线。需要注意的是每一条雪花曲线是由比自身低一级的4条雪花曲线组成的。

编写好代码之后,在命令行执行python3 KochSnowflake.py,就可以看到美丽的雪花曲线的生成过程啦!

最后我们再来尝试生成龙形曲线,这种曲线因为形似龙的蜿蜒盘曲而得名,每条龙形曲线都由下一级的两条龙形曲线组成,且两条下一级龙形曲线各自往相反的方向旋转45度。

编写好代码之后,在命令行执行python3 DragonCurve.py,就可以看到龙形曲线的生成过程啦!

看完刚刚的实现过程,大家是否也想动手写代码挑战一下呢?很简单!在实验楼网站搜索分形即可找到,大家可以在课程详情页中看到具体的代码实现过程。好了,第二期的分形实验演示就到这里,我们下期再见!

完整教程:使用 Python3 生成分形图片

更多IT课程:精选项目课程

手机关注「实验楼」,更多新奇内容等你发现

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
生成分形图案是利用数学公式和计算机程序来实现的,以下是使用Python语言生成分形图案的一些方法: 1. Mandelbrot集合:Mandelbrot集合是一种著名的分形图案,可以通过使用Python中的matplotlib库绘制出来。具体实现方法可以参考以下代码: ```python import numpy as np import matplotlib.pyplot as plt def mandelbrot(Re, Im, max_iter): c = complex(Re, Im) z = 0.0j for i in range(max_iter): z = z*z + c if(z.real*z.real + z.imag*z.imag) >= 4: return i return max_iter def mandelbrot_set(xmin, xmax, ymin, ymax, width, height, max_iter): r1 = np.linspace(xmin, xmax, width) r2 = np.linspace(ymin, ymax, height) return [[mandelbrot(r, i, max_iter) for r in r1] for i in r2] plt.imshow(mandelbrot_set(-2.0, 0.5, -1.25, 1.25, 500, 500, 100), cmap='hot', interpolation='nearest') plt.show() ``` 2. Julia集合:Julia集合是另一种著名的分形图案,也可以使用Python中的matplotlib库绘制出来。具体实现方法可以参考以下代码: ```python import numpy as np import matplotlib.pyplot as plt def julia(Re, Im, max_iter): c = complex(-0.7, 0.27015) z = complex(Re, Im) for i in range(max_iter): z = z*z + c if(z.real*z.real + z.imag*z.imag) >= 4: return i return max_iter def julia_set(xmin, xmax, ymin, ymax, width, height, max_iter): r1 = np.linspace(xmin, xmax, width) r2 = np.linspace(ymin, ymax, height) return [[julia(r, i, max_iter) for r in r1] for i in r2] plt.imshow(julia_set(-1.5, 1.5, -1.5, 1.5, 500, 500, 100), cmap='hot', interpolation='nearest') plt.show() ``` 3. Barnsley fern:Barnsley fern是一种常见的分形植物图案,可以通过使用Python中的turtle库绘制出来。具体实现方法可以参考以下代码: ```python import turtle import random def barnsley_fern(n): x, y = 0, 0 for i in range(n): r = random.random() if r < 0.01: x, y = 0, 0.16*y elif r < 0.86: x, y = 0.85*x + 0.04*y, -0.04*x + 0.85*y + 1.6 elif r < 0.93: x, y = 0.2*x - 0.26*y, 0.23*x + 0.22*y + 1.6 else: x, y = -0.15*x + 0.28*y, 0.26*x + 0.24*y + 0.44 turtle.penup() turtle.goto(85*x, 57*y-275) turtle.pendown() turtle.dot(2, 'green') turtle.speed('fastest') turtle.hideturtle() barnsley_fern(10000) turtle.done() ``` 以上是几种常见的生成分形图案的方法,欢迎尝试!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值