A program that generates stunning fractal visualizations
Fractol is a project associated with the curriculum of École 42, a coding school known for its project-based learning approach. The Fractol project uses the C programming language and the MinilibX graphics library to render various types of fractals including Mandelbrot and Julia. The goal of this project is to teach students about computer graphics, complex number mathematics, optimization techniques, and event-driven programming while creating visually mesmerizing mathematical art.
Project completion status
Completed on: 2024-09-07
110/100
To clone and compile:
git clone https://github.com/Patthh/42_fract-ol.git
cd 42_fract-ol && make
To run the program:
./fractol [fractal_type] [optional_parameters]
For example:
./fractol mandelbrot
./fractol julia 0.285 0.01
- 🎨 Multiple fractal sets (Mandelbrot, Julia)
- 🖱️ Interactive zoom with mouse wheel
- 🌈 Psychedelic color schemes with dynamic shifting
- 🔍 Precise navigation with keyboard arrows
- 🎮 Interactive Julia set parameter modification
- 🧮 Configurable iteration depth for detail control
- ⭐ Bonus part:
- The zoom follows the actual mouse position
- In addition to the zoom: moving the view by pressing the arrows keys.
- Make the color range shift
Warning
High zoom levels and iteration counts may result in decreased performance
Core Components
The Fractol program consists of these main components:
Component | Description |
---|---|
🎯 MinilibX Integration | Window management and pixel drawing |
🧮 Complex Number Math | Calculations for fractal generation algorithms |
🔄 Event Handling | Mouse and keyboard input processing |
🌈 Color Mapping | Converting iteration values to vibrant color schemes |
🖼️ Rendering Engine | Efficient pixel-by-pixel image generation |
📏 Viewport Management | Translation, scaling, and boundaries control |
Note
"To see a World in a Grain of Sand, And a Heaven in a Wild Flower, Hold Infinity in the palm of your hand, And Eternity in an hour" - William Blake
Made with ❤️ and lots of 🧠