ChaosKit is a set of libraries and tools to generate pictures with iterated function systems. In particular, ChaosKit is inspired by Fractal Flames and supports generating a superset of them.
To build ChaosKit, you need the following:
- a C++17 compiler (Clang, GCC, maybe MSVC 2019)
- CMake 3.6 or newer
To build the UI, you need additionally the following:
- Qt 6.1
- protobuf
Once you have the above installed, you can run the following commands to download and build ChaosKit:
git clone https://github.com/ChaosKit/ChaosKit.git
cd ChaosKit
mkdir build
cd build
# Replace Release with Debug for a debug build.
cmake -DCMAKE_BUILD_TYPE=Release ..
make
The project is organized like a monorepo, mostly because it was easier for me to build it like this. There are multiple subfolders that correspond to different libraries:
ast
— internal AST representation of function systems and helpers to define them in C++ codecore
— everything you need to evaluate the AST and gather the outputs in a buffer to eventually turn into a pictureflame
— utilities to build Fractal Flames and translate them into ChaosKit ASTs
io
— defines the input/output format for the ChaosKit UIlibrary
— definitions of various formulas (non-linear transformations) and coloring methods expressed in the ASTstate
— a standalone UI state management library, loosely inspired by Redux, but turned out nothing like it. Supports compile-time validation of has-one and has-many relationships between structures.stdx
— exportsstd::optional
for older Apple Clang compilers.ui
— QML-based GUI to edit and render Fractal Flames
I need to formalize this one day, but this is the intent:
Code under the ui
directory is licensed under the GPLv3.
All other code is licensed under the Apache 2.0 license.