Jarak Titik ke Garis pada bidang 2D

03Feb10

Sebetulnya ini persoalan trivial, dulu pernah ditanyakan di gdi untuk memeriksa tumbukan antara lingkaran dengan segmen garis namun fungsi ini seringkali bermanfaat untuk persoalan lain. Catatan kecil ini cuma sebagian dari algoritma memeriksa tumbukan yang hanya berfungsi menghitung jarak sebuah titik P ke garis (panjang tak hingga) yang didefinisikan oleh dua buah titik (L1 dan L2). Caranya cukup sederhana yaitu menghitung proyeksi vektor (L1P) ke vektor garis (L1L2) sehingga didapat titik baru (PL) yang berada pada garis. vektor (PLP) tegak lurus garis sehingga untuk menghitung jarak titik P dari garis kita cukup menghitung panjang vektor (PLP). Visualisasi proyeksi ini ada pada gambar di atas.

function jarak_titik_garis( lx1, ly1, lx2, ly2, cx, cy: integer ): real;
var
  vx, vy            : integer;
  wx, wy            : integer;
  udotv             : real;
begin
  vx := ( lx2 - lx1 );
  vy := ( ly2 - ly1 );
  udotv := ( ( cx - lx1 ) * vx + ( cy - ly1 ) * vy ) / ( vx * vx + vy * vy );
  wx := round( udotv * vx ) + lx1 - cx;
  wy := round( udotv * vy ) + ly1 - cy;
  result := round( sqrt( wx * wx + wy * wy ) );
end;

Catatan: untuk menentukan apakah ada lingkaran yang beririsan dengan garis maka diperlukan pemeriksaan tambahan yaitu apakah titik proyeksi berada di antara kedua titik penyusun garis dan jarak titik pusat lingkaran ke garis yang lebih kecil atau sama dengan jari-jari lingkaran tersebut.



3 Responses to “Jarak Titik ke Garis pada bidang 2D”

  1. makasih infonya bro..
    ijin di copy..

    salam kenal ya..

  2. 2 emita meliala

    thx :*

  3. 3 aisyah

    yah saya kira jarak dari titik ke garis itu bisa diselesaikan secara geometris,tapi ini pakenya itungan vektoeyang belum aku ngerti -_-


Berikan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s


Ikuti

Kirimkan setiap pos baru ke Kotak Masuk Anda.

Bergabunglah dengan 2.143 pengikut lainnya.

%d blogger menyukai ini: