Algoritma Pembentukan Garis
Algoritma Pembentukan Garis
Garis dibuat dengan menentukan dua endpoint atau posisi titik awal dan akhir dari suatu garis. Kemudian peralatan output membuat garis sesuai posisi titik-titik tersebut. Untuk peralatan analog seperti plotter dan random-scan display garis lurus dapa dihasilkan dengan halus. Pada peralatan digital garis lurus dihasilkan dengan menetapkan titik diskrit antara titik awal dan akhir. Posisi titik diskrit sepanjang garis lurus data diperhitungkan dari persamaan garis tersebut. Untuk menentukan nilai suatu titik, dapat digunakan prosedur dasar dimana x sebagai nilai kolom pixel dan y sebagai nilai scanline sebagai berikut : setPixel(x,y) bila nilai x dan y sudah tersimpan padaframe buffer untuk dapat menampilkannyapada layer menggunakan fungsi dasar getPixel(x,y)
1.
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= absolut dari 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.
Keuntungan dari algoritma ini adalah tidak perlu menghitung koordinatberdasarkan persamaan yang lengkap (menggunakan metode offset). Sedangkankerugiannya adalah adanya akumulasi Round-off errors, sehingga garis akan melencengdari garis lurus, selain itu operasi round-off juga menghabiskan waktu.
Penggambaran garis:
double yplus = Math.ceil(dy/step); p1x += xplus; p1y += yplus; System.out.println("titik berikutnya:("+p1x+","+p1y+")"); } } } class Run{ public static void main (String[] args) { hitungDDA dda = new hitungDDA(); //misalnya titik p1=(1,1) dan p2=(5,5) dda.hitung(1,1,5,5); } }
2. Algoritma Bresenham Algoritma Garis Bressenham merupakan algoritma yang menentukan dimana titik-titik dalam raster n-dimensi harus ditempatkan untuk membentuk garis lurus antara dua titik yang diberikan. Hal ini biasanya digunakan untuk menggambar garis pada layar komputer, karena hanya menggunakan integer penambahan, pengurangan dan pergeseran bit, yang mana semua itu merupakan proses yang sangat murah dalam arsitektur komputer yang standar. Algoritma ini adalah algoritma yang paling awal dikembangkan di bidang grafika komputer . Algoritma ini juga dapat membentuk lingkaran dengan sedikit penambahan pada algoritma-nya. Prinsip dari algoritma Bresenham adalah : 1. 2. Sumbu vertikal memperlihatkan posisi scan line. Sumbu horizontal memperlihatkan kolom pixel
3. Pada tiap langkah, penentuan pixel selanjutnya didasari oleh parameter integer yang nilainya proporsional dengan pengurangan antara vertical separations dari dua posisi dari nilai actual. Untuk menentukan jumlah pixel yang membuat suatu garis menggunakan algoritma bresenhem adalah sebagai berikut : 1. Masukan 2 endpoints, simpan endpoints kiri sebagai (x0, y0) dan kanan (x1,y1) 2. Hitung konstanta x, y, 2y, 2Dx,2y2x dan nilai awal parameter keputusan p0= 2y x 3. Pada setiap xk di garis, dimulai dari k=0, ujilah : Jika pk 0 maka plot (xk+1, yk+1) dan pk= pk+ 2y -2x 4. Ulangi tahap 4 sampai mencapai x,y yang di tuju.
contoh penerapan algoritma Bresenham : Contoh 1: Garis dengan titik (20,10,30,18) X = 10, Y = 8 Po = 2 Y -X = 6 2.Y = 16 2 Y - 2 X = -4