|
1 | 1 |  |
2 | 2 |
|
3 | 3 | # rust-fractal |
4 | | -A mandelbrot fractal image generator featuring perturbation theory and series approximation. A high precision reference point is iterated at arbitrary precision and the differences from this are calculated in machine precision. This allows for a large speedup in image generation specifically at high zoom levels. This generator features: |
| 4 | +A mandelbrot fractal renderer implementing both perturbation and series approximation. A reference point is iterated at high-precision, arbitrary precision and differences from this are calculated in machine precision. This allows for a large reduction in computation required to render and image, especially at high zoom levels. This generator features: |
5 | 5 |
|
6 | | -- Perturbation based iteration count with glitch detection. |
7 | | -- Glitch fixing through automatic reference movement and recalculation. |
| 6 | +- Perturbation based iteration with glitch detection. |
| 7 | +- Glitch correction through automatic reference movement and recalculation. |
8 | 8 | - Series approximation calculation to skip (and approximate) large amounts of perturbation iterations. |
9 | | -- Multithreading of core perturbation loops through rayon. |
10 | | -- Multiple colouring methods including iteration, histogram and distance. |
11 | | -- Utilises scaling and mantissa-exponent based extended precision to allow for arbitrary zoom, whilst maintaining good performance. Verified to be working at depths exceeding E20000. Theoretically, this is only limited by MPFR's precision. |
| 9 | +- Probe based method to determine series approximation skip. |
| 10 | +- Multithreading of core loops through rayon. |
| 11 | +- Configurable location and rendering options. |
| 12 | +- Multiple save formats including PNG, EXR and KFR. |
| 13 | +- Utilises scaling and mantissa-exponent based extended precision to allow for arbitrary zoom, whilst maintaining good performance. Verified to be working at depths exceeding E50000. Theoretically, this is only limited by MPFR's precision. |
12 | 14 |
|
13 | 15 | ## Usage |
14 | | -You need to be able to compile the 'rug' crate. Look in the documentation for rug for more information on how to do this. Once all required dependencies have been installed, change the settings in the ```main.rs``` file located in ```src/```. Build and run the crate with: |
| 16 | +You need to be able to compile the 'rug' crate which requires a rust GNU toolchain. Look in the documentation for rug for more information on how to do this. Once all required dependencies have been installed, build the crate with: |
15 | 17 |
|
16 | | -```cargo run --release``` |
| 18 | +```cargo build --release``` |
| 19 | + |
| 20 | +The created binary can then be used with some of the config files provided. For help with the options do: |
| 21 | + |
| 22 | +```./target/release/main --help``` |
| 23 | + |
| 24 | +By default, an image of the set is placed in the ```./output``` folder with it's specific details. A typical call with custom settings would look like: |
| 25 | + |
| 26 | +```./target/release/main -o default.toml locations/flake.toml``` |
0 commit comments