分形是一种永无止境的模式。分形是一种无限复杂的模式,在不同的尺度上具有自相似性。它们是通过一遍又一遍地重复简单的过程而创建的。由递归驱动,分形是动态系统的图像-混沌的图像。

在本文中,我们将使用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)

1 个评论

发表回复