add basic README

This commit is contained in:
Bruno BELANYI 2020-12-14 18:27:50 +01:00
parent 4c1e939d6d
commit 73045155a1

58
README.md Normal file
View file

@ -0,0 +1,58 @@
# Buddhabrot
This is a very simple binary to create images of the [Mandelbrot
set](https://en.wikipedia.org/wiki/Mandelbrot_set) and [Buddhabrot
set](https://en.wikipedia.org/wiki/Buddhabrot). The final goal is to use the
[Metropolis-Hastings sampling
algorithm](https://en.wikipedia.org/wiki/Metropolis%E2%80%93Hastings_algorithm)
and [Simulated Annealing](https://en.wikipedia.org/wiki/Simulated_annealing).
## Building the project
You need [Meson](https://mesonbuild.com/) to build the project, and I recommend
using [Ninja](https://ninja-build.org/) as a build system. Issue the following
commands:
```sh
42sh$ meson build
42sh$ ninja -C build
```
This compiles the `buddhabrot` binary at the root of the `build` directory.
## Using the binary
By default, the binary writes the output image to its standard output, in the
[PPM file format](http://netpbm.sourceforge.net/doc/ppm.html).
You can choose which visualisation you want by using the `-r` options with
either `buddhabrot` or `mandelbrot`. Use `-m` to choose the maximum number of
iterated samples.
You can specify the height and width of the image by using `-h` and `-w`.
Sample usage:
```sh
42sh$ ./buddhabrot -r buddhabrot -o out.ppm -m 1000 -h 1080 -w 1920
```
## Creating images
The binary outputs a grayscale image of the buddhabrot for the given sampling
rate.
The project's logo has been created by outputting three different buddhabrot
sets for `100`, `1000`, and `10000` samples. Once done, use the following
command to create the image (using
[ImageMagick](https://imagemagick.org/index.php)).
```sh
42sh$ convert \
10000.ppm -channel R \
1000.ppm -channel G \
100.ppm -channel B \
-combine -channel RGB \
-alpha off -colorspace sRGB \
out.png
```