Art & Soul

by Sasriana Octavinia

Algoritma Fill Area

Primitif output standar pada software grafis umum adalah warna polygon solid dan warna polygon berpola. Jenis lain dari primitive area biasanya tersedia tapi polygon lebih mudah untuk diproses karena punya batas linear. Pada system raster, ada dua pendekatan dasar untuk mengisi area. Cara pertama adalah menentukan interval overlap untuk scan line yang menyebrangi area. Metode lainnya adalah memulai dari posisi interior lalu mewarnai sampai bertemu kondisi batas yang sudah dispesifikasikan.

 Scan-line Polygon Fill Algorithm

Ilustrasi prosedur scan line dapat dilihat pada gambar 4.x, Pada saat scan line berpotongan dengan polygon, algoritma area-fill tersebut akan mencara titik perpotongan antara scan line dengan batas polygon. Titik perpotongan tersebut kemudian diurutkan dari kiri ke kanan dan mengacu pada posisi frame buffer antara pasangan perpotongan diset dengan warna tertentu.

imk1

Gambar 4.x Ilustrasi prosedur scan line pada polygon cembung

 

Untuk polygon yang cekung Scan line mungkin akan berpotongan lebih dari sekali. Jika scan line berpotongan pada nomor genap suatu batas, Nomor genap suatu vertex perpotongan menghasilkan pasangan perpotongan yang akan diisi seperti pada polygon yang cembung. Ilustrasi metode ini dapat dilihat pada gambar 4.x

imk2

Gambar 4.x Ilustrasi prosedur scan line pada polygon cekung berpotongan genap

Scan line berpotongan pada nomor ganjil, tidak semua pasangan merupakan interior ada yang bersifat eksterior.

imk3

Gambar 4.x Ilustrasi prosedur scan line pada polygon cekung berpotongan ganjil

 

Maka untuk polygon cekung prosedur scan line dapat dimodifikasi sebagai berikut. Cari 2 perpotongan pada local minimum, atau cari hanya satu perpotongan. Algoritma untuk menentukan apakah hanya ada 1 atau 2 perpotongan adalah :

  1. Jika koordinat y bertambah atau berkurang secara monoton, tambahkan jumlah verteks dengan memperpendek edge.
  2. Jika tidak jumlah verteks jangan diubah

 

Boundary Fill Algorithm

Pendekatan lain untuk area filling adalah memulai dari suatu titik didalam region dan mewarnai interior keluar batas. Jika boundary dispesefikasikan dengan satu warna, fill algorithm diproses per piksel sampai warna boundary didapat. Algoritma ini menerima input koordinat titik interior (x,y), warna isi dan warna boundary. Mulai dari titik tersebut, prosedur akan menguji posisi tetangga untuk menentukan apakah posisi tersebut ada di boundary color. Jika tidak maka diwarnai dengan warna fill. Proses ini berlanjut sampai semua pixel yang ada pada boundary color diuji.

imk4

Gambar 4.x ilustrasi boundary fill algorithm

 

Metode untuk mencari titik tetangga tergantung dari berapa tetangga yang diuji, dapat dilihat pada gambar 4.x. Prosedur boundary algoritma untuk 4-connected (4 tetangga) adalah sebagai berikut :

imk5

Gambar 4.x Boundary fill algorithm

Ini adalah contoh algoritma fill area :

Procedure BoundaryFill (x,y,fill,boundary : Integer);

Var

Current : integer;

Begin

Current = getpixel(x,y);

If (Current<>boundary) and (Current<>fill) then

Begin

setpixel (x,y,fill);

Boundaryfill4(x+1,y,fill,boundary);

Boundaryfill4 (x-1,y,fill, boundary);

Boundaryfill4 (x,y+1,fill, boundary);

Boundaryfill4 (x,y-1,fill, boundary);

End;

End;

Kesimpulan :

Seteleh kita ketahui bahwa komponen dari fill are adalah warna polygon solid dan warna polygon berpola. Awal dari algoritma fill area adalah procedure boundary fill yang artinya algoritma diproses per piksel sampai warna boundary didapat, algoritma ini mempunyai titik interior yaitu x dan y yang artinya warna isi dan warna boundary. Var artinya memproses variabel x dan y pada procedure. Current integer menunjukkan sebuah karakternya kemana dia akan diproses. Begin untuk memulai proses pada perhitungan suatu program. Setpixel(x,y,fill); artinya mensetting berapa pixel yang akan diproses oleh program yaitu variabel x,y, dan fill. Boundaryfill4(x+1,y,fill,boundary); maksudnya pada statement boundaryfill4 berisikan perhitungan yaitu variabel x+1 yang akan menghasilkan warna terang begitu juga sebaliknya apabila perhitungan variabel x-1 maka akan menghasilkan warna gelap. End; untuk menstop jalanya program dan keluar dari program.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

Information

This entry was posted on October 10, 2014 by .
%d bloggers like this: