Arbelo

Arbelo di Archimede: in greco è il trincetto da calzolaio.
La lunghezza del suo contorno è uguale alla circonferenza di diamentro AB.
La sua superficie è equiestesa all’area del cerchio di diametro CD.

  • Mouse (posizione orizzontale): cambia la figura
  • Mouse (tasto): rivela la proprietà
  • Applicazione Java
color fSfondo, 
      fPrimo, 
      fSecondo,
      sPrimo, 
      sSecondo,
      cLettere;   
int   dx, dy; 
float Ax, Bx, Cx, Dx, ACx, CBx, CDx, CCx,  // ascisse
      Ay, By, Cy, Dy, ACy, CBy, CDy, CCy,  // ordinate          
      CCr, ACr, CBr, CDr;                  // raggi
PFont fontLettere;

void setup()
{
   size(500, 300); 
   ellipseMode(RADIUS); 
   smooth(); 
   fontLettere = loadFont("C16.vlw"); 
   textFont(fontLettere);
   textAlign(CENTER);   

   fSfondo =color(255, 255, 255);
   fPrimo  =color(0, 0, 0);         
   sPrimo  =color(0);
   fSecondo=color(0, 255, 0, 50);   
   sSecondo=color(0, 255, 0);  
   cLettere=color(0, 0, 255);       

   dx=width; 
   dy=height; 
   CCx=dx/2; 
   CCy=dy*0.9; 
   CCr=dx*0.42;   
   Ax=CCx-CCr; 
   Ay=CCy; 
   Bx=CCx+CCr; 
   By=CCy; 
   Cy=CCy; 
   ACy=CCy; 
   CBy=CCy;                  
  
   noLoop();
}

void mousePressed() { redraw(); }
void mouseMoved()   { redraw(); }
void mouseDragged() { redraw(); }

void aggiorna()
{
   Cx=constrain(mouseX, Ax, Bx); 
   ACx=(Ax+Cx)/2; 
   CBx=(Cx+Bx)/2;  
   Dx=Cx; 
   Dy=CCy-CCr*sin(acos((Cx-CCx)/CCr)); 
   CDx=Cx; 
   CDy=(Cy+Dy)/2;
   ACr=(Cx-Ax)/2; 
   CBr=(Bx-Cx)/2; 
   CDr=(Cy-Dy)/2;         
}

void draw()
{
  aggiorna(); 
  background(fSfondo);
  smooth();  
  noStroke();      
  fill(fPrimo);      
    arc(CCx, CCy, CCr, CCr, PI, TWO_PI);
  strokeWeight(2);
    stroke(fSfondo);  
    fill(fSfondo);     
    arc(ACx, ACy, ACr, ACr, PI, TWO_PI);
    arc(CBx, CBy, CBr, CBr, PI, TWO_PI);

  if(mousePressed)
  {
    strokeWeight(1);  
      stroke(sSecondo); 
      fill(fSfondo);   
      arc(ACx, ACy, ACr, ACr, PI, TWO_PI);
      arc(CBx, CBy, CBr, CBr, PI, TWO_PI);
      line(Ax, Ay, Bx, By);
      line(Cx, Cy, Dx, Dy);
    strokeWeight(2);  
      fill(fSecondo);  
      ellipse(CDx, CDy, CDr, CDr);                    
    stroke(cLettere); 
      fill(cLettere);  
      ellipse(Ax, Ay, 2, 2);                   
      ellipse(Bx, By, 2, 2);
      ellipse(Cx, Cy, 2, 2);                   
      ellipse(Dx, Dy, 2, 2);
      text("A", Ax-20, Ay+20);              
      text("B", Bx+20, By+20);
      text("C", Cx   , Cy+20);
      
         if(Dx > CCx )  text("D", Dx+20, Dy-10);
    else if(Dx == CCx)  text("D", Dx   , Dy-10);
    else                text("D", Dx-20, Dy-10);
  }
}