Implementasi Algoritma Garis dan Lingkaran Dengan Bahasa Pemrograman

1. Algoritma DDA ( Digital Differential Analyzer )
Yaitu sebuah algoritma sederhana untuk menggambar garis, garis di kelompokkan ke dalam 3 bentuk: mendatar, cenderung tegak dan miring 45 derajat.
Nilai untuk gradien : m>1, m=1, 0<m<1
Contoh Algoritma DDA

Int dx = x2-x1;
Int dy = y2-y1;
Int steps,k,x1,y1,x2,y2;
Float x_inc, y_inc;
Float x = x1;
Float y = y1;

If (abs(dx)>abs(dy)) steps = abs(dx) else steps = abs(dy);

X_inc = dx/(float)steps;
Y_inc = dy/(float)steps;

setPixel(Round(x),Round(y));

Contoh hasil dari implementasi program yang menggunakan algoritma DDA dengan bahasa pemrograman java















Hasil dari implementasi program di atas seperti berikut :















2. Algoritma Bresenham

Langkah-langkah pembentukan garis berdasarkan algoritma Bressenham adalah:
1.  Tentukan dua titik yang akan dihubungkan dalam pembentukan garis.
2.  Tentukan salah satu sebagai titik awal (x0, y0) dan titik akhir (x1, y1).
Hitung dx,  dy, 2dy  dan 2dy - 2dx
Hitung parameter : po = 2dy - dx
5.   Untuk setiap xk sepanjang jalur garis, dimulai dengan k=0
      -  bila  pk < 0   maka titik selanjutnya adalah:
(xk+1, yk)  dan  pk+1 = pk + 2dy
      -  bila tidak, titik selanjutnya adalah:
(xk+1, yk+1)  dan  pk+1 = pk + 2dy – 2dx
6.   Ulangi nomor 5 untuk menentukan posisi pixel berikutnya, sampai
      x = x1  atau  y = y1.
Contoh hasil dari implementasi program yang menggunakan algoritma Bresenham dengan bahasa pemrograman java














Hasil dari implementasi program di atas seperti berikut :















3. Algoritma Pembentuk Lingkaran













Berdasarkan persamaan lingkaran
r2 = x2 + y2
Didapatkan fungsi lingkaran
f(x,y) = x2 + y2 - r2
f < 0, jika (x,y) di dalam batas lingkaran
f = 0, jika (x,y) tepat pada batas lingkaran
f > 0, jika (x,y) di luar batas lingkaran

Titik awal (xk, yk)
Titik selanjutnya (xk+1, yk) atau (xk+1, yk-1), ambil tengahnya (xk+1, yk-1/2)
pk = f (xk+1, yk-1/2)
pk = (xk+1)2 + (yk-1/2) 2 – r2
pk < 0, midpoint berada di dalam lingkaran, jika tidak midpoint di luar, pilih pixel di yk-1

Posisi start awal : (x0,y0) = (0,r)
p0 = f(x0+1, y0-1/2)
p0 = f(1, r-1/2)
p0 = 1+(r-1/2)2-r2
p0 = 5/4 – r, karena nilai r integer maka dibulatkan menjadi :
p0 = 1 – r

Langkah- langkah Mid Point
Input r dan titik tengah lingkaran (xc,yc) dan posisi start awal (x0,y0) = (0,r)
Hitung p awal  (p=1-r)
Untuk tiap xk, k=0, ulangi sampai x <= y
Jika pk < 0, (xk+1,yk), pk+1=pk+2xk+1+1
Jika tidak, (xk+1,yk-1), pk+1=pk+2(xk+1-yk+1) + 1 
Tentukan titik simetri di tujuh oktan yang lain 
Pindahkan semua titik pixel (x,y) ke posisi dengan pusat (xc,yc) 
x=x+xc
y=y+yc
Contoh hasil dari implementasi program yang menggunakan algoritma pembentuk lingkaran dengan bahasa pemrograman java














Hasil dari implementasi program di atas seperti berikut :














Sekian dan terimakasih, Semoga bermanfaat

Komentar

Postingan populer dari blog ini

3D Viewing & Projection