Rangkuman Pertemuan 7 Grafik Komputer
Scan Converting : Ellips and Polygon Filling
Algoritma Bresenham untuk Ellipse
- Ellipse : F (x, y) = b2 x2 + a2 y2 – a2 b2 = 0
- Gradien F (x, y) = dF/δx. i + dF/dy. j
= 2b2x i + 2a2y j
- If a2(yp-1/2) £ b2(xp+1), ganti dari region 1 ke region 2
Region 1
- Titik tengah pertama ada di (xp+1, yp-1/2)
- Jika posisi awal (xp, yp) dari sebuah elips adalah (0, b)
o d lama (awal) = F(1,b-1/2) = b2 + a2(b-1/2)2 – a2b2
= b2 – a2b+a2/4
- Kasus E,
o d baru = F(xp+2,yp-1/2) = d old + b2(2xp+3)
- Kasus SE,
o d baru = F(xp+2,yp-3/2) = d old + b2(2xp+3) + 2a2(1- yp)
Region 2
- Titik tengah adad di (xp+1/2, yp-1)
o d lama (awal) = F(xp+1/2,yp-1) = b2(xp+1/2)2 + a2(yp-1)2 – a2b2
- Kasus SE,
o d baru = d old + b2(2xp+2) + a2(3-2yp)
o xp = xp + 1
o yp =yp – 1
- Kasus S,
o d baru = d old + a2(3 – 2yp)
o yp = yp – 1
Mendefinisikan dan mengisi region dari pixel-pixel
Metode dari mendefinisikan region
- Pixel-defined: menspesifiksikan pixel dalam warna dan jarak geometris.
- Simbolis: menyediakan sifat-sifat (property) pixel dalam region.
- Contoh dari simbolis:
o Berada di dalam lingkaran dengan radius R
o Berada dalam poligon yang spesifik
o Kedekatan terhadap beberapa pixel
Pixel-Defined Regions
- Definisi : Region R adalah himpunan dari semua pixel yang mempunyai warna C yang terhubung dengan sebuah pixel S yang diberikan.
- 4-adjacent : pixel-pixel yang terletak setelah yang lainnya secara horizontal atau vertikal, tidak secara diagonal.
- 8-adjacent : pixel-pixel yang terletak setelah yang lainnya secara horizontal, vertikal, atau diagonal.
- 4-connected : jika terdapat sebuah jalur yang tidak terputus dari pixel-pixel 4-adjacent yang menghubungkannya.
- 8-connected : jalur yang tidak terputus dari pixel-pixel 8-adjacent yang menghubungkannya.
4 dan 8-Connectivity
Algoritma Recursive-Flood Fill
- Merupakan sebuah algoritma rekursif
- Dimulai dari pixel inisial dari warna intColor
- Tentukan tetangga 4-connected ke newColor secara rekursif.
- Flood-Fill : floods region dengan newColor
- Ide dasar:
o Mulai dari pixel (x, y)
o Jika (x, y) mempunyai warna intColor, ubah warna tersebut menjadi newColor
o Lakukan hal yang sama untuk semua tetangga secara rekursif.
- Pada recursive flood-fill biasanya beberapa pixel di-test ulang beberapa kali sebelum algoritma berakhir.
- Hubungan (coherence) antar region dapat digunakan untuk meningkatkan performa.
Region Filling Using Coherence
- Pixel-pixel interior pada scan-line dapat diorganisir ke dalam spans (rentang), atau grup-grup dari pixel interior.
- Tiap span diubah dari point mulai yang paling kiri.
- Saat sebuah span diubah, starting pixel dari tetangganya dan span-span yang tidak diproses diidentifikasi dan di-push ke dalam stack.
- Semua span diproses dalam sebuah recursive depth-first order.
Rangkuman Pertemuan 8 Grafik Komputer
Scan Converting : Polygon Filling
Polygon Scan-Conversion
Potong garis scan dengan edge-edge polygon dan mengisi diantara sepasang perpotongan.
Untuk y = ymin to ymax
- Potong garis scan y dengan tiap edge
- Urutkan perpotongan dengan x menaik [p0,p1,p2,p3]
- Isi pair-wise (p0 > p1, p2 >p3, …)
Special Handling
- Perpotongan adalah sebuah edge end point, dikatakan: (p0, p1, p2)
- (p0, p1, p2), sehingga kita tetap dapat mengisi pair-wise
- Pada kenyataanya, jika kita menghitung perpotongan dari garis scan dengan edge e1 dan e2 secara terpisah, kita akan mendapatkan point perpotongan p1 sebanyak 2 kali.
- Tapi bagaimana dengan contoh kasus yang 1 ini : (p0, p1, p2, p3)
Rules (Aturan)
Aturan:
Jika perpotongan adalah ymin dari sebuah edge end point, hitung perpotongan tersebut. Tetapi selain dari itu, jangan dihitung.
Dari kasus di atas: jangan hitung p1 untuk e2
Peningkatan Performa
- Tujuannya adalah menghitung perpotongan-perotongan dengan lebih efisien. Brute force: potong semua edge dengan setiap garis scan.
o Temukan ymin dan ymax untuk tiap edge dan potong edge hanya saat dia melewati garis scan.
o Hanya hitung perpotongan dari edge dengan garis scan pertama kali dia memotong.
o Hitung dx/dy
o Untuk setiap penambahan garis scan, hitung perpotongan yang baru dengan x = x + dx/dy
Tabel Edge
Tabel Edge yang Aktif
Daftar dari edge-egde yang aktif untuk arus garis scan, diurutkan dalam x yang menaik/meningkat.
Algoritma Polygon Scan-Conversion
Construct the Edge Table (ET);
Active Edge Table (AET) = null;
for y = Ymin to Ymax
Merge-sort ET[y] into AET by x value
Fill between pairs of x in AET
for each edge in AET
if edge.ymax = y
remove edge from AET
else
edge.x = edge.x + dx/dy
sort AET by x value
end scan_fill
Kelompok:
Danu Kurniawan 1100030660
Toddy Prasetyo 1100031083
Yuditra Carolus P. 1100031152
Valentinus Ricky A. 1100031171
Bramono Wicaksono 1100032426
Even 1100032653
Kent Hakiki 1100031631

