cercul lui apollonius
TRANSCRIPT
Cercul lui Apollonius
Teorema 8: Locul geometric al punctelor ale căror distanţe la două puncte fixe sunt într-un raport constant este un cerc (Cercul lui Apollonius).
Demonstraţie: Fie A, B puncte fixe şi k>1; atunci orice punct P al locului geometric este situat în semiplanul (dB, unde d este mediatoarea lui [AB].
Dacă C si D sunt intersecţiile lui AB cu bisectoarea interioară şi cea exterioară a lui
, atunci, în conformitatea cu teorema bisectoarei unui unghi, , deci,
punctele fixe C, D aparţin locului geometric. Pe de altă parte , deci P se află pe un cerc C de diametru .
Reciproc, orice punct C aparţine locului geometric. Într-adevăr, notând
avem deci >1. Din ceea ce-am arătat mai sus rezultă că N se află pe un cerc C1 de
diamteru , unde . Dacă >k punctele sunt mai
aproape de B decât C, respectiv D, deci C1 Int C, în contradicţie cu N C C1 . Dacă k> , atunci C Int C1, şi iarăşi am ajuns la contradicţie. Aşadar singurul caz probabil este k= şi deci N aparţine locului geometric.
Dacă k<1, se schimbă rolul lui A şi B şi se obţine un cerc în semiplanul (dA.
În cazul k = 1, locul geometric este mediatoarea d.
#include<graphics.h>#include<math.h>#include<iostream.h>#include<conio.h>#include<stdio.h>#include<dos.h>using namespace std;
typedef struct{float x,y;
}punct;
punct A,B,C,D,Q;float k;float r;
void citire(){
cout<<"Introduceti coordontale punctului A:";cin>>A.x>>A.y;cout<<"Introduceti coordonatele punctului B:";cin>>B.x>>B.y;do{cout<<"Introduceti numarul k diferit de 1:";cin>>k;}while(k==1);
}
void cerc(){
C.x=(A.x+k*B.x)/(k+1);C.y=(A.y+k*B.y)/(k+1);D.x=(k*B.x-A.x)/(k-1);D.y=(k*B.y-A.y)/(k-1);Q.x=(C.x+D.x)/2;Q.y=(C.y+D.y)/2;r=sqrt((C.x-D.x)*(C.x-D.x)+(C.y-D.y)*(C.y-D.y))/2;
}
void desen_cerc(){
setcolor(BLUE);line(A.x,A.y,B.x,B.y);setcolor(RED);outtextxy(A.x,A.y,"A");outtextxy(B.x,B.y,"B");outtextxy(C.x,C.y,"C");outtextxy(D.x,D.y,"D");
setcolor(GREEN);circle(Q.x,Q.y,r);
}
int main(){
int gd=DETECT,gm;initgraph(&gd,&gm,"c:\\BC31\\BGI");initwindow(900,900);citire();cerc();desen_cerc();getch();closegraph();return 0;
}