Beranda

Tampilkan postingan dengan label Triangulation. Tampilkan semua postingan
Tampilkan postingan dengan label Triangulation. Tampilkan semua postingan

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

Senin, 09 Desember 2013

Mengekstrak data elevasi dari google map

Pada  awalnya pembuatan program ini adalah untuk mengdigitasi garis pantai, akan tetapi program ini bisa mengekstrak data elevasi dari google map. berdasarkan informasi dari google Maps API Web Services bahwa elevasi dapat diambil berdasarkan path antara dua titik koordinat.

ekstrak elevasi google map
ekstrak elevasi google map


pada program tersebut terlihat bahwa kerapatan pengambilan data bisa diatur. Dengan menggunakan metode delaunay triangulation seperti pada postingan sebelumnya maka hasil ekstrak dapat di sajikan dalam bentuk 3 dimensi. insyaallah pada posting blog selanjutnya akan dijelaskan mengenai penyajian 3D.

langkah-langkah penggunaan program ini adalah :

Kamis, 05 Desember 2013

Delaunay Triangulation

Delaunay triangulation adalah model yang saya gunakan untuk membuat mesh berbentuk segitiga. Mesh berbentuk segitiga berbeda dengan mesh berbentuk grid. Mesh segitiga tidak ada aturan antara titik koordinat yang satu dengan titik koordinat yang lain.

Misal, pada data batimetri yang tidak berbentuk grid berdasarkan hasil pengukuran di lautan. Maka setiap koordinat x dan y tidak berubah secara beraturan sehingga perlu cara untuk memecahkan persoalan ini, yaitu dengan konsep Delaunay Triangulation. Konsep Delaunay secara lengkap bisa dibaca di http://en.wikipedia.org/wiki/Delaunay_triangulation

Dengan menggunakan bahasa pemrograman Delphi 7, saya berhasil membuat ulang script untuk membuat Delaunay Triangulation, dan dapat di download.

secara singkat saya jelaskan Delaunay Triangulation di bawah ini :

PTitik=^TTitik;                   //  Pointer untuk titik
PSisi=^TSisi;                     //  Pounter untuk Sisi
PSegitiga=^TSegitiga;             //  Pointer untuk segitiga