Materi Grafika Komputer Pertemuan Ke-11

ALGORITHMA CLIPPING COHEN-SUTHERLAND


Clipping
 Clipping adalah metoda untuk hanya menampilkan garis pada area yang visible (terlihat)

Visible dan Invisible Line

 Berdasarkan posisi garis terhadap area gambar maka garis dapat dibedakan menjadi :

 Bagaimana menentukan visible dan invisible line? 
     fully visible : (x1 ≥ xmin) dan (x1 ≤ xmax) 
                              dan (y1 ≥ ymin) dan (y1 ≤ ymax) 
                              dan (x2 ≥ xmin) dan (x2 ≤ xmax) 
                              dan (y2 ≥ ymin) dan (y2 ≤ ymax) 
      partially visible : -- coba sendiri dan anda akan menemukan bahwa tidak mudah melakukan hal tersebut ! --

Algorithma Clipping 
 Berbagai algorithma telah dikembangkan untuk menangani masalah pemotongan garis tersebut, antara lain : 
                     Cyrus-Beck 
                     Cohen-Sutherland

Algorithma Cohen-Sutherland 
 Area gambar dibatasi oleh xmin,xmax, ymin,ymax
 Cohen dan Sutherland memberikan kode kepada tiap area yang mungkin dilewati oleh sebuah garis atau disebut sebagai region code. 




 Region code mempunyai panjang empat bit dan menggunakan urutan sebagai berikut :
T(op) = 1 jika ujung garis berada di atas area gambar selain itu 0 (nol) 
B(ottom) = 1 jika ujung garis berada di bawah area gambar selain itu 0 (nol) 
L(eft) = 1 jika ujung garis berada di kiri area gambar selain itu 0 (nol) 
R(ight) = 1 jika ujung garis berada di kanan area gambar selain itu 0 (nol)

 Sehingga diperoleh region code :
 Garis kemungkinan partially visible atau fully invisible apabila region code dari ujung garis tersebut mempunyai bit bernilai 1

Region Code dari Pa = 0001 
Region Code dari Pb = 0010 

Region Code dari Qc = 1001 
Region Code dari Qd = 0110 

Region Code dari Re = 0100 
Region Code dari Rf = 0000

 Pemotongan (clipping) dilakukan terhadap ujung-ujung garis yang region code berisi bit bernilai 1. 
 Contoh sebelumnya menunjukkan bahwa ujung Pa, Pb, Qc,Qd dan Re yang akan mengalami pemotongan.
Ujung garis Pa 
Region code Pa =1000 
Pa berpotongan dengan garis ymax sehingga menghasilkan titik potong p1 (x1,ymax) 

Ujung garis Pb 
Region code Pb = 0010 
Pb berpotongan dengan garis xmax sehingga menghasilkan titik potong p2 (xmax,y1)

 Dengan menggunakan cara yang sama maka lokasi titik potong untuk tiap area akan sesuai tabel di bawah ini :

 Koordinat titik potong dapat dicari dengan cara :
 Contoh 
• Diketahui : area gambar : (1,2)-(5,5) 
• Ditanyakan :  lokasi titik potong dari garis P (2,1) - (4,6) terhadap area gambar 
                         lokasi titik potong dari garis S (2,6) - (6,3)

m = (y2-y1) / (x2-x1) 
    = (6-1) / (4-2) = 5/2 =2,5 

Ujung garis Pa 
Region code Pa = 0100 
Ujung Pa berpotongan dengan garis ymin sehingga 
 p = x1+(ymin - y1) / m 
 p = 2 + (2 - 1) / 2,5 = 2,4 
Jadi lokasi titik potong 
 p = (2,4;2)



Ujung garis Pb 
Region code Pb = 1000 
Ujung Pb berpotongan dengan garis ymax sehingga 
 q = x1+(ymax - y1) / m 
 q = 2 + (5 - 1) / 2,5 = 3,6 

Jadi lokasi titik potong q = (3,6;5) 
Dengan demikian garis P akan di gambar dari p ke q atau dari (2,4;2) menuju (3,6;5) 



m = (y2-y1) / (x2-x1) 
    = (3-6) / (6-2) = -3/4 = -0,75 

Ujung garis Sa 
Region code Pa = 1000 
Ujung Sa berpotongan dengan garis ymax sehingga 
 p = x1+(ymax - y1) / m 
 p = 2 + (5 - 1) / -0,75 = 3,3 
Jadi lokasi titik potong p = (3,3;5)

Ujung garis Sb 
Region code Sb = 0010 

Ujung Sb berpotongan dengan garis xmax sehingga 
 q = y1+ m * (xmax - x1) 
 q = 6 + (-0,75) * (5 - 2) = 3,75 
Jadi lokasi titik potong q = (5;3,75) 
Dengan demikian garis S akan di gambar dari p ke q atau dari (3,3;5) menuju (5;3,75)

 Untuk ujung-ujung garis dengan region code berisi bit 1 maka ada tiga kemungkinan perpotongan antara garis P dengan area gambar


Apabila ditemukan lebih dari satu titik potong maka pilih titik potong yang paling "dekat" dengan area gambar. 
 Bagaimana pengertian "dekat" didefinisikan?  Tugas anda mendefinisikan pengertian "dekat" tersebut!

 Algorithma Cohen-Sutherland dapat dituliskan sebagai berikut : 

Ambil ujung pertama (Pa) dari garis P rc = Tentukan Region Code dari Pa switch (rc) 
0 : p = Pa 
1 : p = (xmin,yp1) 
2 : p = (xmax,yp2) 
4 : p = (xp2,ymin) 
5 : p1 = (xp2,ymin) ; p2 = (xmin,yp1) 
          = Tentukan mana yang lebih dekat antara p1 & p2 
6 : p1 = (xp2,ymin) ; p2 = (xmax,yp2) p 
          = Tentukan mana yang lebih dekat antara p1 & p2 
8 : p = (xp1,ymax) 
9 : p1 = (xp1,ymax) ; p2 = (xmin,yp1) p 
          = Tentukan mana yang lebih dekat antara p1 & p2 
10 : p1 = (xp2,ymax) ; p2 = (xmin,yp1) p  
            = Tentukan mana yang lebih dekat antara p1 & p2

Ambil ujung kedua (Pb) dari garis P rc = Tentukan Region Code dari Pb switch (rc) 
0 : q = Pb 
1 : q = (xmin,yp1) 
2 : q = (xmax,yp2) 
4 : q = (xp2,ymin) 
5 : p1 = (xp2,ymin) ; p2 = (xmin,yp1) q  
          = Tentukan mana yang lebih dekat antara p1 & p2 
6 : p1 = (xp2,ymin) ; p2 = (xmax,yp2) q 
          = Tentukan mana yang lebih dekat antara p1 & p2 
8 : p1 = (xp1,ymax) 
9 : p1 = (xp1,ymax) ; p2 = (xmin,yp1) q 
          = Tentukan mana yang lebih dekat antara p1 & p2 
10 : p1 = (xp2,ymax) ; p2 = (xmin,yp1) q 
            = Tentukan mana yang lebih dekat antara p1 & p2 Gambar garis dari p menuju q


0 komentar:

Copyright © 2013 Sulhansubs