Campo magnetico

  • Mouse (posizione): direzione del campo magnetico
  • Mouse (tasto): attrazione/repulsione
  • Applicazione Java
final int numero=10;

float   lato,
        lato_2;
float   x_pos[];
float   y_pos[];
boolean tasto;

void setup()
{
  size(500, 500);
  frameRate(30);
  smooth();
  stroke(0);
  fill(0,255,255);
  strokeWeight(2);
 
  lato=(float)width/(numero+1);
  lato_2=lato/2.0;
 
  x_pos=new float[numero];
  y_pos=new float[numero];
  for(int i=1; i <= numero; i++)
  {
	  x_pos[i-1]=i*lato;
	  y_pos[i-1]=i*lato;
  }
  noLoop();
}
void mouseMoved()    { tasto=true;  redraw(); }
void mouseReleased() { tasto=true;  redraw(); }
void mouseDragged()  { tasto=false; redraw(); }
void mousePressed()  { tasto=false; redraw(); }

float x_c, y_c,
	  x_m, y_m,
	  x_d, y_d,
	  angolo;

void draw()
{
  background(255);

  x_m=mouseX;
  y_m=mouseY;
  translate(x_m, y_m);

  for(int i=0; i < numero; i++)
  for(int j=0; j < numero; j++)
  {
	  x_c=x_pos[i]-x_m;
	  y_c=y_pos[j]-y_m;
	  ellipse(x_c, y_c, 6, 6);
		   
	  angolo=atan2(y_c, x_c);
	  if(tasto)
		 angolo += PI;
	  x_d = lato_2*cos(angolo);
	  y_d = lato_2*sin(angolo);

	  line(x_c, y_c, x_c+x_d, y_c+y_d);
  }
}