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

Cara mengecek apakah sebuah titik di dalam segitiga atau tidak menggunakan Delphi

script berikut adalah contoh bagaimana cara mengecek sebuah titik apakah berada di dalam area lingkaran atau berada di luar lingkaran.


Posisi awal titik di antara titik-titik segitiga

secara teori untuk mengecek apakah sebuahh titik berada di tengah-tengah segitiga maka tariklah garis dari masing-masing titik segitga sampai memotong garis segitga yang berhadapan dengan titik tersebut melalui titik yang akan dicek apakah di dalam segitiga. atau tariklah garis dari titik p1 ke p sampau memotong garis p2p3, begitu pula tarik garis dari titik p2 ke p sampai memotong p1p3 dan tariklah garis dari titik p3 ke p sampai memotong garis p1p2, seperti digambarkan sebagai berikut :


di tarik garis dari sudut segitiga melalui titik yang akan dicek sampai memotong garis segitga yang berhadapan.

dari konsep di atas maka untuk memastikan titik tersebut di dalam segitiga maka logikanya adalah


  1. Jika garis p1a > p1p

  2. Jika garis p2b > p2p

  3. Jika garis p3c > p3p


jika dituangkan dalam bahasa pemrograman delphi maka

function InTriangle(const x,y,x1,y1,x2,y2,x3,y3:real):boolean;
var a,b,c:boolean;
begin
  a:=sqr((y2-y1)*(x3-x2)+(y3-y2)*(x1-x2))>=sqr((y-y1)*(x3-x2)-(y3-y2)*(x-x1));
  b:=sqr((y3-y2)*(x1-x3)+(y1-y3)*(x2-x3))>=sqr((y-y2)*(x1-x3)-(y1-y3)*(x-x2));
  c:=sqr((y1-y3)*(x2-x1)+(y2-y1)*(x3-x1))>=sqr((y-y3)*(x2-x1)-(y2-y1)*(x-x3));
  result:=a and b and c;
end;


Selasa, 23 September 2014

Pengertian Pasag Surut Air Laut

PASANG SURUT

Pasang surut permukaan air laut adalah proses terjadinya pergerakan naik dan turunnya permukaan air laut secara harmonik dan periodik. Para peneliti sepakat bahwa gerakan pasang surut disebabkan oleh gaya tarik antara gravitasi bumi dan gaya bulan dan matahari. Pengaruh benda angkasa lainnya dapat diabaikan karena jaraknya lebih jauh atau ukurannya lebih kecil. Faktor yang sangat berpengaruh dalam proses pasang surut adalah gravitasi bulan dan gravitasi matahari, akan tetapi di setiap daerah perairan memiliki kedalaman yang bervariasi maka pasang surut terjadi perubahan tinggi gelombang sehingga terjadilah pasang surut yang berasal dari resonansi atau berubah karena perairan dangkal sehingga disebut komponen pasang surut shalow water. Faktor non astronomi yang mempengaruhi pasut terutama di perairan semi tertutup seperti teluk adalah bentuk garis pantai dan topografi dasar perairan.


Pasang surut merupakan gelombang sehingga memiliki istilah-istilah yang sama dengan gelombang seperti Puncak gelombang disebut pasang tinggi dan lembah gelombang disebut pasang rendah. Perbedaan vertikal antara pasang tinggi dan pasang rendah disebut rentang pasang surut (tidal range). Periode pasang surut adalah waktu antara puncak atau lembah gelombang ke puncak atau lembah gelombang berikutnya. Harga periode pasang surut bervariasi antara 12 jam 25 menit hingga 24 jam 50 menit. Pasang purnama (spring tide) terjadi ketika bumi, bulan dan matahari berada dalam suatu garis lurus. Pada saat itu akan dihasilkan pasang tinggi yang sangat tinggi dan pasang rendah yang sangat rendah. Pasang surut purnama ini terjadi pada saat bulan baru dan bulan purnama.

Pasang perbani (neap tide) terjadi ketika bumi, bulan dan matahari membentuk sudut tegak lurus. Pada saat itu akan dihasilkan pasang tinggi yang rendah dan pasang rendah yang tinggi. Pasang surut perbani ini terjadi pasa saat bulan 1/4 dan 3/4.

Karena sifatnya yang periodik maka pasang surut dapat diramal dengan menggunakan metode admiralti yang telah dikemukakan oleh angkatan laut inggris pada beberapa abad yang lalu, sesuai perkembangan ilmu pengetahuan dan perkembangan teknologi maka peramalan pasang surut menggunakan metode least square yakni pendekatan matematis yang meminimalkan error pada proses perhitungan.

Selasa, 29 April 2014

Model Kubus Atraktif Menggunakan Delphi

Pemodelan Kubus Atraktif menggunakan bahasa pemrograman Delphi dibangun berdasarkan model matematika geometri. Penggunaan matematika geometri akan lebih mudah jika menggunakan vektor dan matrix. Kata Atraktif disini hanya menggambarkan bahwa kubus dapat dirotasikan menggunakan mouse.

Pemodelan menggunakan vektor dan matrix, yang harus diperhatikan adalah pendeklarasian type vektor dan matrik seperti berikut :
type TVektor=array[0..2] of real;
     Tmatriks=array[0..2,0..2] of real;

Fungsi-fungsi yang dibutuhkan adalah perkalian matrix terhadap vektor, tentunya harus menggunakan ordo yang sama.
function perkalianmatriksvektor(matriks:TMatriks;vektor:TVektor):tvektor;
var i,j:integer;
begin
  for i:=0 to high(matriks) do
  begin
    result[i]:=0;
    for j:=0 to high(vektor) do
    result[i]:=result[i]+matriks[i,j]*vektor[j];
  end;
end;

Senin, 21 April 2014

Aproksimasi Lagrange Untuk Interpolasi

Interpolasi Linear seperti yang telah dibahasa pada post Konsep Dasar Interpolasi hanya memerlukan 2 titik yang terdekat. Gradien antara titik (x0,y0) dan (x1,y1) adalah m = (y1 - y0)/(x1 - x0) di dalam persamaan y = y0 + m(x - x0) adalah

dan dapat diubah persamaan di atas ke dalam bentuk polinom

Rabu, 16 April 2014

Konsep Dasar Interpolasi

Interpolasi adalah cara memperkirakan suatu nilai yang tidak termasuk dalam fungsi dengan menggunakan nilai fungsi yang sudah diketahui dari titik terdekat. Contoh jika diketahui tiga buah titik A(3,5), B(6,7) dan C(5,8). Berapakah nilai pada x=4, x=4,5 dan x=7? Maka untuk memecahkan permasalah ini dibutuhkan suatu metode interpolasi.

Kamis, 10 April 2014

Tiga Jenis Array pada Delphi

Konsep dasar dari bentuk array adalah matriks dari suatu tipe. Jenis array dibedakan berdasarkan cara penggunaan array tersebut menjadi tiga jenis:
  1. Array statik
    Jenis Array ini memiliki ukuran yang tetap dan tidak bisa diubah. Sebagai contoh:
    var vektor:array[0..100] of char;
    var matriks:array[0..100,0..100] of char;