Beranda

Sabtu, 22 November 2014

Cara mencari pusat lingkaran dan radiusnya dari segitiga yang diketahui

Bagaimana mencari suatu lingkaran yang mengelelilingi sebuah segitiga yang telah diketahui titik-titik sudutnya. perhatikan gambar berikut :

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