Scanline Polygon & Boundary Fill Arga
Scanline Polygon & Boundary Fill Arga
BOUNDARY FILL
Makalah ini disusun untuk memenuhi tugas mata kuliah grafika komputer,
Oleh :
Arga Alfisiar Putra G.231.18.0191
Puji dan syukur penulis panjatkan kepada Allah SWT, berkat rahmat dan
hidayah-Nyalah penulis dapat menyelesaikan penulisan makalah ini. Dalam
penulisan karya tulis ini penulis mengambil judul “ALGORITMA SCANLINE
POLYGON DAN BOUNDARY FILL.
Adapun maksud dan tujuan penulis dalam penyusunan karya tulis ini
yaitu untuk memenuhi salah satu tugas mata kuliah Grafika Komputer.
Dalam penyusunan karya tulis ini, tentunya penulis pernah mengalami
berbagai hambatan, namun berkat bimbingan dari pembimbing dan tentunya
dukungan dari orang tua dan rekan-rekan, akhirnya karya tulis ini dapat
terselesaikan. Untuk itu penulis mengucapkan terimakasih kepada semua yang
ikut terlibat dalam penyusunan karya tulis ini serta rekan-rekan dari Jurusan
Teknik Informatika Universitas Semarang (USM).
Penulis menyadari sepenuhnya bahwa dalam penyusunan karya tulis ini
jauh dari sempurna, baik dalam penyusunan materi maupun bentuknya. Hal ini
karena penulis masih dalam tahap pembelajaran, untuk itu penulis
mengharapkan saran serta kritik yang membangun guna kebaikan penulis
dimasa yang akan datang.
Penulis berharap karya tulis ini mudah-mudahan bermanfaat bagi
pembaca. Khususnya bagi mahasiswa dalam upaya meningkatkan
kemampuan akademisnya.
Penulis
i
Polygon
Polygon adalah kumpulan garis lurus yang saling menyambung
hingga membentuk suatu luasan. Garis-garis ini disebut edge
(sisi polygon). Titik pertemuan tiap dua sisi disebut verteks.
Biasanya polygon dinyatakan dengan koordinat verteks-verteks
ini. Ada dua jenis polygon yaitu polygon sederhana dan polygon
tidak sederhana. Ciri polygon sederhana adalah tidak semua
verteks berada pada bidang yang sama, tidak mempunyai sisi-
sisi yang berpotongan, dan tidak mempunyai lubang.
2
(a)
3
Gambar 3. 13 : Permukaan bola, torus dan teko yang terbentuk dari banyak
polygon.
1. Filling Polygon
Dalam grafis, pemberian warna dibutuhkan untuk
mempercantik tampilan polygon. Karena itu diperlukan
algoritma khusus untuk mengisi warna pada polygon tersebut.
Teknik atau algoritma untuk pengisian warna pada polygon
disebut filling polygon atau area filling. Ada dua macam dasar
pendekatan filling polygon pada sistem raster yaitu scan-line
Polygon Fill Algorithm dan Boundary-Fill Algorithm:
4
untuk pengisian warna pada obyek-obyek sederhana lainnya,
misalnya lingkaran, ellip dan lain-lain.
Scanline
terakhir
Titik potong Titik potong
x1 x2
Piksel-piksel diantara
titik potong x1-x2
Scanline
pertama
Inside-Outside test
5
paritas ganjil
paritas genap
Masalah:
6
a
c 2
2
b d 1
(a)
a
c
b d
(b)
Solusi:
7
panahnya berubah (pada verteks b dan c yaitu: naik-turun atau
turun-naik) maka pada verteks tersebut dihitung dua kali.
Sebaliknya jika arah anak panahnya tidak berubah (pada verteks
a dan d yaitu: naik-naik atau turun-turun) maka pada verteks
tersebut dihitung sekali.
Masalah:
(a) (b)
Gambar 3. 17 Polygon dengan sisi-sisi horisontal
Solusi:
8
Algoritma scanline menggunakan kaidah paritas ganjil-genap:
Solusi:
Menggunakan konsep edge table (ET)
Edge Table ( ET ), edge table (ET) adalah tabel yang berisi sisi-
sisi polygon. Kita akan menggunakan dua edge table yang
berbeda, yaitu: Active Edge Table (AET) dan Global Edge Table
(GET). (AET) digunakan untuk menyimpan semua sisi polygon
yang berpotongan dengan garis scan, sedangkan GET
digunakan untuk menyimpan semua sisi polygon dan meng-
update AET.
(x@ymax,ymax)
(x@ymin,ymin)
9
Kita tahu bahwa:
ymax ymin
y mx b, m
x@ y max x@ y min
yi1 yi 1
yb
x
m
Sehingga,
yi b yi1 b
xi , xi1
m m
Dan
yi1 yi 1
Maka
yi 1 b yi b 1 1
xi1 x i
m m m m
10
Ini adalah cara yang efisien untuk menghitung nilai x.
11
3. Inisialisasi, set AET = kosong
4. Ulang sampai AET dan GET kosong
a. Tambahkan sisi-sisi dari GET ke AET yang mana ymin =
y.
b. Hilangkan sisi-sisi dari AET bila ymax = y.
c. Urutkan AET berdasarkan x
d. Warnai piksel yang terletak diantara pasangan titik
potong dalam AET
e. Untuk setiap sisi dalam AET, ganti x dengan x + 1/m
f. Set y = y + 1 untuk bergerak ke garis scan berikutnya
Contoh 2.10
Diketahui polygon berikut, gunakan konsep edge table untuk
mewarnai polygon tersebut.
Gambar 3. 18
12
Sisi-sisi pembentuk polygon:
Gambar 3. 19
13
Gambar 3. 20
ymax, x,1/m
4, 2, −2/3 5, 2, 1/4
xkiri = 2 xkanan = 2
14
Gambar 3. 21
Gambar 3. 22
ymax, x,1/m
EA
15
Gambar 3. 23
Gambar 3. 24
ymax, x,1/m
EA
16
Gambar 3. 25
Gambar 3. 26
ymax, x,1/m
EA = DE AB
17
Pewarnaan dilakukan diantara titik potong (xkiri − xkanan) = (0 − 3),
hasilnya adalah
Gambar 3. 27
Gambar 3. 28
ymax, x,1/m
8, 3/4 , 3/4 6, 3, 3
DE AB = BC
Gambar 3. 29
Gambar 3. 30
ymax, x,1/m
BC = CD
pada BC, ymax = 6. BC harus
xi+1 = xi + 1/m dihapus dari AET. Dalam GET sisi
CD tersimpan pada y = 6. Jadi sisi
BC diganti dengan sisi CD
19
Pewarnaan dilakukan diantara titik potong (xkiri − xkanan) = (2 − 6),
hasilnya adalah;
Gambar 3. 31
Gambar 3. 32
ymax, x,1/m
DE
19
Pewarnaan dilakukan diantara titik potong (xkiri − xkanan) = (2 − 5),
hasilnya adalah;
Gambar 3. 33
Gambar 3. 34
ymax, x,1/m
8, 3, 3/4 8, 3, −3/2
DE CD
=3 =3
xkiri = 3 dan xkanan = 3
20
Pewarnaan dilakukan diantara titik potong (xkiri − xkanan) = (3 − 3),
hasilnya adalah;
Gambar 3. 35
Karena sisi polygon dalam GET ataupun AET sudah habis, maka
proses dihentikan.
21
Dengan teknik ini pengisian warna dimulai dari sebuah titik yang
berada didalam area (x,y) polygon dan mewarnai piksel dari titik
tetangganya hingga semua piksel yang berada didalam polygon
telah diwarnai seperti pada Gambar 2.20.
22
a) 4 - tetangga
4 X 2
Gambar 3. 37
b) 8 - tetangga
1 2 3
8 X 4
7 6 5
Gambar 3. 38
Contoh 2.11
diketahui : polygon = {(1,1), (2,,5), (5,4), (8,7), (10,4), (10,2), (1,1)},
lakukan Area Filling menggunakan algoritma Boundary Fill
Algorithm 4-tetangga.
Jawab:
23
1 2 3 4 5 6 7 8 9 10 11
Gambar 3. 39
1 2 3 4 5 6 7 8 9 10 11
Gambar 3. 40
24
Ke-4 tetangga tersebut bukan garis batas poligon, sehingga 4-
titik tersebut diwarnai merah.
3 4 5 6 9 10 11
Gambar 3. 41
25
2 3 4 5 7 8 9 10 11
Gambar 3. 42
Ambil titik (3,4). 4-tetangga titik tersebut adalah (3,3), (3,5), (2,4),
(4,4). Titik (3,3) sudah diwarnai. Titik (3,5), (2,4) dan (4,4) adalah
garis batas jadi tidak diwarnai.
26
1 2 6 7 9 10 11
Gambar 3. 43
27