MandelbrotZoom is a simple (toy) Julia program that renders and explores the Mandelbrot set, featuring a zoom functionality that allows users to explore different regions of the fractal in detail. This interactive application uses the Makie.jl visualization package.
The interesting source code is here: MandelbrotZoom/src/MandelbrotZoom.jl
- High-Resolution Mandelbrot Rendering: Produces a visually rich Mandelbrot set with adjustable detail and resolution for experimenting with the viewing experience.
- Interactive Zoom Functionality: Uses GLMakie to enable interactive zooming to dive deeper into areas of the Mandelbrot set.
Here's a couple more steps zoomed in:

-
Clone the Repository:
git clone https://github.com/yourusername/MandelbrotZoom.git cd MandelbrotZoom -
Install Dependencies: In Julia, activate the project environment to install required packages:
julia --project=@. -e 'using Pkg; Pkg.instantiate()'
To run MandelbrotZoom, simply use the following command from the repository root:
julia --project=MandelbrotZoom MandelbrotZoom/src/MandelbrotZoom.jlThe application opens a window displaying the Mandelbrot set. You can zoom in on different regions by selecting an area, and the program will render the selected view with high detail.
- Main Module (
MandelbrotZoom.jl): The main script that initializes the application, defines the GUI components, and manages rendering. mandelbrotFunction: Implements the "escape time" algorithm to compute iteration counts for each point in the complex plane.- Zoom Control: The application captures user clicks to define zoom regions and recalculates the view based on the selected area.
- Heatmap Rendering: Uses a high-contrast colormap to render the Mandelbrot set with enhanced visual clarity.
- Customizable Parameters: Play with the code to adjust resolution, aspect ratio, and max iterations for optimal performance and appearance.
- Observable-Based Interactions: Uses
Observablesfrom Makie.jl for responsive, interactive graphics that update in real-time.
Consider these potential improvements for future versions:
- Try Float128 from Quadmath: while it slows rendering, you can enable deeper zooming with Float128 instead of the default Float64.
- Experiment with Rational(BigNum): at some point, Julia's
Rationaldata type overBigNummay be sophisticated enough to enable even further zooming. - Improved Interactivity: Add more control elements, such as sliders for zoom level, color settings, and iteration depth.
- Pan Functionality: Enable panning within the Mandelbrot set for more fluid exploration.
- Animation Support: Implement an animation mode to smoothly zoom into predefined regions of the Mandelbrot set.
- Save Rendered Images: Add a feature to save high-resolution PNG images of the current view for further study or sharing.
This project is released under the CC0 1.0 Universal (Public Domain) License.
