Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Fractal Forge —— L-System & Strange Attractor Explorer

一款交互式分形探索工具,专注于 Lindenmayer-系统 (L-system)奇异吸引子 (Strange Attractor) 的实时生成、可视化和视频导出。无需编程,通过图形界面即可调整参数、观察演化、导出图像和动画,适合教学、科普和快速原型验证。

主界面截图

功能概览

Lindenmayer-系统 (Lindenmayer System)

  • 内置十余种经典分形(科赫曲线、谢尔宾斯基三角、分形树、龙曲线、希尔伯特曲线、植物等)
  • 支持自定义迭代次数、边数(科赫雪花)
  • 实时显示线段数量与生成耗时
  • 导出绘制过程视频:展示分形从初始状态逐步展开的完整动画

奇异吸引子 (Strange Attractor)

  • 预设系统:Lorenz、Rössler、Chua、Chen、Hénon、Duffing
  • 自定义微分方程系统:支持用户以字符串形式输入任意三维 ODE(如 dx/dt = sigma*(y-x)),参数可自由定义
  • 2D/3D 投影切换(XY、XZ、YZ、三维自由视角)
  • 多种渲染风格(按深度着色、彩虹、金秋等)
  • 导出轨迹生长视频:展示吸引子从初始点逐渐演化的完整过程

通用交互

  • 左键框选放大(2D 视图),右键复位
  • 保存当前画面为高清 JPG 图像(自动命名、存放于 outputs/
  • 进度条与状态提示,数值发散时给出友好错误信息

快速开始

环境要求

  • Python 3.8 或更高版本
  • 推荐使用 Anaconda 或虚拟环境

安装依赖

pip install -r requirements.txt

如果希望启用 Numba 加速(显著提升 L-系统性能),请额外安装:

pip install numba

运行程序

python src/gui_app.py

使用指南

L-系统标签页

  1. 从下拉列表选择分形类型。
  2. 调整迭代次数(数值越大图形越精细,但计算量增加)。
  3. 若分形支持参数调整(如科赫雪花),可设置边数 n
  4. 点击 计算生成分形
  5. 可切换渲染方式(深度着色、单色、彩虹等)。
  6. 点击 导出绘制过程 生成 MP4 视频(需安装 imageioffmpeg)。

奇异吸引子标签页

  1. 选择预设吸引子,或选择 自定义混沌系统 手动输入方程。
  2. 调整积分参数:
    • 步长 dt:积分时间步长(越小越精确,但计算量增大)。
    • 总步数:轨迹点数。
    • 初始条件 (x0, y0, z0)
  3. 若为预设系统,可直接调整系统参数(如 Lorenz 的 σ、ρ、β)。
  4. 若为自定义系统,在方程框中输入 dx/dtdy/dtdz/dt 的表达式,并在参数定义框中以分号分隔参数,如:
    sigma=10.0; rho=28.0; beta=2.6667
    
    支持的数学函数:sincosexplogsqrtabsminmax 以及常量 pie
  5. 选择投影方式(XY、XZ、YZ、3D)。
  6. 点击 计算生成分形
  7. 可切换渲染方式。
  8. 点击 导出轨迹变化 生成 MP4 视频。

通用操作

  • 保存图像:点击任一标签页的 保存图像 按钮,图像将自动存入 outputs/ 文件夹,文件名包含分形名和参数信息。
  • 框选放大:在 2D 视图中,按住鼠标左键拖动矩形框选区域,释放后视图自动放大到该区域。
  • 复位:在 2D 视图中,单击鼠标右键恢复全局视图。

文件输出

所有输出文件(图像 .jpg、视频 .mp4)均保存在项目根目录的 outputs/ 文件夹中,文件名自动包含分形名、迭代次数/时间长度和流水号,便于整理。


项目结构

LSystemAttractorLab/
├── src/
│   ├── gui_app.py                # 主界面
│   ├── fractal_engine.py         # 分形引擎抽象基类
│   ├── lsystem_engine.py         # L-系统引擎
│   ├── lsystem_definitions.py    # L-系统预设库
│   ├── lsystem_growth.py         # L-系统生长过程生成器
│   ├── attractor_engine.py       # 奇异吸引子引擎(含自定义系统)
│   ├── attractor_definitions.py  # 预设吸引子库
│   ├── rendering.py              # 颜色映射、归一化工具、共享常量
│   └── video_exporter.py         # 视频导出器(吸引子 & L-系统)
├── outputs/                      # 输出文件夹(自动创建)
├── requirements.txt
├── .gitignore
├── demo.png
└── README.md

依赖库

  • tkinter(Python 内置)
  • matplotlib
  • numpy
  • Pillow
  • imageio + imageio-ffmpeg(视频导出,可选)
  • numba(加速,可选)

注意事项

  • 自定义微分方程中若出现数值溢出或发散,程序会弹出友好错误提示,建议减小步长 dt 或调整参数。
  • 视频导出需要安装 imageioimageio-ffmpeg,并确保系统已安装 ffmpeg 可执行文件。
  • 3D 视图支持鼠标旋转视角(通过 Matplotlib 工具栏)。

许可证

MIT License


致谢

本项目基于 Python 科学计算生态构建,感谢所有开源社区贡献者。

About

An interactive fractal explorer for real-time generation, visualization, and video export of L-systems and strange attractors. No coding required—adjust parameters, observe evolution, and export images/animations via GUI. Ideal for education, science outreach, and rapid prototyping.

Topics

Resources

Stars

2 stars

Watchers

0 watching

Forks

Contributors

Languages