Bresenham
pada tahun 1965, melakukan perbaikan dari algoritma perhitungan
koordinat piksel yang menggunakan persamaan y = mx + c, dengan cara
menggantikan operasi bilangan riel perkalian dengan operasi penjumlahan,
yang kemudian dikenal dengan Algoritma Bresenham. Pada algoritma
bresenham, 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.
- Sumbu vertikal memperlihatkan posisi scan line.
- Sumbu horizontal memperlihatkan kolom pixel
- Pada tiap langkah, penentuan pixel selanjutnya didasari oleh parameter integer yang nilainya proporsional dengan pengurangan antara vertical separations dari dua posisi piksel dari nilai actual.
Algoritma Bresenham
Po = 2 Δy - Δx
Langkah-langkah membuat garis dengan Bresenham :
- Tentukan dua titik yang akan dihubungkan dalam pembentukan garis.
- Tentukan salah satu titik di sebelah kiri sebagai titi awal, yaitu (x0,y0) dan titik lainnya sebgai titik akhir (x1,y1).
- Hitung dx,dy,2dx dan 2dy-2dx.
- Hitung parameter P0 = 2dy-dx
- Untuk setiap Xk sepanjang jalur garis, dimulai dengan k=0,bila pk <0,>k+1, yk), dan Pk+1 = Pk+2dybila tidak, maka titik selanjutnya adalah (xk+1,yk+1), dan Pk+1 = Pk+2dy-2dx
- Ulangi langkah no 5 untuk menentukan posisi pixel selanjutnya, sampai x = x1 dan y = y1.
Carta air bagi algoritma Bresenham :
Contoh dan penyelesaian dengan Algoritma Bresenham
1. Inputkan 2 titik hujung garis lurus (X 0,Y 0)dan (X n,Y n). katakan titik tersebut ialah (2,2) dan (6,4)
2. Plotkan titik awal iaitu (X0,Y 0)
3. Kemudian kira pemalar-pemalar berikut :
5. Pada setiap kedudukan persampelan Xk(di sepanjang laluan garis lurus) bermula daripada k=0, uji nilai pemalar tertentu
Jika Pk<0, Plotkan titik (Xk+1,Y k)
Pk+1 = Pk + 2 deltay
Jika Pk>0, Plotkan titik (Xk+1,Y k+1)
Pk+1 = Pk + 2 deltay - 2 deltax
Pk+1 = Pk + 2 deltay
Pk+1 = Pk + 2 deltay - 2 deltax