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.

About these ads


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

  1. 1 anonymous

    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 -_-


Tinggalkan Balasan

Fill in your details below or click an icon to log in:

WordPress.com Logo

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

Twitter picture

You are commenting using your Twitter account. Log Out / Ubah )

Facebook photo

You are commenting using your Facebook account. Log Out / Ubah )

Connecting to %s


Ikuti

Get every new post delivered to your Inbox.

Bergabunglah dengan 1.915 pengikut lainnya.

%d bloggers like this: