Selasa, 05 April 2011

Algoritma Digital Differential Analyzer(DDA)

Prinsip algoritma ini adalah mengambil nilai integer terdekat dengan jalur garis berdasarkan atas sebuah titik yang telah ditentukan sebelumnya(titik awal garis).
Algoritma pembentukan garis DDA:
  1. Tentukan dua titik yang akan dihubungkan dalam pembentukan garis.
  2. Tentukan salah satu titik sebagai awal(x0,y0) dan titik akhir(x1,y1).
  3. Hitung dx=x1x0, dan dy= y1y0.
  4. Tentukan langkah, yaitu dengan cara jarak maksimum jumlah penambahan nilai x maupun nilai y, dengan cara:
    • Bila nilai absolut dari dx lebih besar dari absolut dy, maka langkah= absolut dari dx.
    • Bila tidak maka langkah= absolutdari dy
  5. Hitung penambahan koordinat pixel yaitu x_increment=dx/langkah, dan y_increment=dy/langkah
  6. Koordinat selanjutnya (x+x_increment, y+y_increment)
  7. Posisi pixel pada layar ditentukan dengan pembulatan nilai koordinat tersebut.
  8. Ulangi nomor 6 dan 7 untuk menentukan posisi pixel selanjutnya,sampai x=x1 dan y=y1.
Contoh Prosedur DDA dalam pascal:
uses graph,crt;
       {tambahkan pada bagian ini prosedur penginisialisasian device, lihat pada bab 1}
        procedure drawLine(xstart,ystart,xend,yend:integer);
var
     step,k:integer;
     dx,dy:real;
     x_inc,y_inc,x,y:real;
begin
     dx:=xend-xstart;
     dy:=yend-ystart;
     x:=xstart;
     y:=ystart;
     if abs(dx) > abs(dy) then
     step:=round(abs(dx))
     else
     step:=round(abs(dy));
     x_inc:=dx/step;
     y_inc:=dy/step;
     putPixel(round(x),round(y),30);
     for k:=1 to step do
     begin
              x:=x+x_inc;
              y:=y+y_inc;
              putPixel(round(x),round(y),30);
     end;
end;
begin
     init;
    {menggambar garis dari titik 10,10 ke 500,10}
    drawLine(10,10,500,10);
     readkey;
    destroy;
end.

* Sumber : Modul Praktikum Grafika Komputer 2D oleh Muhammad Fuad DR, Fakultas MIPA
                 Universitas  Gajah Mada Yogyakarta

(edited by : erni mahdalena)

Tidak ada komentar:

Posting Komentar