This is a program for simulation of 3D strange attractor models. It includes controls for manipulation of the attractors in 3D space via rotation, zooming, adjustment of camera depth, panning, and various color schemes.
It also includes functionality for saving videos and screenshots.
This program is run from the command line but aside from confirmation at the beginning of the program of user preference on exporting a video file or not, all controls are given to the program via the keyboard when interfacing with the program window.
The attractors currently supported with this software are:
- Lorenz Attractor
- Halvorsen Attractor
- Dadras Attractor
- Langford/Aizawa Attractor
- Three-Scroll Unified System (it's a little buggy though)
- Rabinovich-Fabrikant Attractor
- Rossler Attractor
- Sprott-Linz Attractor
- Sprott B Attractor
- Arneodo Attractor
SDL3 (https://wiki.libsdl.org/SDL3/FrontPage)
CMake (https://cmake.org/)
GNU Scientific Library (https://www.gnu.org/software/gsl/)
FFMPEG (https://ffmpeg.org/)
If you have homebrew, apt, or a similar package manager, these tools can all be installed using those.
This project has only been compiled and tested on Mac, but afaik SDL has pretty decent cross-compilation support. I'd be curious to hear if it works well or at all on other platforms.
Once the dependencies have been installed, navigate to the project directory in your terminal and run the command:
cmake -B build
followed by:
cmake --build build
This should generate an executable ("dynsys") in your build folder. Run the file by double clicking it, or from the command line with
./build/dynsys
If you should decide to record video, the video file will be saved as "anim.mp4" in a folder marked "anims" in the project directory folder.
This program uses keyboard controls to change the attractor being displayed.
- W / S: Change X rotation
- A / D: Change Y rotation
- Z / X: Change Z rotation
- Q / E: Change overall rotation (rotation scale multiplier)
- Up / Down: Change depth of field
- Left / Right: Change image scale
- Space: Stop rotation
- I / K / J / L: Pan image
- O / P: Change color scheme
- < / >: Change current attractor being displayed
- C: Take a screenshot (saves to screenshots folder in project directory)
- The number keys (1-0) can also be used to switch to any of the 10 different attractors more quickly if desired.
Here are some screenshots of various dynamic systems generated using this program utilizing different color schemes.
All code and testing for this project not mentioned as part of the dependencies was written by Tristan Miller.
Please credit me if you refer to it somewhere.