Minggu, 11 November 2012

Algoritma Pembuatan Garis (DDA dan Bressenham)


MAKALAH
“Algoritma Pembuatan Garis
(DDA dan Bressenham)”





Disusun Oleh:
Muhammad Miftakhur Rozak
(120911013)



PROGRAM STUDI TEKNIK INFORMATIKA
SEKOLAH TINGGI TEKNIK QOMARUDDIN
GRESIK
2012


KATA PENGANTAR

            Segala puji syukur kehadirat Allah SWT yang telah memberikan rahmat dan karunia-NYA, sehingga penulis dapat menyelesaikan makalah ini. Makalah ini penulis beri judul ”Algoritma Pembuatan Garis (DDA dan Bresenham)”.
Penulis menyadari bahwa dalam proses penulisan makalah ini, tidak terlepas dari bantuan banyak pihak, sehingga kami dapat menyelesaikan makalah ini. Pada kesempatan ini kami mengucapkan terima kasih kepada:
1.      Dosen pengampu mata kuliah Desain Grafis.
2.     Ibu dan ayah tercinta untuk setiap tetesan keringat dan curahan perhatian dan pengorbanan serta lantunan doa yang teruntai dalam setiap sholat  yang telah mengukir cita dan cinta dihatiku.
3. Para sahabatku atas dukungan, bantuan dan kebersamaannya selama ini, sehingga penulis dapat merasakan indahnya arti sebuah persahabatan.
4.   Semua pihak yang tidak dapat disebutkan satu persatu yang telah membantu dalam penyusunan makalah ini.
Terima kasih atas bantuan yang diberikan kepada penulis, semoga mendapatkan balasan dari Allah SWT sebagai amalan yang diperhitungkan dan mendapat imbalan yang jauh berharga.
Di dalam penyusunan Makalah ini, penulis menyadari dengan sepenuh hati akan kurang sempurnanya Makalah ini, mengingat tingkat kemampuan serta pengalaman penulis belum luas.  Namun demikian, penulis akan berusaha keras untuk menyusun Makalah ini sehingga dapat terselesaikan dengan baik. Oleh sebab itu, penulis mengharapkan saran dan kritik dari pembaca. Terimakasih.
Wassalamu’alaikum Wr. Wb

Lamongan, 01 November 2012


Penulis

DAFTAR ISI
                                   
HALAMAN JUDUL......................................................................................................... i
KATA PENGANTAR........................................................................................................ ii
DAFTAR ISI.................................................................................................................     iii
BAB  I  PENDAHULUAN
1.1  Latar Belakang....................................................................................................      1
1.2  Rumusan Masalah...............................................................................................       1
BAB  II PEMBAHASAN
      2.1. Algoritma DDA (Digital Defferential Analyzer).................................................      2
              2.2.1. Langkah-langkah Algoritma DDA.............................................................     2
              2.2.2. Bahasa Pascal Prosedur DDA..................................................................     3
2.2. Algoritma Bressenham..........................................................................................     4
       2.2.1. Langkah-langkah Algoritma Bressenham...................................................    5
       2.2.2. Sub Rutim Bressenham.............................................................................    6
BAB  III  PENUTUP
3.1. Kesimpulan.........................................................................................................      9
DAFTAR PUSTAKA....................................................................................................   10


BAB I
PENDAHULUAN
1.1  Latar Belakang
Garis merupakan kumpulan dari titik-titik, untuk membentuk garis lurus adalah dengan mengetahui titik awal dan titik akhir. Dengan mengetahui titik awal dan titik akhir maka kita dapat membentuk garis. Untuk menggambarkan proses pembuatan garis dari titik awal ke titik akhir ada berbagai algoritma. Algoritma yang umum adalah DDA dan Bressenham.
Perkembangan kemampuan komputasi prosesor yang pesat telah membuat komputer desktop mempunyai kemampuan komputasi yang besar. Hal ini mendorong perkembangan program aplikasi yang memerlukan komputasi yang besar seperti program aplikasi yang menggunakan grafik 3 dimensi. Peningkatan kemampuan komputasi prosesor untuk aplikasi grafik yang sarat komputasi, perlu dibarengi peningkatan efisiensi algoritma, sehingga pembuatan grafik garis dan kurva yang merupakan dasar pembuatan grafik dapat memberikan hasil yang optimal.

1.2  Rumusan Masalah
Berdasarkan latar belakang yang diuraikan di muka maka dapat dikemukakan dua rumusan masalah penelitian:
1.    Apakah Algoritma DDA itu?
2.    Apakah Algoritma Bressenham itu?


BAB II
PEMBAHASAN
2.1  Algoritma DDA (Digital Defferential Analyzer)
Algoritma DDA bekerja bekerja atas dasar penambahan nilai x dan nilai y. Pada garis lurus, turunan pertama dari x dan y adalah konstanta. Sehingga untuk memperoleh suatu tampilan dengan ketelitian tinggi, suatu garis dapat dibangkitkan dengan menambah nilai x dan y masing-masing sebesar eΔx dan eΔy, dengan besaran dengan nilai yang sangat kecil. Kondisi ideal ini sukar dicapai, karenanya pendekatan yang mungkin dilakukan adalah berdasarkan piksel-piksel yang bisa dialamati/dicapai atau melalui penambahan atau pengurangan nilai x dan y dengan suatu besaran dan membulatkannya ke nilai integer terdekat.

2.2.1.      Langkah-langkah Algoritma DDA
          Langkah-langkah untuk membuat algoritma DDA adalah sebagai berikut:
1.    Tentukan 2 buah titik.
2.    Tentukan yang menjadi titik awal (X0,Y0) dan titik akhir (X1,Y1).
3.    Hitung Dx dan Dy.        Dx = X1-Xdan Dy = Y1 – Y0
4.    Bandingkan Abs(Dx) dan Abs(Dy). Jika Abs(Dx) > Abs(Dy) maka Steps = Abs(Dx) bila tidak Steps = Abs(Dy)
5.    Hitung penambahan koordinat pixel, yaitu:X_increment = dx/steps, danY_increment = dy/steps.
6.    Koordint selanjutnya, yaitu X+X_increment Y+Y_increment.
7.    Posisi pixel ditentukan dengan pembulatan nilai koordinat tersebut.
8.    Ulangi langkah 6 dan 7 untuk posisi selanjutnya sampai X = X1, Y = Y



2.2.2.      Bahasa Pascal Prosedur DDA
Bahasa pascal prosedur algoritma DDA dapat di tulis seperti dibawah ini:
Begin
    Write(‘Masukkan Nilai X0 : ‘);
Readln(X0); Write(‘Masukkan Nilai Y0 : ‘);
Readln(Y0); Write(‘Masukkan Nilai X1 : ‘);
Readln(X1); Write(‘Masukkan Nilai Y1 : ‘);
Readln(Y1);
Dx:= X1-X0;
Dy:= Y1-Y0;
If Abs(Dx) > Abs(Dy) Then
Steps:= Abs(Dx)
Else
Steps:= Abs(Dy);
Endif
PutPixel(x,y,Hitam);
For x = 1 to Steps Do
X := X + Xincrement;
Y := Y + Yincrement;
PutPixel(x,y,Hitam);
End;
End;

Contoh:
Diketahui 2 buah titik A(10,10) dan titik B(17,16), bila titik A sebagai titik awal dan titik B sebagai titik akhir maka buatlah garis yang menghubungkan titik tersebut dengan menggunakan algoritma DDA.
Jawab:
Titik Awal = A(10,10)
Titik Akhir = B(17,16)
Dx = (X1-X0) (17-10) = 7
Dy = (Y1-Y0) (16-10) = 6
Abs(Dx) = Abs(7) = 7
Abs(Dy) = Abs(6) = 6
Abs(Dx) > Abs(Dy) maka
Steps= Abs(Dx) = 7
Xincrement = Dx / Steps. 7 / 7 = 1
Yincrement = Dy / Steps. 6 / 7 = 0,86

Tabel 2.1. Nilai perhitungan

K
X
Y
Xinc
Yinc
-
-
-
10
10
0
11
10,86
11
11
1
12
11,71
12
12
2
13
12,57
13
13
3
14
13,43
14
14
4
15
14,28
15
15
5
16
15,14
16
16
6
17
16
17
16\


2.2  Algoritma Bressenham
Tujuan dari algoritma Bressenham ini adalah untuk menghindari pembulatan nilai seperti pada algoritma DDA. Pada algoritma bressenham, nilai y kedua dan seterusnya, dihitung dari nilai y sebelumnya, sehingga hanya titik y pertama yang perlu dilakukan operasi secara lengkap. Perbaikan algoritma ini ternyata tidak menghasilkan perbaikan yang cukup siginifikan. Perbaikan berikutnya dilakukan dengan cara menghilangkan operasi bilangan riel dengan operasi bilangan integer. Operasi bilangan integer jauh lebih cepat dibandingkan dengan operasi bilangan riel, terutama pada penambahan dan pengurangan. 

2.2.1.      Langkah-langkah Algoritma Bressenham
a.      Langkah-langkah Algoritma Bressenham (Dx>Dy)
1.      Tentukan 2 titik yang akan dihubungkan dalam pembentukan garis.
2.      Tentukan salah satu titik disebelah kiri sebagai titik awal, yaitu (X0, Y0) dan titik lainnya sebagai titik akhir (X1, Y1).
3.      Hitung Dx=x2-x1, Dy=y2-y1, d1=2*DX dan d2=2*Dy - 2*Dx, e=d1-dx, x=x1, y=y1
4.      Gambar pixel di (x,y)
5.      Untuk setiap e>=0 hitung e=e+d2 dan y=y+1 Jika tidak hitung e=e+d1 dan y=y
6.      Hitung x=x+1
7.      Jika x>=x2 stop, jika tidak kembali ke langkah 4
b.      Langkah-langkah Algoritma Bressenham (Dx<Dy)
1.      Tentukan 2 titik yang akan dihubungkan dalam pembentukan garis.
2.      Tentukan salah satu titik disebelah kiri sebagai titik awal, yaitu (X0, Y0) dan titik lainnya sebagai titik akhir (X1, Y1)
3.      Hitung Dx=x2-x1, Dy=y2-y1, d1=2*Dy dan d2=2*Dy - 2*Dx, e=d1-dy, x=x1, y=y1
4.      Gambar pixel di (x,y)
5.      Untuk setiap e>=0 hitung e=e+d2 dan x=x+1 Jika tidak hitung e=e+d1 dan x=x 
6.      Hitung y=y+1. Jika y>=y2 stop, jika tidak kembali ke langkah 4

2.2.2.      Sub Rutim Bressenham
Sub Rutim Bressenham dalam CVoid line (int xa, ya, xb, yb, xEnd; flot x,y)
{
Int dx = abs(xb-xa), dy=abs(yb-ya);
Int p = 2*dy-dx;
Int twoDy = 2*dy,
twodyDx = 2*(dy-dx);
If (xa>xb)
{
X = xb;
Y = yb;
Xend = xa;
}
Else
{
X = xa;
Y = ya;
xEnd = xb;
}
SetPixel(x,y);
while(x
{
X++;
If (p<0) P+ = twody; Else { Y++; P+ = twoDyDx; } SetPixel(x,y); } }; 

Contoh:
Berdasarkan contoh pada algoritma DDA buatlah dengan metode bressenham:
Jawab:
dx = abs(xb – xa)= abs(17 – 10 ) = 7 dy = abs(yb – ya)= abs(16 – 10) = 6 p = 2 * dy - dx = 2 * 6 – 7 = 5 twody = 2 * dy = 2 * 6 = 12 twodydx= 2 * (dy – dx ) = 2 * ( 6 – 7 ) = -2 Periksa xa dan xb xa = 10 < xb =" 17Maka">
x = xa = 10
y = ya = 10
Xend = xa = 17
Ulangi selama x <>
K0: x = x + 1 = 10 + 1 = 11
Periksa nilai p , dimana p = 5
y = y + 1 = 10 + 1 = 11
p = p + twodydx = 5 + (-2) = 3
K1: x = x + 1 = 11 + 1 = 12
Periksa nilai p, dimana p = 3
y = y +1 = 11 + 1 = 12
p = p + twodydx = 3 + (-2) = 1
K2: x = x + 1 = 12 + 1 = 13
Periksa nilai p, dimana p = 1
y = y +1 = 12 + 1 = 13
p = p + twodydx = 1 + (-2) = -1
K3: x = x + 1 = 13 + 1 = 14
Periksa nilai p, dimana p = -1 Nilai y tetap yaitu y=13
p = p + twody = (-1) + 12 = 11
K4: x = x + 1 = 14 + 1 = 15
Periksa nilai p, dimana p = 11
y = y +1 = 13 + 1 = 14
p = p + twodydx = 11 + (-2) = 9
K5: x = x + 1 = 15 + 1 = 16
Periksa nilai p, dimana p = 9
y = y +1 = 14 + 1 = 15
p = p + twodydx = 9 + (-2) = 7
K6: x = x + 1 = 16 + 1 = 17
Periksa nilai p, dimana p = 7 y = y +1 = 15 + 1 = 16
p = p + twodydx = 7 + (-2) = 5
Proses berhenti karena x = x1 dan y = y1
Masukkan nilai kedalam tabel seperti pada tabel 2.2.
Tabel 2.2. Hasil penelusuran dengan bressenham

K
Pk
(Xk+1, Yk+1)
-
-
10,10
0
3
11,11
1
1
12,12
2
-1
13,13
3
11
14,13
4
9
15,14
5
7
16,15
6
5
17,16


BAB III
PENUTUP
3.1  Kesimpulan
Panjang garis atau banyak piksel dalam garis lurus sangat berpengaruh terhadap perbandingan performance antara sebuah algoritma dengan algoritma yang lain, hal ini disebabkan adanya perbedaan waktu operasi yang berada didalam perulangan sepanjang pembuatan piksel, dan waktu operasi yang berada pada sebelumnya. Panjang jari-jari dalam lingkaran tidak berpengaruh terhadap perbandingan performance antara sebuah algoritma dengan algoritma yang lain, hal ini menunjukkan perbandingan waktu operasi yang berada didalam perulangan sepanjang pembuatan piksel, dan waktu operasi yang berada pada sebelumnya berimbang.
Algoritma DDA bekerja bekerja atas dasar penambahan nilai x dan nilai y. Pada garis lurus, turunan pertama dari x dan y adalah konstanta. Sehingga untuk memperoleh suatu tampilan dengan ketelitian tinggi, suatu garis dapat dibangkitkan dengan menambah nilai x dan y masing-masing sebesar eΔx dan eΔy, dengan besaran dengan nilai yang sangat kecil. Sedangkan Tujuan dari algoritma Bressenham ini adalah untuk menghindari pembulatan nilai seperti pada algoritma DDA. Pada algoritma bressenham, nilai y kedua dan seterusnya, dihitung dari nilai y sebelumnya, sehingga hanya titik y pertama yang perlu dilakukan operasi secara lengkap.
Algoritma dengan dasar operasi bilangan integer memberikan waktu operasi yang lebih cepat dibandingkan dengan algoritma dengan dasar operasi bilangan riel, hal ini ditunjukkan dengan waktu komputasi algoritma DDAdan algoritma yang lebih cepat, baik pada pembuatan garis lurus maupun lingkaran dibandingan waktu komputasi dengan algoritma yang menggunakan dasar operasi bilangan riel.

DAFTAR  PUSTAKA

Donald Hearn and M.Pauline Baker, 1992, Computer graphics. NJ. Penerbit : Prentice-Hall.

Borland International, Inc., 1990, Turbo C++ Reference Guide.

http://smpn2lem.blogspot.com/2010/07/algoritma-dda-digital-defferential.html

Tidak ada komentar:

Posting Komentar