Kamis, 29 November 2012

Algoritma Bresenham




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 :
  1. Tentukan dua titik yang akan dihubungkan dalam pembentukan garis.
  2. Tentukan salah satu titik di sebelah kiri sebagai titi awal, yaitu (x0,y0) dan titik lainnya sebgai titik akhir (x1,y1).
  3. Hitung dx,dy,2dx dan 2dy-2dx.
  4. Hitung parameter P0 = 2dy-dx
  5. 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
  6. 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 :






4. Seterusnya cari nilai pemalar penentu berpandukan nilai pemalar diatas



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





























































  • 6. Ulang langkah 5 sebanyak Δx kali. Hasilnya :



    Algoritma DDA (Digital Defferential Analyzer)





    DDA atau Digital Diferential Analyzer adalah scan conversion algorithm yang didasari oleh perhitungan berikut :
     Δy = m . Δ x 

      Δx = Δy / m 



    Algoritma DDA

    • Jika 0<m<1  maka     yk+1 = yk + m
                                             xk+1 = xk + 1
    • Jika m>1  maka        xk+1 = xk + 1/m
                                  yk+1 = yk + 1



    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.


    Langkah-langkah membuat garis dengan DDA :

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



    Carta alir bagi algoritma DDA


    Contoh dan penyelesaian penentuan titik dengan Algoritma DDA

    1. Inputkan 
    2 titik yaitu (2,6) dan (10,2). Mula-mula cari nilai kecerunan garis tersebut.







    2. Kemudian, lihat sama ada garis tersebut x1 < x 2 yang dilukis dari kiri ke kanan atau x1 > x 2 yang di lukis dari kana ke kiri. Nilai kecerunan tadi juga di rujuk.


         Berdasarkan titik yang diberi, kiraanya adalah seperti berikut :

         
         sebagai contoh :

         




















    Langkah seperti gambar di atas diulang sebanyak 
    Δx kali dan hasilnya seperti di bawah ini :










    k
    n
    a
    i
    i
    a
    i
    X
    e
    i
    i
    h
    C