实战项目
-
-
-
- P156--L系统分形树
-
- P157--生成蓝天和白云
-
- P158--动态波动艺术作品
-
- P159--烟花效果模拟
-
- P160--美丽神秘的朱利亚
-
运行系统:macOS Sonoma 14.6.1
Python编译器:PyCharm 2024.1.4 (Community Edition)
Python版本:3.12
往期链接:
1-5 |
6-10 |
11-20 |
21-30 |
31-40 |
41-50 |
51-60:函数 |
61-70:类 |
71-80:编程范式及设计模式 |
81-90:Python编码规范 |
91-100:Python自带常用模块-1 |
101-105:Python自带模块-2 |
106-110:Python自带模块-3 |
111-115:Python常用第三方包-频繁使用 |
116-120:Python常用第三方包-深度学习 |
121-125:Python常用第三方包-爬取数据 |
126-130:Python常用第三方包-为了乐趣 |
131-135:Python常用第三方包-拓展工具1 |
136-140:Python常用第三方包-拓展工具2 |
Python项目实战
P156–L系统分形树
技术栈:随机+规则实现的分形艺术
import turtle
import random
def apply_rules(axiom):
rules = {
'F': 'F[+F]F[-F]F',
'+': '+',
'-': '-',
'[': '[',
']': ']'
}
return ''.join(rules.get(char, char) for char in axiom)
def generate_l_system(axiom, iterations):
current = axiom
for _ in range(iterations):
current = apply_rules(current)
return current
def draw_l_system(t, instructions, angle, length):
stack = []
for command in instructions:
if command == 'F':
t.forward(length)
elif command == '+':
t.right(angle)
elif command == '-':
t.left(angle)
elif command == '[':
stack.append((t.position(), t.heading(), t.pensize()))
t.color(random_color())
t.pensize(t.pensize() + 1)
elif command == ']':
position, heading, pensize = stack.pop()
t.penup()
t.setposition(position)
t.setheading(heading)
t.pensize(pensize)
t.pendown()
def