Langsung ke konten utama

Garis DDA, Garis Bresenham, dan Lingkaran

Garis dibuat dengan menentukan dua endpoint atau posisi awal dan posisi akhir dari suatu garis. Kmeudian peralatan output membuat garis sesuai posisi titik titik tersebut. Untuk peralatan analog seperti plotter an random-scan display garis lurus dapat dihasilkan dengan halus.
Garis adalah penghubung antara dua buah titik (titik awal dan titik akhir). Seperti yang kita tahu, bahwa persamaan garis lurus dinyatakan dalam rumus: y=mx+c. Dimana m adalah gradien yang didapatkan dari hasil pembagian deltaY dengan deltaX dan c adalah sebuah konstanta. Berangkat dari sini kita coba mulai untuk membahas algortima apa saja yang digunakan dalam pembuatan garis lurus. 
1. ALGORITMA DDA
A. PENGERTIAN ALGORITMA DDA
Algoritma DDA adalah algoritma pembentukan garis berdasarkan perhitungan dx maupun dy, menggunakan rumus dy=m.dx. Semua koordinat titik yang membentuk garis diperoleh dari perhitungan kemudian dikonversikan menjadi nilai integer.
DDA ( Digital Differential Analyzer) adalah garis yang membentang antara 2 titik, P1 dan P2. Dimana ke-2 titik ini membentuk sudut yang besarnya sangat bervariasi. Bekerja atas dasar penambahan nilai x dan nilai y. Dimana pada garis lurus, turunan pertama dari x dan y adalah kostanta.
B. LANGKAH LANGKAH PEMBENTUKAN GARIS ALGORITMA DDA
1.       Tentukan dua titik yang akan dihubungkan dalam pembentukan garis.
2.       Tentukan salah satu sebagai titik awal (x1, y1) dan titik akhir (x2, y2).
3.       Hitung dx = x2 – x1 dan dy = y2 – y1
4.       Tentukan step, yaitu jarak maksimum jumlah penambahan nilai x atau nilai y, dengan ketentuan:
                a.  bila |dx| > |dy| maka step = |dx|
                b.  bila tidak, maka step = |dy|
5.       Hitung penambahan koordinat pixel dengan persamaan:
 x_inc = dx / step
y_inc = dy / step
6.       Koordinat selanjutnya (x+x_inc, y+y_inc)
7.       Plot pixel pada layar, nilai koordinat hasil perhitungan dibulatkan
8.       Ulangi step nomor 6 dan 7 untuk menentukan posisi pixel berikutnya sampai x = x1 atau y = y1.
C. KEUNTUNGAN DAN KERUGIAN ALGORITMA DDA
Keuntungan  dari  algoritma  Digital  Differential  Analyzer  (DDA) adalah tidak perlu menghitung koordinat berdasarkan persamaan yang lengkap (menggunakan metode off set)
Kerugiannya  dari algoritma  Digital  Differential  Analyzer  (DDA) adalah adanya akumulasi Round-off errors,  sehingga garis akan melenceng  dari garis lurus, selain itu operasi round-off juga menghabiskan waktu.
D. OUTPUT CODING ALGORITMA DDA

2. ALGORITMA BRESENHAM
A.PENGERTIAN ALGORITMA BRESENHAM
Algoritma bresenham merupakan suatu algoritma (pendekatan) yang dikreasikan oleh bresenham yang tidak kalah akurat dan efisien dengan algoritma primitif lainnya (seperti DDA). Bagian pengkonversian (scan-knversi) garis akan melakukan kalkulasi untuk penambahan nilai-nilai integer (yang dibutuhkan untuk membentuk garis) yang disesuaikan dengan tipe grafik yang dipakai oleh layar komputer (keadaan monitor pc) kita. Untuk mengilustrasikan pendekatan bresenham, pertama kita harus memperhatikan proses scan- konvensi untuk garis dengan slope positif yang lebih kecil dari 1. Posisi pixel sepanjang line-path kemudian ditentukan dengan penyamplingan pada unit interval x.dimulai dari endpoint kiri (Xo,Yo) dari garis yang diberikan, kita pindahkan beberapa kolom berturut-turut (berdasarkan posisi x) dan plot pixel-pixel yang mempunyai nilai scan-line y ke jarak yang paling dekat dengan line-path.
B. ATURAN BRESENHAM
·         Jika Pk bernilai positif (+), maka tambahkan hasilnya dengan B dan nilai x dan y ditambah 1.
·         Jika Pk bernilai negatif (-), maka tambahkan hasilnya dengan A dan nilai x ditambah 1, sedangkan y ditambah 0 (tetap).
·         Putaran dihentikan jika koordinat x dan y sudah mencapai batas akhir.
C. PRINSIP DARI ALGORITMA BRESENHAM
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 piksel dari nilai actual.
Garis lurus dinyatakan dinyatakan dalam persamaan :
y = mx + c   è Persamaan(1)
dimana :
m : gradient dan
c : konstanta.
              Untuk menggambarkan piksel-piksel dalam garis lurus, parameter yang digunakan tergantung dari gradient, jika besarnya gradient diantara 0 dan 1, maka digunakan sumbu x sebagai parameter dan sumbu y sebagai hasil dari fungsi, sebaliknya, bila gradient melebihi 1, maka sumbu y digunakan sebagai parameter dan sumbu x sebagai hasil dari fungsi, hal ini bertujuan untuk menghindari terjadinya gaps karena adanya piksel yang terlewatkan. Hasil dari fungsi biasanya merupakan bilangan real, sedangkan koordinat pixel dinyatakan dalam bilangan integer (x,y), maka diperlukan operasi pembulatan kedalam bentuk integer terdekat. Penggambaran garis lurus dengan metode diatas dimulai dengan operasibilangan real untuk menghitung gradient m dan konstanta c.
m = (y2 – y1 ) / (x2-x1)          (2)
c = y1 / m* x1*                       (3)
Operasi bilangan real berikutnya adalah menghitung nilai y dengan persamaan (1) Untuk mendapatkan koordinat piksel (x,y), untuk setiapnilai x, dari =x1 sampai x=x2, operasi inilah yang perlu dihindari,karena operasi ini memerlukan waktu operasi yang besar.
D. LANGKAH LANGKAH PEMBENTUKAN GARIS ALGORITMA BRESENHAM
1.       Tentukan 2 titik yang akan dihubungkan dalam pembentuk garis.
2.       Tentukan salah satu titik disebelah kiri sebagai titik awal, yaitu (X0,Y0) dan titik lainnya sebagai titik akhir (X1, Y1)
3.       hitung Dx, Dy, 2DX dan 2Dy-2Dy
4.       Hitung parameter P0= 2Dy – 2Dx
5.       Untuk setiap X1 sepanjang jalur garis, dimulai dengan k=0,
·         bila pk<0, makatitik selanjutnya adalah (Xk + 1, Yk) dan Pk+1 = Pk +2Dy
·         bila tidak, maka titik selanjutnya adalah (Xk + 1, Yk +1) dan Pk+1 = Pk +2Dy – 2Dx
6.       Ulangi langkah no. 5 untuk menentukan posisi selanjutnya, sampai X=X1 dan Y=Y1
E. OUTPUT CODING ALGORITMA BRESENHAM
3. ALGORITMA LINGKARAN
Algoritma ini akan mencari titik-titik koordinat dalam membuat sebuah lingkaran, sehingga hal yang perlu kita pahami disini ialah bagaimana mendapatkan titik-titik koordinat tersebut.
Dalam mendapatkan titik-titik koordinat pembentuk lingkaran dengan algoritma bresenham, dikenal sebuah istilah pencerminan yang terdiri dari Pencerminan Diagonal, Pencerminan Vertikal dan Pencerminan Horizontal.
Pada praktiknya, kita hanya perlu mencari titik-titik koordinat pada kuadran 1 saja (0-45º). Dan untuk kuadran selanjutnya dapat menggunakan teknik pencerminan yang telah disebutkan diatas.
  • Pencerminan Diagonal
    Untuk mendapatkan titik-titik koordinat kuadran 2.
  • Pencerminan Vertikal
    Untuk mendapatkan titik-titik koordinat kuadran 3 dan 4.
  • Pencerminan Horizontal
    Untuk mendapatkan titik-titik koordinat kuadran 5, 6, 7 dan 8.
Kuadran1      Kuadran Lengkap
ALGORITMA
  1. Tentukan jari-jari, pusat lingkaran, dan titik awal
    • r → jari-jari
    • XC , YC → pusat lingkaran
    • X0 → XC
    • Y0 → r
  2. Hitung P1
    P1 = 1 – r
  3. Tentukan penambahan oktannya dengan aturan:
    • Jika P >= 0
      Xk = Xk-1 + 1
      Yk = Yk-1 – 1
      Pk+1 = Pk + 2Xk + 1 – 2Yk
    • Jika P < 0
      Xk = Xk-1 + 1
      Yk = Yk-1
      Pk+1 = Pk + 2Xk + 1
  4. Lakukan langkah penambahan oktan hingga tercapai keadaan dimana X <= Y
  5. Cari oktan untuk kuadran selanjutnya dengan metode pencerminan titik-titik yang telah didapat.
    Untuk kasus lingkaran dengan titik tengah (0, 0)
    – Pencerminan diagonal    → Tukar nilai X dan Y
    – Pencerminan Vertikal       → Nilai Y dikali (–1)
    – Pencerminan Horizontal → Nilai X dan Y dikali (–1)
OUTPUT CODING LINGKARAN
jika ingin download source code nya dapat di unduh disini.

Komentar

Postingan populer dari blog ini

Transformasi 3D

Transformasi 3D pada dasarnya hampir sama dengan transformasi 2D, hanya pada 3D kita menghitung sumbu Z. Sama seperti pada 2D, ada tiga  transformasi dasar yang dapat dilakukan terhadap verteks, yaitu:  Translasi.  Pensekalaan.  Rotasi.  Titik hasil transformasi dapat diperoleh melalui rumus  affine transformation Q = P * M + tr Dimana:  Q: (Qx, Qy, Qz) menyatakan matrix 1x3 yang berisi titik hasil transformasi. P: (Px, Py, Pz) menyatakan matrik 1x3 yang berisi titik yang akan ditransformasi. tr: (trx, try, trz) menyatakan matriks 1x3 yang berisi banyaknya pergeseran sumbuk x,y, z. M: Matriks transformasi berukuran 3x3  seperti berikut : KONSEP 3 DIMENSI Untuk mendapatkan tampilan 3D yang dimodelkan dalam koordinat dunia, pertama harus menentukan koordinat referensi untuk “kamera”. Koordinat referensi ini mendefinisika...