https://github.com/maxencebonamy/fractal-explorer
This software is a mathematical simulation that represents a fractal. A fractal is a mathematical object with a similar structure at all scales. This software lets you visualize two very specific fractals and move inside to observe them.
https://github.com/maxencebonamy/fractal-explorer
burning-ship cpp fractal mandelbrot mathematics sfml simulation xmake
Last synced: 8 months ago
JSON representation
This software is a mathematical simulation that represents a fractal. A fractal is a mathematical object with a similar structure at all scales. This software lets you visualize two very specific fractals and move inside to observe them.
- Host: GitHub
- URL: https://github.com/maxencebonamy/fractal-explorer
- Owner: maxencebonamy
- License: mit
- Created: 2022-07-22T07:42:39.000Z (almost 4 years ago)
- Default Branch: main
- Last Pushed: 2023-10-08T08:38:15.000Z (over 2 years ago)
- Last Synced: 2025-08-26T01:37:20.962Z (10 months ago)
- Topics: burning-ship, cpp, fractal, mandelbrot, mathematics, sfml, simulation, xmake
- Language: C++
- Homepage:
- Size: 9.1 MB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
https://github.com/maxencebonamy/Fractal-Explorer/assets/66129931/240efd8b-7220-4e44-9d6f-b02e0c0b533f
This software is a mathematical simulation that represents a fractal.
A fractal is a mathematical object with a similar structure at all scales.
In particular, you can zoom in to infinity and see the same patterns.
This software lets you visualize two very specific fractals and move inside to observe them.
### Mandelbrot:
The Mandelbrot Set is a fractal defined as the set of points $c$ of the complex plane for which the sequence of complex numbers, defined by recurrence by $z_0=0$ and $z_{n+1}=z_n^2+c$, is bounded.

### Burning Ship:
The Burning Ship Fractal is generated in the complex plane by the iterated function, defined by $z_0=0$ and $z_{n+1}=(|\text{Re}(z_n)|+i|\text{Im}(z_n)|)^2+c$. The fractal is defined by the set of points that do not diverge to infinity. Very similar to the Mandelbrot set, it differs in that we consider the absolute value of the real and imaginary components of $z_n$, before squaring.

### Launch the software:
1. Click on the Releases button on the right and select the **latest version**.
2. Download the **.zip** archive and extract the files.
3. Open a terminal from the folder **Fractal-Explorer** and run one of the folowwing commands:
```
./Fractal-Explorer.exe --fractal mandelbrot
```
```
./Fractal-Explorer.exe --fractal burning-ship
```
### Compile:
> [!NOTE]
> *Prerequisites:*
> - [x] *Git must be installed on your computer. If not, click here.*
> - [x] *Xmake must be installed on your computer, if not, click here.*
1. **Clone** the repository on your computer. To do this, open a terminal in the folder of your choice and run the following command:
```
git clone https://github.com/maxencebonamy/Fractal-Explorer
```
2. **Navigate** inside the folder you've just cloned with the following command:
```
cd Fractal-Explorer
```
3. **Compile** the project with the following command:
```
xmake
```
4. **Run** the executable with one of these commands:
```
xmake run main --fractal mandelbrot
```
```
xmake run main --fractal burning-ship
```
### Actions you can perform in the software:
- Zoom in by scrolling mouse wheel upwards.
- Zoom out by scrolling mouse wheel downwards.
- Exit the software by pressing the ESC key.
### Parameters that can be passed on the command line:
- **--fractal** or **-f**: specify fractal name ("mandelbrot" or "burning-ship")
- **--fullscreen**: launch software in full screen mode
- **--cel-size** or **-c**: specify cell size in pixels (default 1). This is used to reduce image quality and therefore loading time between images.
**Example:** the following command will launch the software in full screen mode, and display the "Mandelbrot" fractal with a resolution of 5 pixels per cell.
```
Fractal-Explorer.exe -f mandelbrot -c 5 --fullscreen
```
