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
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
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
Posting Komentar