GithubHelp home page GithubHelp logo

francfer-art / 42fractol Goto Github PK

View Code? Open in Web Editor NEW
0.0 1.0 0.0 193 KB

Fract'ol is a project in Computer Graphics focusing on rendering fractals using the MiniLibX library.

License: MIT License

Makefile 1.94% C 70.61% Objective-C 27.45%

42fractol's Introduction

Fractol Logo

Fractol Score

Table of Contents

Introduction

Fract'ol is a project in Computer Graphics focusing on rendering fractals using the MiniLibX library. This program allows users to explore and visualize the Mandelbrot set and the Julia set, with options to customize the Julia set by passing different parameters.

Features

Renders the Mandelbrot set and the Julia set.
Zoom in and out using the mouse wheel, allowing exploration within the limits of the computer.
Creates different Julia sets by passing parameters through the command line.
Smooth window management, including switching between windows and minimizing.
Provides a clean exit when pressing ESC or clicking on the window's close button.
Utilizes colors to represent the depth of each fractal, with options for psychedelic effects.

Prerequisites

MiniLibX library. You can use either the version available on the school machines or install it using its sources.

Usage

Clone the repository.
Make sure you have Xquartz library installed in your machine.
Compile the program using the provided Makefile.
Run the executable with optional parameters to specify the type of fractal to display and additional rendering options.

Avaliable Parameters

If no parameter is provided or if the parameter is invalid, the program displays a list of available parameters and exits properly. Additional parameters can be used as rendering options.

Usage Example

make
./fractol [fractal_type] [rendering_options]
Replace [fractal_type] with the type of fractal to display (e.g., mandelbrot, julia).
Replace [rendering_options] with any additional rendering options (optional).

Controls 🕹

Use the mouse wheel to zoom in and out.
Press ESC to close the window and quit the program cleanly.
Click on the close button on the window's frame to close the window and quit the program cleanly.
W / ⭡: Up
S / ⭣: Down
A / ⭠: Left
D / ⭢: Right
+ / -: Increase / Decrease Rendering Iterations
E : Enable / Disable Cursor Julia Tracking

Bonus Features

Additional Fractal: You can explore more than just the Mandelbrot and Julia sets with over a hundred different types of fractals available online. In this case i added burning, rose and newton sets! Dynamic Zoom: The zoom follows the actual mouse position, providing a more intuitive exploration experience. View Movement: Navigate through the fractals by pressing the arrow keys to move the view. Color Range Shift: The color range dynamically shifts, enhancing the visual appeal of the fractals.

make bonus
./fractol_bonus [fractal_type]
Replace [fractal_type] with the type of fractal to display (e.g., burning, rose, newton).

Contributing

Contributions are welcome! If you have improvements or additional features to suggest, please open an issue or submit a pull request. Follow the Contribution Guidelines for more details.

License

This project is licensed under the MIT License - see the LICENSE file for details.

42fractol's People

Contributors

francfer-art avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.