猫史档案馆


【Python作品分享】FlowSnake分形【作品秀】

用户:Planet_CubePlanet_Cube查看:0 回复:0 评论:0 创建时间:2022-04-29T22:55:47


【作品展示】

center_image

 

【作品介绍】

分形,具有以非整数维形式充填空间的形态特征。通常被定义为具有自相似的性质的图形。值得一提的是,FlowSnake分形的名称是SnowFlake的两个首字母互换位置得到的。

由于官方提供了一个SnowFlake分形的递归绘制方式,所以此分形的代码也就以它为框架,但不同之处在于,此分形使用了2个基本函数,即A和B,这也使编写程序变得更加困难。

下面是思路:

首先是大框架A函数;

A函数在下一阶转换为A+B++B-A--AA-B+;

B函数在下一阶转换为-A+BB++B+A--A-B;

其中,+是左转60度,-是右转60度。

 

【作品源代码】

import turtle
t = turtle.Pen()

def A(size, n):
    if (n == 0):
        t.forward(size)
    else:
        A(size / 3, n - 1)
        t.left(60)
        B(size/3, n-1)
        t.left(120)
        B(size/3, n-1)
        t.right(60)
        A(size / 3, n - 1)
        t.right(120)
        A(size / 3, n - 1)
        A(size / 3, n - 1)
        t.right(60)
        B(size/3, n-1)
        t.left(60)

def B(size, n):
    if (n == 0):
        t.forward(size)
    else:
        t.right(60)
        A(size / 3, n - 1)
        t.left(60)
        B(size / 3, n - 1)
        B(size / 3, n - 1)
        t.left(120)
        B(size / 3, n - 1)
        t.left(60)
        A(size / 3, n - 1)
        t.right(120)
        A(size / 3, n - 1)
        t.right(60)
        B(size / 3, n - 1)

def drawFlowSnakeFractal(x, y, wide, level, size):
    t.speed(0)
    t.penup()
    t.goto(x, y)
    t.pendown()
    t.pensize(wide)
    t.right((15 * level))
    A(size, level)
    turtle.done()

drawFlowSnakeFractal(-150, -100, 2, 3, 400)

 

【提示】

部分含有Python第三方库相关内容的作品,在海龟编辑器网页端无法运行哦!如遇到这种情况,可以打开下面的链接,下载海龟编辑器客户端:

https://python.codemao.cn


回复

上一页1 页 / 共 0下一页