<p align="center">
  <img src="https://raw.githubusercontent.com/SkwalExe/fractalistic/main/assets/logo.png">
</p>

<p align="center">
  <img src="https://img.shields.io/github/license/SkwalExe/fractalistic?style=for-the-badge">
  <img src="https://img.shields.io/github/stars/SkwalExe/fractalistic?style=for-the-badge">
  <img src="https://img.shields.io/github/issues/SkwalExe/fractalistic?color=blueviolet&style=for-the-badge">
  <img src="https://img.shields.io/github/forks/SkwalExe/fractalistic?color=teal&style=for-the-badge">
  <img src="https://img.shields.io/github/issues-pr/SkwalExe/fractalistic?color=tomato&style=for-the-badge">

</p>

<p align="center">💠 Terminal based fractal explorer, including Mandelbrot, Burning Ship, and Julia. 💠</p>

# Documentation ✨

[**✨ --> Please head over to our documentation for more information! <-- ✨**](https://fractalistic.skwal.net)

# Fractalistic

<p align="center">
  <img src="https://raw.githubusercontent.com/SkwalExe/fractalistic/main/assets/banner.png">
</p>

# How to install 📥

You can install fractalistic easily with pip:
```bash
pip install fractalistic
```

If you want to install the application in an isolated environment, you can use [pipx](https://pypa.github.io/pipx/):
```bash
pipx install fractalistic
```

Now start the program with:
```bash
fractalistic
```

> [!NOTE]
> If the command is not found after installtion, you must add  `~/.local/bin` to your path. You can do this by adding `export PATH=$PATH:~/.local/bin` to your `.bashrc` or `.zshrc` file and **opening a new shell session**.

```bash
# For bash
echo 'export PATH=$PATH:~/.local/bin' >> ~/.bashrc; bash
# For zsh
echo 'export PATH=$PATH:~/.local/bin' >> ~/.zshrc; zsh
```

# Features 🌟
### **⚡ Multi-threaded**
Fractalistic leverages parallel processing for complex arithmetic operations, enabling smooth navigation and rapid rendering.
### **🔢 High Precision Arithmetics**
Using MPFR and GMPY2, Fractalistic allows you to explore fractals infinitely deep by enabling users to increase the decimal precision for calculations as needed.
### **📸 High Quality Screenshots**
Fractalistic not only allows you to explore fractals at terminal resolution but also lets you generate high-resolution captures of your current view.
### **✨ Next-gen Terminal User Interface**
Fractalistic utilizes modern libraries such as Will McGugan's Textual framework to provide a full-featured navigation experience, all this in your classic terminal. Fractalistic also supports customizable mouse inputs, allowing for seemless navigation.
### **📌 Robust Command System**
Fractalistic offers a robust command system that goes beyond simple fractal navigation. Additional features include capturing high-definition screenshots, adjusting render settings, modifying navigation preferences, changing colors, and much more.
### **⚙️  Modular Rendering Engine**
Fractalistic's underlying rendering engine is highly modular. The integrated command system enables you to inspect and modify technical parameters, allowing you to explore beyond the basic Mandelbrot and Julia sets. The combination of adjustable parameters makes the number of possible fractals effectively infinite.

# Screenshots

![Screenshot 0](https://raw.githubusercontent.com/SkwalExe/fractalistic/main/assets/screenshot0.png)

![Screenshot 1](https://raw.githubusercontent.com/SkwalExe/fractalistic/main/assets/screenshot1.png)

![Screenshot 3](https://raw.githubusercontent.com/SkwalExe/fractalistic/main/assets/screenshot3.png)

![Screenshot 2](https://raw.githubusercontent.com/SkwalExe/fractalistic/main/assets/screenshot2.png)

![Screenshot 4](https://raw.githubusercontent.com/SkwalExe/fractalistic/main/assets/screenshot4.png)

![Screenshot 5](https://raw.githubusercontent.com/SkwalExe/fractalistic/main/assets/screenshot5.png)

![Screenshot 6](https://raw.githubusercontent.com/SkwalExe/fractalistic/main/assets/screenshot6.png)

![Screenshot 7](https://raw.githubusercontent.com/SkwalExe/fractalistic/main/assets/screenshot7.png)

![Screenshot 8](https://raw.githubusercontent.com/SkwalExe/fractalistic/main/assets/screenshot8.png)

![Screenshot 9](https://raw.githubusercontent.com/SkwalExe/fractalistic/main/assets/screenshot9.png)

![Screenshot 10](https://raw.githubusercontent.com/SkwalExe/fractalistic/main/assets/screenshot10.png)

![Screenshot 11](https://raw.githubusercontent.com/SkwalExe/fractalistic/main/assets/screenshot11.png)

![Screenshot 12](https://raw.githubusercontent.com/SkwalExe/fractalistic/main/assets/screenshot12.png)

![Screenshot 13](https://raw.githubusercontent.com/SkwalExe/fractalistic/main/assets/screenshot13.png)
