To learn about how images are made and to practice C, I tried writing a program to generate mandelbrot images and output them as .bmp files.

Source Code on github

I generated an image representing the mandelbrot set by checking each pixel to see if it is a part of it and, if not, I make the pixel darker the faster it blows up to infinity.

Here is the actual image file(10000×6600)

My program saved it as a bmp, then I converted it to another format to reduce the file size.

Here’s the function that generates the pattern:

double inMandelbrot(double x, double y)
{
  double _Complex c = x + (I*y);
  double _Complex z = 0;
  const int iterations = 200;
  const double ratio = 8.0/3.0;
  for(uint i = 0; i < iterations; i++)
  {
    z = (z*z) + c;
    if(cabs(z) > 2)
      return ((double)i / iterations) * ratio;
  }
  if(cabs(z) > 2)
    return 0.0;
  else
    return 1.0;
}