Terminal based fractal explorer, that includes Mandelbrot, Burning Ship, and Julia.
Project description
💠 Terminal based fractal explorer, including Mandelbrot, Burning Ship, and Julia. 💠
Fractalistic
How to install 📥
You can install fractalistic easily with pip:
python3 -m pip install fractalistic
If you want to install the application securely, in an isolated environment, you can use pipx:
pipx install fractalistic
Now start the program with:
fractalistic
[!CAUTION] If the command is not found after installtion, you must add
~/.local/bin
to your path. You can do this by addingexport PATH=$PATH:~/.local/bin
to your.bashrc
or.zshrc
file.
# For bash
echo 'export PATH=$PATH:~/.local/bin' >> ~/.bashrc
# For zsh
echo 'export PATH=$PATH:~/.local/bin' >> ~/.zshrc
Features 🌟
Available fractals:
- Mandelbrot set
- Burning Ship set
- Every Julia sets
- 🖥️ Terminal based
- ✨ Next-gen Terminal UI with texutal
- 🔍 Zoom in/out
- 🚶 Move around
- ⚙️ Change max iterations
- 🎨 Change color palette
- 🔢 Custom decimal precision
- 📸 High definition screenshots
- 📜 Save and load state
- 📊 Show average divergence
- 📌 Click to show coordinates and divergence
- 🏃 Multithreaded rendering
Roadmap
Possible features to add later:
- Splash screen
- New mandelbrot variants
Commands:
- Command to show current pos, zoom, etc
How to migrate your state files to >= 2.0.0
First open your toml state file in a text editor.
You can open the screen position in the app by using the pos
command, and copy/pasting the real and imaginary values.
Then, select the correct fractal, color palette, precision and max_iter values in the app,
and use the save_state
command to save your updated state file.
Development
Please, open an issue if you have any suggestion or if you found a bug. I will try to fix it as soon as possible. If you want to contribute, open an empty pull request and explain what you want to do, wait for me to approve it and then you can start working on it.
Development environment
For this project, I recomment using vscode with Flake8 (linting/type-checking).
You will need to fork this repo and clone it locally.
# Replace SkwalExe with your github username
git clone https://github.com/SkwalExe/fractalistic
cd fractalistic
Then, install the project and the dependencies locally
pip install .
Running the app in textual dev mode
- First, open a textual console in a terminal with this command.
textual console
You will need to have textual-dev
installed. You can install it with pip.
pip install textual-dev
- You can now open a new terminal, and start
fractalistic
in textual dev mode with :
# You must already be cd-ed into the repo directory
TEXTUAL=devtools,debug python3 -m fractalistic
You will be able to see the app logs, and print to the textual console with the textual.log
function.
Creating a pull request
- First, create a new branch with a name that describes your feature/fix.
git checkout -b my-new-feature
You can now start working on your feature/fix.
- Before commiting, you should run the linter and type-checker to make sure your code is clean.
# 'pip install flake8' if you don't have it
flake8 fractalistic
If you get any error, you should fix it before commiting.
- Now, commit your changes and push them to your fork.
git add .
git commit -m "My new feature"
git push origin my-new-feature
- Finally, open a pull request on github from your fork's page. I should receive a notification and I will review your changes.
Screenshots
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for fractalistic-2.2.0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | a547abd0e5e830034be007b3ef8bae9d0fce1981ed20c4b2d67fe6bbdf7dcdf9 |
|
MD5 | eef3c79052b7c721257f4e8b2a075a9c |
|
BLAKE2b-256 | d0a16cacc7249f1be22af094b7a50af9d785f6f3968eb722c9c0e46364d921c3 |