Mandlebrot Set in C/C++ Using Graphics - GeeksforGeeks

27 Dec, 2019
A Fractal is a never-ending pattern. Fractals are infinitely complex patterns that are self-similar across different scales. They are created by repeating a simple process over and over in an ongoing feedback loop. Mathematically fractals can be explained as follows.
The location of a point on a screen is fed into an equation as its initial solution and the equation is iterated a large number of times.
If that equation tends to zero (i.e. the value at the end of the iterations is smaller than the initial value), the point is coloured black.
If the equation tends to infinity (i.e. the final value is larger than the initial value) then depending on the rate of increase (i.e. the rate at which the value tends to infinity), the pixel is painted with an appropriate colour.Defining MandlebrotThe Mandelbrot set is the set of complex numbers c for which the function  does not diverge when iterated from z=0, i.e., for which the sequence , etc., remains bounded in absolute value. In simple words, Mandelbrot set is a particular set of complex numbers which has a highly convoluted fractal boundary when plotted.Implementation#include <complex.h>#include <tgmath.h>#include <winbgim.h>  // Defining the size of the screen.#define Y 1080#define X 1920  // Recursive function to provide the iterative every 100th// f^n (0) for every pixel on the screen.int Mandle(double _Complex c,           double _Complex t = 0,           int counter = 0){      // To eliminate out of bound values.    if (cabs(t) > 4) {        putpixel(creal(c) * Y / 2 + X / 2,                 cimag(c) * Y / 2 + Y / 2,                 COLOR(128 - 128 * cabs(t) / cabs(c),                       128 - 128 * cabs(t) / cabs(c),                       128 - 128 * cabs(t) / cabs(c)));        return 0;    }      // To put about the end of the fractal,    // the higher the value of the counter,    // The more accurate the fractal is generated,    // however, higher values cause    // more processing time.    if (counter == 100) {        putpixel(creal((c)) * Y / 2 + X / 2,                 cimag((c)) * Y / 2 + Y / 2,                 COLOR(255 * (cabs((t * t))                              / cabs((t - c) * c)),                       0, 0));        return 0;    }      // recursively calling Mandle with increased counter    // and passing the value of the squares of t into it.    Mandle(c, cpow(t, 2) + c, counter + 1);      return 0;}  int MandleSet(){      // Calling Mandle function for every    // point on the screen.    for (double x = -2; x < 2; x += 0.0015) {        for (double y = -1; y < 1; y += 0.0015) {            double _Complex temp = x + y * _Complex_I;            Mandle(temp);        }    }    return 0;}  int main(){    initwindow(X, Y);    MandleSet();    getch();    closegraph();    return 0;}OutputMy Personal Notes
arrow_drop_upSave
The Mandelbrot set is the set of complex numbers c for which the function  does not diverge when iterated from z=0, i.e., for which the sequence , etc., remains bounded in absolute value. In simple words, Mandelbrot set is a particular set of complex numbers which has a highly convoluted fractal boundary when plotted.
Implementation
#include <complex.h>#include <tgmath.h>#include <winbgim.h>  // Defining the size of the screen.#define Y 1080#define X 1920  // Recursive function to provide the iterative every 100th// f^n (0) for every pixel on the screen.int Mandle(double _Complex c,           double _Complex t = 0,           int counter = 0){      // To eliminate out of bound values.    if (cabs(t) > 4) {        putpixel(creal(c) * Y / 2 + X / 2,                 cimag(c) * Y / 2 + Y / 2,                 COLOR(128 - 128 * cabs(t) / cabs(c),                       128 - 128 * cabs(t) / cabs(c),                       128 - 128 * cabs(t) / cabs(c)));        return 0;    }      // To put about the end of the fractal,    // the higher the value of the counter,    // The more accurate the fractal is generated,    // however, higher values cause    // more processing time.    if (counter == 100) {        putpixel(creal((c)) * Y / 2 + X / 2,                 cimag((c)) * Y / 2 + Y / 2,                 COLOR(255 * (cabs((t * t))                              / cabs((t - c) * c)),                       0, 0));        return 0;    }      // recursively calling Mandle with increased counter    // and passing the value of the squares of t into it.    Mandle(c, cpow(t, 2) + c, counter + 1);      return 0;}  int MandleSet(){      // Calling Mandle function for every    // point on the screen.    for (double x = -2; x < 2; x += 0.0015) {        for (double y = -1; y < 1; y += 0.0015) {            double _Complex temp = x + y * _Complex_I;            Mandle(temp);        }    }    return 0;}  int main(){    initwindow(X, Y);    MandleSet();    getch();    closegraph();    return 0;}
Output
computer-graphics
Fractal
C++ Programs
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
C++ Program for QuickSort
CSV file management using C++
delete keyword in C++
cin in C++
Shallow Copy and Deep Copy in C++
Passing a function as a parameter in C++
C Program to Swap two Numbers
Program to implement Singly Linked List in C++ using class
Generics in C++
Const keyword in C++