diketahui titik-titik segitiga pada p1(x1,y1), p2(x2,y2) dan p3(x3,y3) hendak mencari titik pusat dan radius lingkaran yang melalui titik-titik segitiga tersebut. untuk dapat mencari pusat lingkara maka yang harus dilakukan adalah cari persamaan linear dari masing-masing titik segitiga ke titik pusat lingkaran kemudian dengan metode eliminasi dari persamaan-persamaan linear tersebut sehingga mendapatkan persamaan yang dapat menentukan itik pusa lingkaran, jika sudah ketemu maka dapat mencari radius lingkaran tersebut dari salah satu titik segitiga yang diketahui. Dan setelah dicari dan dituangkan ke dalam bahasa pemrograman delphi jadilah seperti script di bawah ini
function GetCircle(const x1,y1,x2,y2,x3,y3:real;out x,y,r:real):boolean; var a,b:array[0..2] of real; er:boolean; begin er:=(x1=x2)and(x1=x3); er:=(y1=y2)and(y1=y3) or er; if not er then begin if y1=y2 then begin b[0]:=(y3+y2)/2;b[2]:=(x2+x3)/2; b[1]:=-(x2-x3)/(y2-y3); x:=(x2+x1)/2; y:=b[0]+b[1]*(x-b[2]); r:=sqrt(sqr(x-x1)+sqr(y-y1)); end else if y2=y3 then begin a[0]:=(y1+y2)/2;a[2]:=(x2+x1)/2; a[1]:=-(x2-x1)/(y2-y1); x:=(x2+x3)/2; y:=a[0]+a[1]*(x-a[2]); r:=sqrt(sqr(x-x1)+sqr(y-y1)); end else begin a[1]:=-(x2-x1)/(y2-y1); b[1]:=-(x2-x3)/(y2-y3); er:=er or (a[1]=b[1]); if not er then begin a[0]:=(y1+y2)/2;a[2]:=(x2+x1)/2; b[0]:=(y3+y2)/2;b[2]:=(x2+x3)/2; x:=(a[0]-a[1]*a[2]-b[0]+b[1]*b[2])/(-a[1]+b[1]); y:=a[0]+a[1]*(x-a[2]); r:=sqrt(sqr(x-x1)+sqr(y-y1)); end; end; end; result:=not er; end;
semoga bermanfaat
Tidak ada komentar:
Posting Komentar