Campo di spot

final int numero=10;
float lato, lato2, width2;
float x_m, y_m;
float x_pos[], y_pos[];

void setup()
{
	size(500, 500);
        frameRate(30);
	rectMode(CENTER);  
	smooth();
	noStroke();

	lato=width/numero;
	lato2=lato/2.0;  
	width2=2.0*width;
	x_pos=new float[numero];
	y_pos=new float[numero];
	for(int i=0; i<numero; i++)
	{
		x_pos[i]=i*lato+lato2;
		y_pos[i]=i*lato+lato2;
	}
	noLoop();
}

void mouseMoved()
{
  redraw();
}
void draw()
{
   background(255);

   fill(0,100,100);   
   float x_m=pmouseX;
   float y_m=pmouseY;
   for(int i=0; i<numero; i++)
   for(int j=0; j<numero; j++) 
   { 
       float distanza = dist(x_pos[i], y_pos[j], x_m, y_m); 
       float lato_distanza = (distanza >= lato)? width2/distanza : distanza;
       ellipse(x_pos[i], y_pos[j], lato_distanza, lato_distanza);
   }

   fill(0,200,200);   
   x_m=mouseX;
   y_m=mouseY;
   for(int i=0; i<numero; i++)
   for(int j=0; j<numero; j++) 
   { 
       float distanza = dist(x_pos[i], y_pos[j], x_m, y_m); 
       float lato_distanza = (distanza >= lato)? width/distanza : distanza;
       ellipse(x_pos[i], y_pos[j], lato_distanza, lato_distanza);
   }
}