Skip to content

jo56/complex-systems-visualizer

Repository files navigation

Complex Systems Visualizer

A comprehensive Rust application for exploring complex systems, fractals, cellular automata, particle simulations, and emergent behavior through interactive visualizations. Built with egui for the GUI.

Rust License

Preview

Complex Systems Visualizer at Burning Ship landmark

Burning Ship fractal at an interesting landmark

Features

39 Unique Simulations across 2D and 3D categories:

2D Simulations (22 total)

  • Fractals (3): Mandelbrot Set, Julia Set, Burning Ship
  • Cellular Automata (4): Game of Life, Elementary CA, Langton's Ant, Cyclic CA
  • Growth & Self-Organization (2): DLA (Diffusion-Limited Aggregation), Sandpile
  • Physical Simulations (4): Double Pendulum, Reaction-Diffusion, Lissajous Curves, Wave Interference
  • Generative Art (6): Koch Snowflake, Phyllotaxis, Perlin Flow, Boids, De Jong Attractor, Clifford Attractor
  • Complex Emergent (2): Slime Mold, Falling Sand

3D Simulations (17 total)

  • Visual Animations (3): DNA Helix, Torus Knot, Galaxy Spiral
  • Particle Systems (5): 3D Particle Attractor, 3D Boids, N-Body Gravity, Fluid SPH, Magnetic Field
  • Chaotic Attractors (7): Lorenz, Rössler, Aizawa, Halvorsen, Dadras, Thomas, Chen
  • Advanced Effects (3): Vortex Turbulence, Lightning Bolt, 3D Fractal Tree

Key Features

  • Interactive Controls: Real-time parameter adjustments with immediate visual feedback
  • Mousewheel Zoom: Smooth zooming for fractal exploration (Mandelbrot, Julia, Burning Ship)
  • Drag-to-Pan: Navigate fractal landscapes by dragging
  • 26 Color Schemes: Beautiful palettes for fractals and visualizations
  • Preset Configurations: Quick access to interesting views and parameters
  • High Performance: Parallel computation using Rayon for fast rendering
  • Professional UI: Organized collapsible sections with emoji icons

Architecture

The project uses a Cargo workspace structure for modularity:

mandlebrot-visualizer/
├── sim-core/          # Core simulation library
│   ├── src/
│   │   ├── lib.rs              # Simulation traits + color system
│   │   ├── mandelbrot.rs       # Mandelbrot fractal
│   │   ├── julia.rs            # Julia set
│   │   ├── burning_ship.rs     # Burning Ship fractal
│   │   ├── game_of_life.rs     # Conway's Game of Life
│   │   ├── cellular_automaton.rs # Elementary cellular automaton
│   │   ├── langtons_ant.rs     # Langton's Ant
│   │   ├── cyclic_ca.rs        # Cyclic cellular automaton
│   │   ├── dla.rs              # Diffusion-limited aggregation
│   │   ├── sandpile.rs         # Abelian sandpile
│   │   ├── double_pendulum.rs  # Chaotic pendulum
│   │   ├── reaction_diffusion.rs # Gray-Scott model
│   │   ├── lissajous.rs        # Lissajous curves
│   │   ├── wave_interference.rs # Wave interference patterns
│   │   ├── slime_mold.rs       # Physarum simulation
│   │   ├── falling_sand.rs     # Falling sand simulation
│   │   ├── generative/         # Generative art patterns
│   │   │   ├── mod.rs
│   │   │   ├── koch_snowflake.rs
│   │   │   ├── phyllotaxis.rs
│   │   │   ├── perlin_flow.rs
│   │   │   ├── boids.rs
│   │   │   └── strange_attractors.rs
│   │   ├── lorenz.rs           # Lorenz attractor
│   │   ├── rossler.rs          # Rössler attractor
│   │   ├── aizawa.rs           # Aizawa attractor
│   │   ├── halvorsen.rs        # Halvorsen attractor
│   │   ├── dadras.rs           # Dadras attractor
│   │   ├── thomas.rs           # Thomas attractor
│   │   ├── chen.rs             # Chen attractor
│   │   ├── dna_helix.rs        # DNA double helix
│   │   ├── torus_knot.rs       # Torus knot
│   │   ├── galaxy_spiral.rs    # Spiral galaxy
│   │   ├── particle_attractor_3d.rs # 3D particle system
│   │   ├── boids_3d.rs         # 3D flocking
│   │   ├── nbody_gravity.rs    # N-body gravitational simulation
│   │   ├── fluid_sph.rs        # SPH fluid dynamics
│   │   ├── magnetic_field.rs   # Magnetic field visualization
│   │   ├── vortex_turbulence.rs # Turbulent vortex flow
│   │   ├── lightning_bolt.rs   # Lightning generation
│   │   └── fractal_tree_3d.rs  # 3D fractal tree
│   └── Cargo.toml
│
├── sim-app/           # GUI application
│   ├── src/
│   │   ├── main.rs             # Application entry point
│   │   ├── viewer_2d.rs        # 2D visualization renderer
│   │   └── viewer_3d.rs        # 3D visualization renderer
│   └── Cargo.toml
│
└── Cargo.toml         # Workspace configuration

Getting Started

Prerequisites

  • Rust (1.70 or later)
  • Cargo (comes with Rust)

Building & Running

# Clone the repository
git clone <repository-url>
cd mandlebrot-visualizer

# Run the application (recommended for best performance)
cargo run --release

# Or for development (faster compilation, slower runtime)
cargo run

Usage

Basic Controls

  1. Select View Mode: Choose between 2D and 3D simulations
  2. Choose Simulation: Use the dropdown menu to select which simulation to run
  3. Adjust Parameters: Use sliders and controls in the side panel
  4. Explore Presets: Click preset buttons for interesting configurations

Fractal Controls

  • Mousewheel: Zoom in/out on fractals (Mandelbrot, Julia, Burning Ship)
  • Drag: Pan around the fractal when zoomed in
  • Zoom Slider: Fine control over zoom level (0.1x to 10,000x)
  • Color Schemes: Choose from 26 beautiful color palettes

3D Controls

  • Rotation Sliders: Change viewing angle (X and Y rotation)
  • Zoom Slider: Adjust 3D perspective (0.5x to 5x)
  • Mousewheel: Quick zoom adjustment when hovering over 3D view
  • Auto-Rotate: Enable automatic rotation for continuous viewing

Technology Stack

  • Rust - Systems programming language
  • egui - Immediate mode GUI library
  • eframe - Application framework
  • rayon - Data parallelism for performance
  • num-complex - Complex number arithmetic
  • noise - Perlin noise generation

Documentation

Highlights

Advanced Fractal Features

  • 26 color schemes with smooth coloring
  • Zoom up to 10,000x for deep exploration
  • Generalized Mandelbrot/Julia sets (powers 2-8)
  • Color cycling animations
  • Preset locations for quick navigation

Cellular Automata

  • Game of Life with 6 rule variations
  • 7 classic patterns (Glider Gun, Pulsar, etc.)
  • Cell age visualization
  • Real-time rule switching

Physical Simulations

  • Reaction-Diffusion (Gray-Scott model)
  • N-Body gravity with orbital mechanics
  • SPH fluid dynamics
  • Magnetic field particle interactions

Generative Art

  • Boids flocking (2D and 3D)
  • Perlin noise flow fields
  • Strange attractors (De Jong, Clifford)
  • Phyllotaxis patterns
  • Koch snowflake fractals

License

This project is licensed under the MIT License.

Acknowledgments

  • Built with the excellent Rust ecosystem
  • Thanks to the egui community for the amazing GUI framework

About

Analyze complex system phenomena in a fullstack rust application

Topics

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages