Bresenham Algorithm
-
Upload
erwin-setiawan -
Category
Documents
-
view
141 -
download
14
description
Transcript of Bresenham Algorithm
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 Digital Differential Analyzer (DDA)
Algoritma Digital Differential Analyzer (DDA) adalah algoritma pembentukangaris
berdasarkan perhitungan dx maupun dy dengan menggunakan rumus dy = m.dx.Garis dibuat
dengan menentukan dua endpoint yaitu titik awal dan titik akhir. Setiapkoordinat titik yang
membentuk garis diperoleh dari perhitungan kemudian dikonversikanmenjadi nilai integer.
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.
Contoh penerapan algoritma DDA :
Contoh 1 :
garis dengan endpoint (1,3,8,5)
Penggambaran garis:
Berikut ini adalah penerapan algoritma DDA dengan Java:
class hitungDDA{
public void hitung(int p1x, int p1y, int p2x, int p2y) {
while (p1x < p2x) {
double step = 0;
int dx = p2x - p1x;
int dy = p2y - p1y;
int absolutDx = Math.abs(dx);
int absolutDy = Math.abs(dy);
if (absolutDx > absolutDy) {
step = absolutDx;
}
else {
step = absolutDy;
}
double xplus = Math.ceil(dx/step);
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. Sumbu vertikal memperlihatkan posisi scan line.
2. 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, 2Δy, 2Dx,2Δy–2Δx dan nilai awal parameter keputusan p0=
2Δy –Δx
3. Pada setiap xk di garis, dimulai dari k=0, ujilah : Jika pk 0 maka plot (xk+1, yk+1) dan
pk= pk+ 2Δy -2Δx
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