当前位置: 首页 > article >正文

Python精选200Tips:156-160

实战项目

        • 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项目实战

141-145 146-150 151-155
P156–L系统分形树
技术栈:随机+规则实现的分形艺术
import turtle
import random

# L系统规则
def apply_rules(axiom):
    rules = {
   
        'F': 'F[+F]F[-F]F',  # 规则
        '+': '+',             # 旋转
        '-': '-',             # 旋转
        '[': '[',             # 存储状态
        ']': ']'              # 恢复状态
    }
    return ''.join(rules.get(char, char) for char in axiom)

# 生成 L 系统字符串
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 

http://www.kler.cn/a/313863.html

相关文章:

  • 传奇996_21——龙岭事件
  • 深度学习之卷积问题
  • @ComponentScan:Spring Boot中的自动装配大师
  • 【Golang】Channel的ring buffer实现
  • Node.js笔记
  • 学术论文写作丨机器学习与深度学习
  • 力扣刷题--3033. 修改矩阵【简单】
  • 【sgCreateCallAPIFunctionParam】自定义小工具:敏捷开发→调用接口方法参数生成工具
  • 执行 npm报错 Cannot find module ‘../lib/cli.js‘
  • 电脑技巧:Win11家庭版和专业版之间的区别详解
  • KVM环境下制作ubuntu qcow2格式镜像
  • xml中的转义字符
  • 【我的 PWN 学习手札】tcache stash with fastbin double free —— tcache key 绕过
  • 前端web端项目运行的时候没有ip访问地址
  • 【信创】Linux上如何创建和管理自定义的 systemd 服务 _ 统信 _ 麒麟 _ 方德
  • 滑动窗口算法专题(1)
  • pgsql 分组查询方法
  • Python基础知识——字典排序(不断补充)
  • 数据库课程设计mysql
  • python-SZ斐波那契数列/更相减损数
  • 【Python】Anaconda插件:Sublime Text中的Python开发利器
  • 【数据结构初阶】链式二叉树接口实现超详解
  • InnoDB锁机制全解析
  • VScode快速配置c++(菜鸟版)
  • 基于SpringBoot的招生宣传管理系统【附源码】
  • 计算机网络(Hub 集线器、交换机、路由器)