Giter Site home page Giter Site logo

tomtuamnuq / rusty-chaos-craftor Goto Github PK

View Code? Open in Web Editor NEW
4.0 1.0 1.0 8.67 MB

An interactive exploration tool for dynamics in chaotic systems.

Home Page: https://tomtuamnuq.github.io/rusty-chaos-craftor/

License: MIT License

JavaScript 0.13% HTML 0.89% Rust 98.98%
chaos-theory chaotic-dynamical-systems complex-numbers dual-numbers fractals particles perplex-numbers quaternions simulation

rusty-chaos-craftor's Introduction

RustyChaosCraftor

MIT License Deployment Tests Live App Live App

Overview

RustyChaosCraftor is an interactive exploration tool for visualizing dynamics in chaotic systems. Driven by a fascination with the complex patterns emerging from simple mathematical constructs, this project aims to provide profound insights into chaos theory through highly customizable visualization techniques. Screenshot of the App Configuration Panels with colorful 2D fractal in the background

Core Functionality

  • Multidimensional real-time visualization of chaotic functions, fractals, and particle systems.

Motivation

  • A personal journey into chaos theory and mathematical aesthetics.
  • The desire to learn Rust and explore WebAssembly (WASM).

Goal

  • To facilitate the exploration of chaos theory through detailed visualizations such as bifurcation diagrams and colormaps.
  • To examine the impact of initial conditions and minor parameter variations on chaotic systems.
  • To analyze various types of fractals, attractors, and number systems within chaos theory.

Features

  • Efficient Chaos: 1D, 2D, 3D, and 4D discrete chaotic maps implemented in Rust, generating a diverse array of patterns.

A GIF showing the selection of 2D discrete chaotic maps

  • Dynamic Systems: Live solutions of 2D, 3D, and 4D ordinary differential equations, creating visually stunning attractors.

A GIF showing the motion of a 3D attractor

  • Particle Simulation: An interactive N-Body problem solver in 2D and 3D, exploring attractive and repulsive forces.

A GIF showing the interaction of particles in 3D

Composable Fractal Generation: Support for four number systems (Complex, Dual, Perplex numbers, Quaternions) and combinable algorithms such as Picard-Mann iteration with biomorphic effects.

  • Parameter Exploration: Bifurcation analysis for all features, offering deep dives into system dynamics. An image showing a bifurcation diagram.
  • Initial Condition Analysis: A wide range of initial distributions to study the effects on system behavior.
  • WASM Web Application: Easily accessible web application with the option to compile natively across all platforms.

Installation

This project was tested with stable version ˋrustc 1.76.0ˋ of the Rust toolchain. Install it with rustup install 1.76.0.

Native

For local testing on native platforms, execute cargo run --release. Linux users must install necessary libraries for eframe with:

sudo apt-get install libxcb-render0-dev libxcb-shape0-dev libxcb-xfixes0-dev libxkbcommon-dev libssl-dev

Fedora Rawhide users should run:

dnf install clang clang-devel clang-tools-extra libxkbcommon-devel pkg-config openssl-devel libxcb-devel gtk3-devel atk fontconfig-devel

The app configuration is automatically saved in the user's data directory on shutdown and every 30 seconds during autosave. The exact location of the file depends on the operating system. For example, on Linux, the file is located at ~/.local/share/rustychaoscraftor/app.ron.

Web

For web deployment, compile to WASM using Trunk:

  1. Add the WASM target: rustup target add wasm32-unknown-unknown.
  2. Install Trunk: cargo install --locked trunk.
  3. Serve locally with trunk serve --port=8043, automatically rebuilding on changes.
  4. Access the app at http://127.0.0.1:8043/index.html#dev. The #devdeactivates caching to view a currently developed version.

The app configuration is saved in the browser's local storage every 30 seconds. Clearing website data may resolve serialization issues.

Community and Support

To contribute or seek support, open an issue in this repository. Questions, feedback, and contributions are welcome. For any inquiries, please feel free to open an issue.

Acknowledgments

Special thanks to the following Rust crates that made this project possible:

  • egui: The intuitive frontend framework. Repository
  • egui_plotter: Integration of Plotters 3D chart into the egui main panel. Repository
  • plotters: The powerful backend for 3D plotting capabilities. Repository
  • ode_solvers: For simulating particle systems and chaotic differential equations. Repository

I would like to express my gratitude to the following authors and sources for providing the mathematical foundations of the chaotic discrete maps, systems of ordinary differential equations, and fractal set generators that power this project. Their work has been instrumental in creating this interactive exploration tool for chaos theory. All references can also be found in the Info tooltips of the GUI.

Discrete Maps

  • Paul Bourke for the Reverse Probability, De Jong Ring and Clifford attractors, which are two-dimensional chaotic maps that produce complex and beautiful patterns. Website
  • Shah et al. for a three-dimensional chaotic map that has applications in digital audio security. Publication
  • Huang et al. for a three-dimensional discrete memristive chaotic system that has infinite wide parameter range and coexisting attractors. Publication
  • Hamadneh et al. for a four-dimensional fractional chaotic map with constant and variable order. Publication

Systems of Ordinary Differential Equations

  • Paul Bourke for the Burke-Shaw system, which is a three-dimensional chaotic system with different symmetries and bifurcations. Website
  • Sambas et al. for the description of the Genesio-Tesi system in their work Design, Analysis of the Genesio Tesi Chaotic System and its Electronic Experimental Implemenation Publication
  • Zhang et al. for the analysis of three species Lotka-Volterra food web models with omnivory. Publication
  • Ababneh for a new four-dimensional chaotic attractor, which has a complex structure and a wide range of parameters. Publication
  • Wang, Feng and Chen for a new four-dimensional chaotic system. Publication

Fractal Configurations and Algorithms

  • Paul Bourke for the sinus, sinh, and zubieta Julia set generators, which are complex functions that produce fractal patterns based on the initial conditions. Website
  • Gdawiec, Fariello and Santos for Algorithm 1 in On the quaternion Julia sets via Picard–Mann iteration. Paper
  • Kumari et al. for Algorithm 3 in A novel approach to generate Mandelbrot sets, Julia sets and biomorphs via viscosity approximation method. Paper
  • Bankers et al. for their work Julia and Mandelbrot Sets for Dynamics over the Hyperbolic Numbers, which motivated me to include Perplex numbers in this project. Perplex (also known as hyperbolic) numbers are a variation of complex numbers that encode geometric properties of the Minkowski space. Paper
  • Prajapati et al. for A Brief Study on Julia Sets in the Dynamics of Entire Transcendental Function Using Mann Iterative Scheme, which inspired me to include a fractal generator with an exponential term.

See my crate perplex_num for additional information.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.