Thursday, September 22, 2011

ALGORITMA DDA,ALGORITMA BRESENHAM,ALGORITMA LINGKARAN MIDPOINT


ALGORITMA DDA
Digital Differential Analyzer adalah suatu algoritma (pendekatan) pengonfersian suatu himpunan pixel menjadi suatu garis yang didasari atas perhitungan ∆ x dan ∆y, dengan menggunakan persamaan (4) dan (5) diatas, kita ontohkan sebuah garis pada unit interval di dalam suatu koordinat dan kemudian kita tentukan nilai integer yang mempunyai jarak terdekat dengan line-path untuk koordinat yang lain. Perhatikan gari pertama dengan slope positif yang ditunjukan gambar di atas. Jika slope ≤ 1, kita tentukan nilai untuk unit interval x (dalam hal ini ∆x=1) dan hitung beberapa hasil iterasi secara berturut-turut untuk nilai y dengan persamaan
yk+1 = yk+m (6)
Subskrip k bernilai integer yang dimulai dari 1, untuk pengintegrasian pertama, dan terus menambahkan nilai k dengan 1 sampai pasangan koordinat (x,y) yang terakhir terpenuhi oleh algoritma tersebut. Slope m dapat berupa suatu nilai antara 0 dan 1, kemudian hasil hitungan y akan dibulatkan menjadi suatu nilai integer yang mendekati dengan nilai sebenarnya yang bertipe pecahan (floating).
Untuk garis dengan kemiringan positif atau > (lebih besar) dan kita harus menukarkan peran dari x dan y, dapat kita contohkan pada interfal y (∆y=1), lalu hitung beberapa nilai x secara berturut-turut menggunakan persamaan
xk+1=xk+1/m (7)
persamaan (6) dan (7) di dasarkan dari pengasumsian suatu garis yang diproses dari titik ujung paling kiri dari garis menuju tutuk ujung paling kanan dari garis tersebut. Jika proses ini dibalikkan atau ditukar, supaya diperoleh keadaan dimana titik ujung awalnya berada di sebelah kanan, maka kita harus memberikan nilai ∆x = 1 dan
Yk+1= xk=1/m (8)
Persamaan (6) sampai (9) dapat juga digunakan untuk menghitung posisi pixel yang membentuk suatu garis dengan slope negative, jika nilai absolute slope yang membentuk suatu garis dengan slope negative. Jika nilai absolute slope lebih kecil dari 1 dan titik-titik ujung (endpoint) awalnya berada di sisi paling kiri, kita berikan nilai ∆x=1 dan hitung nilai yk+1 dengan persamaan (6). Dan kemidian endpoint awal yang berada pada posisi sebelah kanan (untuk slope yang sama), kita masukan ∆x=-1 dan kita dapatkan nilai y dari hasil perhitungan menggunakan persamaan (8). Sama juga ketika nilai absolute dari sebuah slope positif adalah lebih besar dari 1, kita gunakan ∆y=-1 dan kita tentukan xk+1 dengan persamaan (9) atau kita gunakan ∆y=1 dan kita tentukan xk+1 dengan persamaan (7). Algoritma ini dirangkaum di dalam prosedur berikut, yang mana program menerima input dua posisi pixel endpoint (titik-titik ujung suatu garis) sebagai awalnya dan menentukan perbedaan horizontal dan vertical diantara dua posisi endpoint yang diperoleh untuk parameter dx dan dy. Perbedaan nilai yang cendrung besar akan menentukan nilai dari parameter slep di dalam algoritma DDA. Dimulai dari posisi pixel (Xa,Ya) kita tentukan penyeimbang yang dibutuhkan pada beberapa langkah program untuk menghasilkan posisi pixel selanjutnya sepanjang line-path. Kita ulangi kondisi ini beberapa kali sampai proses ini memenuhi kondisi keseimbangan yang telah diputuskan oleh program. Jika nilai dx lebih besar dari nilai dy dan xa lebih kecil dari xb maka nilai dari penambahan pada x dan y adalah 1 dan m, jika perubahan yang lebih besar berada di dalam arah x, tetapi karena xa harus lebih besar dari xb, maka kurangkan x dengan -1 dan –m supaya dapat digunakan untuk menentukan beberapa titik-titik (pixel) increment atau decrement di dalam bagian y dan x, juga penambahan atau pengurangan dengan 1/m. kita anggap nilai yang diplot ada pada sstem bilivel-intensity supaya pemanfaatan fungsi putpixel mempunyai nilai intensity=1. Digital diferential analyzer merupakan suatu metode yang paling cepat untuk melakukan kalkulasi (menghitung) keberadaan posisi pixel dan digunakan untuk pengimplementasian DDA algoritma ke screen computer menggunakan Delphi dapat dirancang sebagai berikut ;
Procedure TFrom1.Button1Click(Sender Object);
Var dx,dy,fstep,f,x1,x2,y1,y2 : integer;
Deltax,deltay,x,y:real;
Begin
Dx:=(x2-x1);
Dy:=(y2-y1);
If(abs(dx)>abs(dy)) then fstep:=abs(dx)
Else fstep := abs(dy);
Deltax := dx/fstep;
Delta y:= dy/fstep;
Canvas.Pixels[trunk(x),trunk(y)] := clblue;
For f :=0 fstep-1 do
Begin
X := x +deltax;
Y:= y + deltay;
Canvas.Pixels[trunk(x),trunk(y)] := clblue;
End;
End;

ALGORITMA BRESENHAM
Algoritma bresenham merupakan suatu algoritma (pendekatan) yang dikreasikan oleh bresenham yang tidak kalah akurat dan efiesian dengan algoritma primitive lainnya (seperti DDA). Bagian pengonfersian (scan-konversi) garis akan melakukan kalkulasi untuk penambahan nilai-nilai integer (yang dibutuhkan untuk membentuk garis) yang disesuaikan dengan tipe grafik yang dipakai oleh layar computer (keadaan monitor PC) kita. Untuk proses scan-konversi untuk garis dengan slope positif yang lebih kecil dari 1. Posisi pixel sepanjang line-path kemudian di tentukan dengan penyampaian pada unit interval x. dimulai dari endpoint kiri (x0,y0) dari garis yang di berikan, 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. Secara sistematis pembentukan algoritma bresenham adalah sebagai berikut
Y=m(xk+1)+b (10)
Dimana d1=y-yk, dan disubtitusikan (10) kedalam d1;
D1=m(xk+1)+b-yk
Dimana d2=(yk-1)-y, dan disubtitusikan (10) ke dalam d2;
D2=yk+1-m(xk+1)-b
Kemudian d1-d2
D1-d2=2m(xk+1)-2yk+2b-1 (11)
Nilai parameter keputusan pk untuk langkah ke-k

0 comments:

Post a Comment

Share

Twitter Delicious Facebook Digg Stumbleupon Favorites More