Algoritma DDA Digital Diferential Analyzer

y = 5 + 1 = 6 iterasi ke-4: y= 6; x = 0,6. 6 – 3 + 4 =5,8 pembulatan: x = 6 gambar titik 6,6 di layar . y = 6 + 1 = 7 iterasi ke-5: y= 7; x = 0,6. 7 – 3 + 4 =6,4 pembulatan: x = 6 gambar titik 6,7 di layar . y = 7 + 1 = 8 iterasi ke-6: y= 8; x = 0,6. 8 – 3 + 4 =7 pembulatan: x = 7 gambar titik 7,8 di layar . y = 8 + 1 = 9 titik-titik pembentuk garis : 4,3, 5,4, 5,5, 6,6, 6,7, 7,8. Kelemahan algoritma Brute Force : Algoritma ini terlalu lambat karena: pada setiap iterasi terdapat perkalian bilangan pecahan floating point, penjumlahan bilangan pecahan, dan proses pembulatan angka pecahan menjadi bulat integer.

2.3.2 Algoritma DDA Digital Diferential Analyzer

DDA adalah algoritma pembentuk garis yang didasarkan pada perasamaan 2-8. Garis dibuat menggunakan titik awal x 1 , y 1 dan titik akhir x 2 , y 2 . Setiap koordinat titik x k , y k yang membentuk garis diperoleh dari perhitungan, kemudian hasil perhitungan dikonversikan menjadi nilai integer. Algoritma ini bisa digunakan untuk menghitung garis dengan semua kemiringan. { 0 m 1 ; m1 ; −1 m 0 ; m −1 }. Berikut adalah langkah-langkah pembentukan garis berdasarkan algoritma DDA: =================================================================== 1. Tentukan dua titik yang akan dihubungkan dalam pembentukan garis. 2. Tentukan salah satunya sebagai titik awal x 1 , y 1 dan yang lain sebagai titik akhir x 2 , y 2 . 3. Hitung : dx = x 2 − x 1 dan dy = y 2 − y 1 4. Tentukan step, dengan ketentuan berikut: - bila |dx| |dy| maka step = |dx| - bila tidak, maka step = |dy| 5. Hitung penambahan koordinat piksel dengan persamaan: x_inc = dx step y_inc = dy step 6. Koordinat selanjutnya : x = x + x_inc y = y + y_inc 7. Lakukan pembulatan u = Roundx, v = Roundx, kemudian plot piksel u, v pada layar 8. Ulangi point 6 dan 7 untuk menentukan posisi piksel berikutnya sampai x = x 2 dan y = y 2 . Contoh 2.4 Diketahui 2 buah titik A2,1 dan titik B8,5 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 x 1 , y 1 = A2,1 dan Titik akhir x 2 , y 2 = B8,5 dx = x 2 − x 1 = 8 −2 = 6 dan dy = y 2 − y 1 = 5 − 1 = 4 Karena: |dx| |dy|, maka step = |dx| = 6 x_inc = dx step = 66 = 1 y_inc = dy step = 46 = 0,67 ================================================= Iterasi ke-1: x,y = 2,1 x+x_inc = 2 + 1 = 3 y+y_inc = 1 + 0,67 = 1,67 Koordinat selanjutnya : x,y = 3; 1,67 Pembulatan 3; 1,67 ≈ 3,2. Gambar titik 3,2 dilayar ================================================= Iterasi ke-2: x,y = 3; 1,67 x+x_inc = 3 + 1 = 4 y+y_inc = 1,67 + 0,67 = 2,34 Koordinat selanjutnya : x,y = 4; 2,34 Pembulatan 4; 2,34 ≈ 4,2. Gambar titik 4,2 dilayar ================================================= Iterasi ke-3: x,y = 4; 2,34 x A +x_inc = 4 + 1 = 5 y A +y_inc = 2,34 + 0,67= 3,01 Koordinat selanjutnya : x,y = 5; 3,01 Pembulatan 5; 3,01 ≈ 5,3. Gambar titik 5,3 dilayar ================================================= Iterasi ke-4: x,y = 5; 3,01 x A +x_inc = 5 + 1 = 6 y A +y_inc = 3,01 + 0,67 = 3,68 Koordinat selanjutnya : x,y = 6; 3,68 Pembulatan 6; 3,68 ≈ 6,4. Gambar titik 6,4 dilayar ================================================= Iterasi ke-5: x,y = 6; 3,68 x A +x_inc = 6 + 1 = 7 y A +y_inc = 3,68 + 0,67 = 4,35 Koordinat selanjutnya : x,y = 7; 4,35 Pembulatan 7; 4,35 ≈ 7,4. Gambar titik 7,4 dilayar ================================================= Iterasi ke-6: x,y = 7; 4,35 x A +x_inc = 7 + 1 = 8 y A +y_inc = 4,35 + 0,67 = 5,02 Koordinat selanjutnya : x,y = 8; 5,02 Pembulatan 8; 5,02 ≈ 8,5. Gambar titik 8,5 dilayar Karena x = x 2 = 8, maka iterasi dihentikan, sehingga diperoleh titik-titik pembentuk garis sebagai berikut: 2,1, 3,2, 4,2, 5,3, 6,4, 7,4 dan 8,5. ================================================= Bila digambar pada raster graphics diperoleh gambar 2.6: Gambar 2.6: Titik-titik pembentuk garis hasil perhitungan menggunakan algoritma DDA digambar pada raster graphics. Kelebihan Algoritma DDA dibanding Algoritma Brute Force Algoritma DDA lebih cepat dibanding dengan algoritma Brute Force dan baik digunakan untuk kemiringan garis m 1. Kelemahan Algoritma DDA • Prosedur untuk menggambar garis masih menggunakan fungsi pembulatan x maupun y, sehingga memerlukan waktu. • variabel x, y maupun m memerlukan bilangan real karena kemiringan merupakan nilai pecahan.

2.3.3 Algoritma Bressenham