La superficie delle due lunule è equiestesa all’area del triangolo ABC.
- Mouse (posizione orizzontale): cambia la figura
- Mouse (tasto): rivela la proprietà
- Applicazione Java
color fSfondo,
fPrimo,
fSecondo,
sPrimo,
sSecondo,
cLettere;
int dx, dy;
float xMIN, xMAX, yMAX,
Ax, Bx, Cx, Ay, By, Cy, // triangolo rettangolo
ABx, ACx, CBx, ABy, ACy, CBy, // punti medi
ABr, ACr, CBr; // raggi semicirconferenze
PFont fontLettere;
void setup()
{
size(500, 350);
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;
xMIN=dx*0.15;
xMAX=dx*0.85;
yMAX=dy*.87;
Ax=xMIN; Ay=yMAX;
Bx=xMAX; By=yMAX;
ABx=dx/2; ABy=yMAX;
ABr=dist(Ax, Ay, Bx, By)/2;
noLoop();
}
void mousePressed(){ redraw(); }
void mouseMoved() { redraw(); }
void mouseDragged(){ redraw(); }
void aggiorna()
{
Cx=constrain(mouseX, Ax, Bx);
Cy=Ay-ABr*sin(acos((Cx-ABx)/ABr));
ACx=(Ax+Cx)/2;
ACy=(Ay+Cy)/2;
ACr=dist(Ax, Ay, Cx, Cy)/2;
CBx=(Cx+Bx)/2;
CBy=(Cy+By)/2;
CBr=dist(Cx, Cy, Bx, By)/2;
}
void draw()
{
aggiorna();
background(fSfondo);
smooth();
noStroke();
fill(fPrimo);
ellipse(ACx, ACy, ACr, ACr);
ellipse(CBx, CBy, CBr, CBr);
strokeWeight(2);
stroke(fSfondo);
fill(fSfondo);
ellipse(ABx, ABy, ABr, ABr);
quad(0, yMAX, dx, yMAX, dx, dy, 0, dy);
if(mousePressed)
{
strokeWeight(1);
stroke(sSecondo);
fill(fSfondo);
ellipse(ABx, ABy, ABr, ABr);
stroke(fSfondo);
quad(0, yMAX, dx, yMAX, dx, dy, 0, dy);
strokeWeight(2);
stroke(sSecondo);
fill(fSecondo);
triangle(Ax, Ay, Bx, By, Cx, Cy);
stroke(cLettere);
fill(cLettere);
ellipse(Ax, Ay, 2, 2);
ellipse(Bx, By, 2, 2);
ellipse(Cx, Cy, 2, 2);
text("A", Ax-20, Ay+20);
text("B", Bx+20, By+20);
if(Cx > ABx+100) text("C", Cx+20, Cy-20);
else if(Cx < ABx-100) text("C", Cx-20, Cy-20);
else text("C", Cx , Cy-20);
}
}