crispyoctofractals

Library for generating and zooming in to customized fractals.

This is a very very VERY early state. It can be run to generate a 800 x 600 screen that shows a mandelbrot set. Wait for the screen to render each time before pressing the next keyboard key. Here are the controls:

If you press several keys at the same time, it will freeze running each key pressed in order. If you take away the focus from the screen by alt-tabbing or clicking out of the window, it will stop processing the events until focus is returned to the screen (I think, I finished this build this morning).

So if it freezes, press ctrl-c to force the window to close.

Here are the upcoming updates:

Okay, but what is all this?

Fractals are a fancy pop thing for generating pictures using a complex function. Each pixel in the screen is a coordinate, the algorithm iterates incrementing a value until it reaches a certain valid condition (or hit the max number of iterations).

The white part of the fractal are the regions where the max number of iterations has been reached. The dar regions are the regions where the lowest number of iterations were required. Every color in between is just to look pretty.

Nice fractals can be really fun to zoom into, but they also demand a lot of processing power to generate. So multi-threading is the only option. I'm using my library kiksyncservice for using 32 threads at the same time.

It's a great option for practicing low-level, high performance, programming. I studied a lot for this, but this is just scratching the surface of the iceberg. Still a long way ahead.

How to install and use it:

Install rust: It's pretty fast, usually a few command lines. https://www.rust-lang.org/tools/install

cd into an empty folder to copy this project.

Copy this project with:

git clone https://github.com/On0n0k1/crispy_octo_fractals.git

Compile the project with:

cargo build

This takes a while to download and install all dependencies. There will be a lot of "dead code" warnings as well.

Run the project with:

cargo run

Optional: Run it faster

Previous method works, but it's in debug mode. It will be faster this way:

cargo build --release

This will compile everything into a single executable. It will be in folder "./target/release/"

cd ./target/release/

./crispy-octo-fractals

This runs in my linux computer. Not sure how it will look in a windows computer. But it will be in the same folder.

Edit: The release, optimized version still fails at saving the image. Please save the image (by pressing Enter) in debug mode only.