Anda di halaman 1dari 24

Algoritma Garis

DDA dan Bressenham,


Algoritma Pembentuk Lingkaran Midpoint

Farah Zakiyah Rahmanti, M.T


September 2015

Teknik Informatika S1
Universitas Dian Nuswantoro Semarang
Overview
Garis
Bentuk Garis
Kuadran Garis
Gradien dan Persamaan Garis Lurus
Algoritma DDA
Algoritma Bresenhamm
Garis
Dinyatakan dengan 4 nilai : x1,y1,x2,y2
Koordinat / titik awal (x1,y1)
Koordinat / titik akhir (x2,y2)
ALGORITMA DDA
Algoritma Garis DDA
Int dx = x2-x1;
Int dy = y2-y1;
Int steps,k,x1,y1,x2,y2; For(k=0;k<steps;k++) {
Float x_inc, y_inc; x+=x_inc;
y+=y_inc;
Float x = x1;
setPixel(Round(x),Round(y));
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
Diketahui 2 buah titik A(10,10) dan titik
B(17,16) bila titik A sebagai titik awal dan
titik B sebagai titik akhir. Tentukan titik-titik
antara yang menghubungkan titik A dan
titik B sehingga membentuk garis AB
dengan menggunakan Algoritma DDA !
Jawab (1)
Titik awal = A(10,10)
Titik akhir = B(17,16)
Dx= X1-X0 = 17 10 = 7
Dy= Y1-Y0 = 16 10 = 6
Absolut (Dx) = 7
Absolut (Dy) = 6
Absolut (Dx) > absolute (Dy) maka steps = Absolut (Dx) = 7
X_increment = 7/7 = 1
Y_increment = 6/7 = 0,86

X1 = X + X_increment = 10 + 1 =11
Y1 = Y + Y_increment = 10 + 0,857 = 10,857 =11
Jawab (2)
K X Y X_incre Y_incre
- - - 10 10
0 11 10,857 11 11
1 12 11,71 12 12
2 13 12,57 13 13
3 14 13,43 14 13
4 15 14,28 15 14
5 16 15,14 16 15
6 17 16 17 16
Kelemahan DDA
Hanya dapat digunakan untuk nilai x1<x2 dan y1<y2
atau garis yang berada di kuadran I.

Menggunakan pembulatan sehingga kurang akurat.


ALGORITMA BRESENHAMM
Langkah-Langkah Algoritma
Bresenham
1. Tentukan dua titik yang akan dihubungkan dalam pembentukan
garis.
2. Tentukan salah satu sebagai titik awal (x0, y0) dan titik akhir (x1,
y1).
3. Hitung dx, dy, 2dy dan 2dy - 2dx
4. 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.
Source Code
void linebress(int xa,ya,xb,yb)
{ int dx = abs(xb-xa),dy=abs(yb-ya);
int p = 2*dy-dx, xEnd;
int duaDy = 2*dy, duaDyDx = 2*(dy-dx);
if(xa>xb)
{ x=xb; y=yb; xEnd=xa;}
else
{ x=xa; y=ya; xEnd=xb;}
SetPixel(x,y);
while(x<xEnd)
{ x++;
if(p<0)
p+=duaDy;
else
{ y++;
p+=duaDyDx; }
setPixel(x,y);
}
};
Contoh
Diketahui 2 buah titik A(10,10) dan titik
B(17,16) bila titik A sebagai titik awal dan
titik B sebagai titik akhir, tentukan titik-titik
antara yang menghubungkan titik A dan
titik B sehingga membentuk garis AB
dengan menggunakan algoritma
Bressenham.
Jawab (1)
Dx abs( X b X a ) abs(17 10) 7
D y abs(Yb Ya ) abs(16 10) 6

P 2 * D y Dx 2 * 6 7 5
twoD y 2 * D y 2 * 6 12
twoD y Dx 2 * ( D y Dx ) 2 * (6 7) 2
Jawab (2)
Jawab (3)

K Pk (Xk+1 , Yk+1)
- - 10,10
0 3 11,11
1 1 12,12
2 -1 13,13
3 11 14,13
4 9 15,14
5 7 16,15
6 5 17,16
ALGORITMA PEMBENTUK
LINGKARAN (MIDPOINT)
Algoritma Pembentuk Lingkaran
Midpoint
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 Midpoint
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
Sebuah lingkaran bertitik pusat di (0,0)
dan memiliki jari-jari 4. Tentukan titik-titik
pembentuk lingkaran tersebut !
Jawab
(xc,yc) = (0,0) ; r = 4
Posisi start awal x=0, y=4
Titik selanjutnya ?
p = 1-4 = -3, p < 0 jadi titik selanjutnya adalah
(1,4), p = -3+2(1)+1 = 0
p = 0, jadi p>=0 maka titik selanjutnya adalah (2,3),
p = 0+2(2-3)+1= -1
p = -1, jadi p < 0, maka titik selanjutnya adalah
(3,3), p = -1+2(3)+1 = 6
P = 6, jadi p > 0, maka titik selanjutnya adalah
(4,2)

Anda mungkin juga menyukai

  • Clustering K Means
    Clustering K Means
    Dokumen18 halaman
    Clustering K Means
    worldosc
    Belum ada peringkat
  • Size
    Size
    Dokumen1 halaman
    Size
    yusan12
    Belum ada peringkat
  • Cash Flow Quadrant
    Cash Flow Quadrant
    Dokumen25 halaman
    Cash Flow Quadrant
    nary store
    Belum ada peringkat
  • Fiverr
    Fiverr
    Dokumen30 halaman
    Fiverr
    yusan12
    Belum ada peringkat
  • Template Risk
    Template Risk
    Dokumen6 halaman
    Template Risk
    yusan12
    Belum ada peringkat
  • JURNAL
    JURNAL
    Dokumen5 halaman
    JURNAL
    yusan12
    Belum ada peringkat
  • Quis
    Quis
    Dokumen1 halaman
    Quis
    yusan12
    Belum ada peringkat
  • Template Teknofisika 2015 Rev04
    Template Teknofisika 2015 Rev04
    Dokumen4 halaman
    Template Teknofisika 2015 Rev04
    Fajrin Pramestiningrum
    Belum ada peringkat
  • Read Me
    Read Me
    Dokumen1 halaman
    Read Me
    yusan12
    Belum ada peringkat
  • Tugas I
    Tugas I
    Dokumen1 halaman
    Tugas I
    yusan12
    Belum ada peringkat
  • Modul 3
    Modul 3
    Dokumen8 halaman
    Modul 3
    yusan12
    Belum ada peringkat
  • Tatib - Sistim Elearning - Mhs PDF
    Tatib - Sistim Elearning - Mhs PDF
    Dokumen1 halaman
    Tatib - Sistim Elearning - Mhs PDF
    M Nur Imansyah
    Belum ada peringkat
  • Quis
    Quis
    Dokumen1 halaman
    Quis
    yusan12
    Belum ada peringkat
  • Quis 1234
    Quis 1234
    Dokumen1 halaman
    Quis 1234
    yusan12
    Belum ada peringkat
  • 02 Gerbang
    02 Gerbang
    Dokumen7 halaman
    02 Gerbang
    yusan12
    Belum ada peringkat
  • 02 AlgoritmaGaris
    02 AlgoritmaGaris
    Dokumen24 halaman
    02 AlgoritmaGaris
    yusan12
    Belum ada peringkat
  • PDF Kuliah
    PDF Kuliah
    Dokumen1 halaman
    PDF Kuliah
    yusan12
    Belum ada peringkat
  • Soal Clipping 2D
    Soal Clipping 2D
    Dokumen1 halaman
    Soal Clipping 2D
    yusan12
    Belum ada peringkat
  • Quis
    Quis
    Dokumen1 halaman
    Quis
    yusan12
    Belum ada peringkat
  • 02 AlgoritmaGaris
    02 AlgoritmaGaris
    Dokumen24 halaman
    02 AlgoritmaGaris
    yusan12
    Belum ada peringkat
  • Mat Disk
    Mat Disk
    Dokumen1 halaman
    Mat Disk
    yusan12
    Belum ada peringkat
  • Kurva Bezier
    Kurva Bezier
    Dokumen1 halaman
    Kurva Bezier
    yusan12
    Belum ada peringkat
  • Tugas Matdisk
    Tugas Matdisk
    Dokumen5 halaman
    Tugas Matdisk
    yusan12
    Belum ada peringkat