Skip to content

Part VI: Interactive Applications

Creative Commons License
This work is licensed under a Creative Commons Attribution 4.0 International License.

This section provides access to interactive tools and demonstrations for exploring fractal mathematics and self-affine patterns. The applications are implemented in two frameworks:

  • React Applications: High-performance web applications with GPU-accelerated visualization
  • Streamlit Applications: Python-based interactive tools for scientific exploration

Available Tools

Fractal Visualizations

Application Framework Description Open
Mandelbrot Explorer React Interactive Mandelbrot set visualization with zoom and parameter controls #/mandelbrot
Julia Set Explorer React Real-time Julia set rendering with adjustable complex parameter #/julia
Brownian Motion React Random walk with a box-counting estimate of its fractal dimension #/brownian
Conway's Game of Life React WebGL cellular automaton with colour schemes and cell-age shading #/conway
Wave Dynamics React Tidal and wave superposition with a noise term #/waves
DLA Simulator React Diffusion Limited Aggregation growth simulation #/dla
Barnsley Fern React IFS-based fern generation #/ferns
Fern Frond 3D React Three-dimensional fern frond #/fern-frond-3d

Tree and Branching Architectures

Application Framework Description Open
Pythagoras Tree React Self-similar tree with adjustable branching angle #/pythagoras
Fractal Trees React Recursive branching with selectable tree styles #/trees
Plant Architecture Lab React Lindenmayer system growth forms from bryophytes to vascular plants #/plant-lab
3D Tree/Root Visualization React Three-dimensional branching network visualization #/tree-roots-3d

3D Simulation & Rendering

Application Framework Description Open
Blender DLA Blender/Python 3D DLA simulation with Geometry Nodes and Cycles rendering run locally

Analysis Tools

Application Framework Description Open
Differential Box-Counting Python Calculate fractal dimensions of grayscale images run locally
Noise Patterns React White, pink and red noise with power spectra and fractal dimension #/noise

Mathematical Visualizations

Application Framework Description Open
Zeta Space Tiling React Bourke random tiling: circles, triangles and squares with areas A0 / i^c, summing to A0 ζ© #/zeta-space-tiling
3D Zeta Visualization React Spheres, cubes and tetrahedra with volumes A0 / i^p packed without overlap in a cubic volume #/zeta-3d-visualization

Python Simulations (Streamlit)

Application Framework Description Open
Bacterial DLA and swarming Streamlit Animated colony growth: Fujikawa–Matsushita DLA and Kawasaki reaction–diffusion models run locally
Physarum and yeast colonies Streamlit Agent-based slime-mould network; D3.js force-directed yeast colony run locally
Tree rings and cambium Streamlit Five linear-core and cambium growth simulators run locally
3D tree growth Streamlit Cone-based growth simulator and tapered-cylinder crown + root models run locally

Quick Start

Running React Applications

The React applications are deployed and accessible online:

Launch Interactive Apps

Or run locally:

cd react
npm ci
npm start

Running Streamlit Applications

cd apps
pip install streamlit numpy scipy matplotlib plotly pillow imageio
streamlit run tree_roots_3d.py

See Streamlit Apps for the full list of apps and the extra packages a few of them need.

Technical Requirements

For React Applications

  • Modern web browser with WebGL support
  • JavaScript enabled
  • Recommended: Chrome, Firefox, or Safari

For Python Applications

  • Python 3.8+
  • NumPy, SciPy, Matplotlib, Plotly
  • Streamlit (for interactive apps)
  • See Installation Guide for full setup

Application Architecture

graph TB
    subgraph React["React Applications"]
        R1[Mandelbrot/Julia] --> WebGL
        R2[DLA/Trees] --> Canvas2D
        R3[Zeta Functions] --> Plotly
    end

    subgraph Python["Python Applications"]
        P1[Streamlit Apps] --> Matplotlib
        P1 --> Plotly
        P2[Jupyter Notebooks] --> NumPy
    end

    subgraph Blender["Blender Applications"]
        B1[DLA Simulation] --> GeometryNodes
        B2[Cycles Rendering] --> GPU2[GPU Rendering]
    end

    WebGL --> GPU[GPU Acceleration]
    Canvas2D --> CPU[CPU Rendering]
    GeometryNodes --> GPU2

Contributing

To add new applications or improve existing ones:

  1. React apps: Add new pages to react/src/pages/
  2. Streamlit apps: Add new .py files to apps/
  3. Follow the existing code patterns for consistency
  4. Include documentation in this section