分形是一种永无止境的模式。分形是一种无限复杂的模式,在不同的尺度上具有自相似性。它们是通过一遍又一遍地重复简单的过程而创建的。由递归驱动,分形是动态系统的图像-混沌的图像。
在本文中,我们将使用Python中的递归技术绘制一个彩色的Y形分形树。
示例:
需要的模块:
turtle:turtle 库使用户能够使用命令绘制图片或形状,提供了一个虚拟画布。turtle 自带于 Python 标准库。它需要一个支持 Tk 的 Python 版本,因为它使用 tkinter 进行图形绘制。
使用的函数:
fd(x):将光标向前移动 x 个像素。
rt(x),lt(x):将光标的面向方向向右和向左旋转 x 度。
colormode():将颜色模式更改为 RGB。
pencolor(r,g,b):设置乌龟画笔的颜色。
speed():设置乌龟的速度。
方法:
我们从绘制单个 “Y” 形状作为基础(第一层)树开始。然后,“Y”的两个分支都作为其他两个“Y”的基础(第二层)。
这个过程递归地重复进行,随着级别的增加,Y 的大小逐渐减小。
树的着色按级别进行:从最暗的基础级别到最亮的顶部级别。
在下面的实现中,我们将绘制大小为 80、级别为 7 的树。
from turtle import *
import turtle
t = turtle.Turtle()
speed('fastest')
# turning the turtle to face upwards
rt(-90)
# the acute angle between
# the base and branch of the Y
angle = 30
# function to plot a Y
def y(sz, level):
if level > 0:
colormode(255)
# splitting the rgb range for green
# into equal intervals for each level
# setting the colour according
# to the current level
pencolor(0, 255//level, 0)
# drawing the base
fd(sz)
rt(angle)
# recursive call for
# the right subtree
y(0.8 * sz, level-1)
pencolor(0, 255//level, 0)
lt( 2 * angle )
# recursive call for
# the left subtree
y(0.8 * sz, level-1)
pencolor(0, 255//level, 0)
rt(angle)
fd(-sz)
# tree of size 80 and level 7
y(80, 7)
turtle.done()