分形树
1. 利用turtle画出分形树
- 问题描述: 利用turtle画出下图所示的分形树
- 要求:
- 树木主干向上生长
- 分形层数为4,二叉树
- 第一层树枝长度为60,逐层减6
- 左右树枝的倾斜角度不限,最终效果和下图所示大致相同即可
import turtle as t
def tree(n,x):
if n <= 0:
return None
else:
t.left(30)
t.forward(x)
tree(n-1,x-6)
t.backward(x)
t.right(60)
t.forward(x)
tree(n-1,x-6)
t.backward(x)
t.left(30)
t.left(90)
tree(4,60)
结果如下图所示:
2. 绘制分形树丛
一、 修改步骤l中生成分形树的方法:
-
分 型层数改为4~6之间的随机数
-
第一层树枝长改为30~60之间的随机数
二、绘制分形树丛
-
在800X600的屏幕中绘制分形树丛
-
树木数量为 50棵
-
每棵分形树的树根位置为屏幕范围内随机坐标点,树枝允许伸出屏幕窗口外;
-
以屏幕中心垂直线为分界,位于屏幕左侧的树木向左倾斜,位于屏幕右侧的树木向右倾斜;绘制过程瞬间完成(即看不到绘画过程)。
import turtle as t
import random
def tree(n,x):
if n <= 0:
return None
else:
t.left(30)
t.forward(x)
tree(n-1,x-6)
t.backward(x)
t.right(10)
t.forward(x)
tree(n-1,x-6)
t.backward(x)
t.right(20)
def tree2(n,x):
if n <= 0:
return None
else:
t.right(30)
t.forward(x)
tree2(n-1,x-6)
t.backward(x)
t.left(10)
t.forward(x)
tree2(n-1,x-6)
t.backward(x)
t.left(20)
screen = t.Screen()
screen.setup(800,600)
screen.tracer(0)
t.left(90)
for i in range(50):
x = random.randint(-300,300)
y = random.randint(-200,200)
n = random.randint(4,6)
x1 = random.randint(30,60)
t.penup()
t.goto(x,y)
t.pendown()
if x>0:
tree2(n,x1)
else:
tree(n,x1)
t.update()
结果如下图所示: