APPLICAZIONI
Campo magnetico


Mouse
posizione: direzione del campo magnetico
tasto: attrazione/repulsione
 
Codice
  1. final int numero=10;
  2.  
  3. float lato,
  4.       lato_2;
  5. float x_pos[];
  6. float y_pos[];
  7. boolean tasto;
  8.  
  9. void setup()
  10. {
  11.   size(360, 360);
  12.   smooth();
  13.   stroke(0);
  14.   fill(0,255,255);
  15.   strokeWeight(2);
  16.  
  17.   lato=(float)width/(numero+1);
  18.   lato_2=lato/2.0;
  19.  
  20.   x_pos=new float[numero];
  21.   y_pos=new float[numero];
  22.   for(int i=1; i <= numero; i++)
  23.   {
  24.       x_pos[i-1]=i*lato;
  25.       y_pos[i-1]=i*lato;
  26.   }
  27.   noLoop();
  28. }
  29. void mouseMoved()    { tasto=true;  redraw(); }
  30. void mouseReleased() { tasto=true;  redraw(); }
  31. void mouseDragged()  { tasto=false; redraw(); }
  32. void mousePressed()  { tasto=false; redraw(); }
  33.  
  34. float x_c, y_c,
  35.       x_m, y_m,
  36.       x_d, y_d,
  37.       angolo;
  38.  
  39. void draw()
  40. {
  41.   background(255);
  42.  
  43.   x_m=mouseX;
  44.   y_m=mouseY;
  45.   translate(x_m, y_m);
  46.  
  47.   for(int i=0; i < numero; i++)
  48.   for(int j=0; j < numero; j++)
  49.   {
  50.       x_c=x_pos[i]-x_m;
  51.       y_c=y_pos[j]-y_m;
  52.       ellipse(x_c, y_c, 6, 6);
  53.            
  54.       angolo=atan2(y_c, x_c);
  55.       if(tasto)
  56.          angolo += PI;
  57.       x_d = lato_2*cos(angolo);
  58.       y_d = lato_2*sin(angolo);
  59.  
  60.       line(x_c, y_c, x_c+x_d, y_c+y_d);
  61.   }
  62. }
'
There are no comments on this page.
Valid XHTML :: Valid CSS: :: Powered by WikkaWiki