Mandelbrot

L’immagine รจ fissa

final  int   limite=40;
final int   maxNum=20;

final float X1=-2.5;
final float Y1=-1.5;
final float X2=+1.5;
final float Y2=+1.5;

float passoX;
float passoY;

void setup()
{
   size(500, 350);

   int   maxX=width,
         maxY=height;
   float X,
         Y,
         ratioColor=255/maxNum;

   passoX=(X2-X1)/width;
   passoY=(Y2-Y1)/height;
           
   X=X1;      
   for(int i=0; i < maxX; i++)
   {
      Y=Y1;
      for(int j=0; j < maxY; j++)
      {
         float c=ratioColor*m(X, Y);
         set(i, j, color(255-c, 0, 255-c));
         Y+=passoY;
      }
      X+=passoX;  
   }    
}

int m(float a, float b)
{
  float x=0.0,
        y=0.0,
        xx;
  int   num=0;
 
  while(num < maxNum && (x*x+y*y < limite))
  {
     xx=x*x-y*y+a;
     y=2*x*y+b;
     x=xx;
     num++;
  }

  return num;
}