Skip to content
Mandelbrot Set generator written in C++
C++ Makefile
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
src
.gitignore
LICENSE
Makefile
README.md

README.md

Mandelbrot Set Generator

Mandelbrot Set generator written in C++. This program can draw to the command line and bitmap images.

                                                        *
                                                     ******
                                                     ******
                                                      *****
                                                *  ***********  *
                                           ************************ ***
                                           ***************************
                                       *******************************
                                       ********************************   *
                                       **********************************
                       ** ***         ***********************************
                       ***********   ***********************************
                     ************** ************************************
                    ***************************************************
*********************************************************************
                    ***************************************************
                     ************** ************************************
                       ***********   ***********************************
                       ** ***         ***********************************
                                       **********************************
                                       ********************************   *
                                       *******************************
                                           ***************************
                                           ************************ ***
                                                *  ***********  *
                                                      *****
                                                     ******
                                                     ******
                                                        *

Installation

Requires g++ and make.

Run make in the root of the project to compile.

Then run ./build/main to run the program.

Goals

  • To practice C++
  • To practice coding that follows the SOLID principles
  • To create interfaces that are used for swapping, for example, the Mandelbrot Set for a Julia Set. There will also be an interface for drawers. The implementation of Drawer will draw to the console and another that will draw to a bitmap.
  • Draw the Mandelbrot Set as plain text.
  • Draw the Mandelbrot Set as a bitmap.
  • To use C++ templates
  • To use C++ abstract classes

Arguments

--x-coord     <number>  X coordinate at the centre of the screen (default 0)
--y-coord     <number>  Y coordinate at the centre of the screen (default 0)
--width       <number>  Width of the image to draw (default 80)
--height      <number>  Height of the image to draw (default 20)
--ratio       <number>  Ratio of height/width (default 2)
--zoom        <number>  Zoom, width of the screen (default 4)
--iterations  <number>  Iterations (default 100)
--julia-r     <number>  Draw a Julia Set with `+ c` as real <number>
                     (default 0)
--julia-i     <number>  Draw a Julia Set with `+ c` as imaginary <number>
                     (default 0)
--multi-r     <number>  Draw a Multibrot Set with real <number> power
                     (default 2)
--multi-i     <number>  Draw a Multibrot Set with imaginary <number> power
                     (default 0)
--bitmap                Draws to a bitmap (default not set)
--min-colour  <hex>     Minimum colour for the shader (default 000000)
--max-colour  <hex>     Maximum colour for the shader (default FFFFFF)

Examples

Draw a Mandelbrot Set in the command line

Command:

./build/main

Output:

                                    ****        
                                    ****        
                              *  **********     
                              ***************** 
                            ******************* 
                           *********************
                 *******  **********************
                ********* **********************
**********************************************  
                ********* **********************
                 *******  **********************
                           *********************
                            ******************* 
                              ***************** 
                              *  **********     
                                    ****        
                                    ****        

Draw a Julia Set in the command line

Command:

./build/main --julia-r -1

Output:

                                *                               
                               ***                              
                                *                               
                         * *********** *                        
           *             ***************             *          
          ******       *******************       ******         
        ***********  ***********************  ***********       
*****************************************************************
        ***********  ***********************  ***********       
          ******       *******************       ******         
           *             ***************             *          
                         * *********** *                        
                                *                               
                               ***                              
                                *                               

Draw a Multibrot Set in the command line

Command:

./build/main --multi-r 4

Output:

                                   *   
                               *****   
                       **     *******  
                      ***************  
                     **************    
                    *****************  
          *****************************
          *************************** *
    *    ***************************** 
   ***** ****************************  
**********************************     
   ***** ****************************  
    *    ***************************** 
          *************************** *
          *****************************
                    *****************  
                     **************    
                      ***************  
                       **     *******  
                               *****   

Draw to an image

Command:

./build/main --bitmap --ratio 1 --width 1920 --height 1080 --iterations 10 --max-colour 00FF00 > mandelbrot.bmp

License

GNU GENERAL PUBLIC LICENSE Version 3

See LICENSE

Author

Jordan Lord

You can’t perform that action at this time.