https://github.com/LegalizeAdulthood/iterated-dynamics
Iterated Dynamics is an open source fractal generator with support for many fractal types.
https://github.com/LegalizeAdulthood/iterated-dynamics
fractal fractal-rendering mandelbrot
Last synced: 7 months ago
JSON representation
Iterated Dynamics is an open source fractal generator with support for many fractal types.
- Host: GitHub
- URL: https://github.com/LegalizeAdulthood/iterated-dynamics
- Owner: LegalizeAdulthood
- License: gpl-3.0
- Created: 2014-11-24T19:34:40.000Z (over 10 years ago)
- Default Branch: master
- Last Pushed: 2024-10-15T16:58:07.000Z (8 months ago)
- Last Synced: 2024-10-16T23:59:13.195Z (8 months ago)
- Topics: fractal, fractal-rendering, mandelbrot
- Language: C++
- Homepage: https://legalizeadulthood.github.io/iterated-dynamics/
- Size: 157 MB
- Stars: 25
- Watchers: 3
- Forks: 9
- Open Issues: 55
-
Metadata Files:
- Readme: ReadMe.md
- License: LICENSE.txt
Awesome Lists containing this project
README
[](https://github.com/LegalizeAdulthood/iterated-dynamics/actions/workflows/cmake.yml)
# Iterated Dynamics
Iterated Dynamics is an open source fractal renderer that can generate
the following fractal types:- Mandelbrot set
- Julia sets
- Inverse Julia sets
- Newton domains of attraction
- Lambda sets
- Mandelbrot version of lambda sets
- Plasma clouds
- Generalized lambda sets
- Halley map
- Phoenix curve
- Barnsley Mandelbrot/Julia sets
- Barnsley IFS
- Sierpinski gasket
- Quartic Mandelbrot/Julia sets
- Pickover Mandelbrot/Julia sets
- Pickover popcorn
- Dynamic system
- Mandelcloud
- Peterson Mandelbrot variations
- Unity
- Kam torus
- Bifurcation
- Lorenz attractors
- Rossler attractors
- Henon attractors
- Pickover attractors
- Gingerbread man
- Martin attractors
- Icon
- Latoocarfian
- Quaternion
- Hyper complex
- Cellular automata
- Ant automaton
- Custom escape-time formula
- Frothy basins
- Julibrot
- Diffusion limited aggregation
- Lyapunov
- Magnetic
- Volterra-Lotka
- Escher-like Julia sets
- L-systemsSee the [on-line help](http://legalizeadulthood.github.io/iterated-dynamics/)
for more of what the software can do.See the [wiki](https://github.com/LegalizeAdulthood/iterated-dynamics/wiki)
for the current release plan.# Building
Iterated Dynamics uses [CMake](http://www.cmake.org) to generate build scripts
and [vcpkg](http://vcpkg.io) to manage third party library dependencies.
You will need a C++ compiler capable of supporting the C++17 standard.Make a directory for the source code and build directories and then clone this
source repository, initialize and update git submodules with the commands:```
mkdir id
cd id
git clone https://github.com:LegalizeAdulthood/iterated-dynamics
cd iterated-dynamics
git submodule init
git submodule update
```CMake presets are provided to simplify building the code. The command
```
cmake --workflow --preset default
```will configure, build and test the code in the directory `id/build-default`,
a sibling directory to the source code in `id/iterated-dynamics`.The build will first compile `hc`, the help compiler. This generates
the run-time help file from the help source files and an include file
used by the iterated dynamics compile.# Contributing
Iterated Dynamics welcomes contributions from everyone! The code has a
long history of contributions from many people over the years. There are
many small ways in which the code can be improved as well as large changes
that are on the [release plan](https://github.com/LegalizeAdulthood/iterated-dynamics/wiki).To get started, fork the repository into your github account. We recommend
using the [github workflow](https://guides.github.com/introduction/flow/index.html)
to make contributions to Iterated Dynamics. We recommend you enable
[GitHub Actions](https://docs.github.com/en/actions) on your repository to get feedback
on your changes as you push to your branch in your repository.Once your change is ready, prepare a pull request and submit it back for
incorporation into the main repository. We couldn't have gotten this far
without contributions from many persons!# Code Structure
Most of the source code is in a library named `libid` in a folder by the same
name. The files are organized in the IDE into various categories:- **3d**
Files containing 3D drawing support. Eventually these should be
subsumed into the driver interface, with this sofwtare implementation
as a fallback if the driver doesn't support 3D rendering.- **engine**
Files containing the implementation of the fractal rendering engines
that are shared between multiple fractal types. Also contains the
big array that defines the available fractal types.- **fractal specific**
Files containing rendering code or user interaction code that is
specific to a particular fractal, such as the Lorenz fractal or
L-system type.- **IO**
Anything related to doing external file I/O: saving and loading GIF
files, dealing with overlay files, saving parameter files, etc.- **math**
Files containing math routines for arbitrary precision arithmetic,
complex arithmetic, etc.- **plumbing**
Miscellaneous routines that don't fit elesewhere like memory and
driver management.- **ui**
Anything to do with displaying menu screens, help screens, intro
screen, etc.Additional files are in the following directories:
- `fractint`
Miscellaneous files in the main fractint source folder. These are not
currently used for any of the compilation of the code and are placed
here just for reference.- `hc`
Help source files with a custom build step on help.src to run the help
compiler on the source to generate new fractint.hlp and helpdefs.h
files.- `unix`
Files needed for the unix platform.- `win32`
Files needed for the Win32 platform.