Clipping Line Menggunakan Algoritma Cohen

Download Report

Transcript Clipping Line Menggunakan Algoritma Cohen

Clipping Line Menggunakan
Algoritma Cohen-Sutherland
Contoh Real
Clipping Line Menggunakan Algoritma
Cohen-Sutherland
• Algoritma Cohen-Sutherland merupakan metode
untuk menentukan apakah sebuah garis perlu
dipotong atau tidak dan memetukan titik potong
garis.
• Area gambar didefinisikan sebagai sebuah area
segiempat yang dibatasi oleh xmin dan xmax,
ymin dan ymax.
• Setiap ujung garis diberi kode 4 bit dan disebut
sebagai region code. Region code
ditentukan berdasarkan area dimana ujung
garis tersebut berada
Susunan Region Code
Bit ke
0
Region Bit
L
Isi
1 apabila x < xmin
0 apabila x ≥ xmin
1
R
1 apabila x > xmax
0 apabila x ≤ xmax
2
B
1 apabila y < ymin
0 apabila y ≥ ymin
3
T
1 apabila y > ymax
0 apabila y ≤ ymax
Arti region code
Region Code
0000
0001
0010
Arti
Terletak di dalam viewport
Terletak di sebelah kiri viewport
Terletak di sebelah kanan viewport
0100
Terletak di sebelah bawah viewport
0101
Terletak di sebelah kiri bawah viewport
0110
Terletak di sebelah kanan bawah viewport
1000
1001
Terletak di sebelah atas viewport
Terletak di sebelah kiri atas viewport
1010
Terletak di sebelah kanan atas viewport&
Contoh
Keterangan Gambar :
Xmax = 6
Xmin = -6
Ymax = 6
Ymin = -6
1.
3.
2.
4.
Garis AB (1,2)(4,4)
Garis EF (4,-8)(9,-4)
Garis CD (-5,3)(-1,7)
Garis GH (-7,-4)(-2,-7)
Region Code AB
1. Garis AB
Verteks A (1,2)
L
=
0
→
Karena X > Xmin yaitu 1 > -6
R
=
0
→
Karena X < Xmax yaitu 1 < 6
B
=
0
→
Karena Y > Ymin yaitu 2 > -6
T
=
0
→
Karena Y < Ymax yaitu 2 < 6
Sehingga region code dari verteks A adalah 0000
Verteks B (4,4)
L
=
0
→
Karena X > Xmin yaitu 4 > -6
R
=
0
→
Karena X < Xmax yaitu 4 < 6
B
=
0
→
Karena Y > Ymin yaitu 4 > -6
T
=
0
→
Karena Y < Ymax yaitu 4 < 6
Sehingga region code dari verteks B adalah 0000
Kesimpulan
• Karena region code dari kedua verteks A dan B
adalah 0000 maka garis AB bersifat Fully
Visible (Garis yang terlihat seluruhnya)
sehingga garis tidak perlu dipotong. Dengan
melakukan operasi AND juga dapat dibuktikan
bahwa kedua verteks terletak dalam viewport
dan akan ditampilkan seluruhnya (0000 AND
0000 = 0000).
Region Code CD
•
•
•
•
•
•
•
•
•
•
•
•
•
2. Garis CD
Verteks C (-5,3)
L
=
0
→
Karena X > Xmin yaitu -5 > -6
R
=
0
→
Karena X < Xmax yaitu -5 < 6
B
=
0
→
Karena Y > Ymin yaitu 3 > -6
T
=
0
→
Karena Y < Ymax yaitu 3 < 6
Sehingga region code dari verteks C adalah 0000
Verteks D (-1,7)
L
=
0
→
Karena X > Xmin yaitu -1 > -6
R
=
0
→
Karena X < Xmax yaitu -1 < 6
B
=
0
→
Karena Y > Ymin yaitu 7 > -6
T
=
1
→
Karena Y < Ymax yaitu 7 > 6
Sehingga region code dari verteks D adalah 1000
Kesimpulan
Karena ada salah satu verteks dari garis CD yang
region codenya tidak 0000 (yaitu verteks D),
maka garis CD kemungkinan bersifat Partially
Visible (Garis yang hanya terlihat sebagian) dan
perlu dipotong. Sama seperti garis AB, garis CD
pun dapat dibuktikan dengan operasi AND, yaitu
0000 AND 1000 = 0000.
Menetukan Titik Potong
• Titik potong dihitung berdasarkan bit=1 dari
region code dengan menggunakan panduan
tabel berikut:
Region Bit
Berpotongan dengan
Dicari
Titik Potong
L=1
xmin
yp1
(xmin,yp1)
R=1
xmax
yp2
(xmax,yp2)
B=1
Ymin
xp1
(xp1,ymin)
T=1
ymax
xp2
(xp2,ymax)
• Dengan xp1, xp2, yp1, dan yp2 dihitung menggunakan
persamaan berikut ini:
• Titik potong pada garis CD (-5,3)(-1,7)
Region code 1000 untuk verteks D(-1,7)
• T = 1 → Karena T=1, maka yang dicari adalah xp2.
• Maka titik potongnya adalah (xp2, ymax) → (2, 6)
Region Code EF
•
•
•
•
•
•
•
•
•
•
•
•
•
3. Garis EF
Verteks E (4,-8)
L
=
0
→
Karena X > Xmin yaitu 4 > -6
R
=
0
→
Karena X < Xmax yaitu 4 < 6
B
=
1
→
Karena Y < Ymin yaitu -8 < -6
T
=
0
→
Karena Y < Ymax yaitu -8 < 6
Sehingga region code dari verteks E adalah 0100
Verteks F (9,-4)
L
=
0
→
Karena X > Xmin yaitu 9 > -6
R
=
1
→
Karena X < Xmax yaitu 9 > 6
B
=
0
→
Karena Y > Ymin yaitu -4 > -6
T
=
0
→
Karena Y < Ymax yaitu -4 < 6
Sehingga region code dari verteks F adalah 0010
Kesimpulan
• Karena region code dari kedua verteks tidak
0000 , maka garis CD bersifat Fully
Invisible(Garis yang tidak terlihat sama sekali),
jadi garis tidak perlu digambar. Hal ini juga
dapat dibuktikan dengan à 0100 AND 0110
= 0100
Region Code GH
4. Garis GH
Verteks G (-7,-4)
L
=
1
→
Karena X < Xmin yaitu -7 < -6
R
=
0
→
Karena X < Xmax yaitu -7 < 6
B
=
0
→
Karena Y > Ymin yaitu -4 > -6
T
=
0
→
Karena Y < Ymax yaitu -4 < 6
Sehingga region code dari verteks G adalah 0001
Verteks H (-2,-7)
L
=
0
→
Karena X Xmin yaitu -2 > -6
R
=
0
→
Karena X Xmax yaitu -2 < 6
B
=
1
→
Karena Y Ymin yaitu -7 < -6
T
=
0
→
Karena Y Ymax yaitu -7 < 6
Sehingga region code dari verteks A adalah 0100
Kesimpulan
• Kedua verteks dari garis GH tidak mempunyai
region code 0000. Tetapi jika kedua verteks
dilakukan operasi AND, maka akan
menghasilkan region code 0000. (0001 AND
0100 = 0000)
- Titik potong pada garis GH (-7,-4)(-2,-7)
- Region code 0001 untuk verteks G(-7,-4)
L = 1 → Karena L=1, maka yang dicari adalah yp1.
Maka titik potongnya adalah (xmin, yp1) → (-6, -4.6)
- Region code 0100 untuk verteks H(-2,-7)
B = 1 → Karena B=1, maka yang dicari adalah xp1.
Maka titik potongnya adalah (xp1, ymin) → (-3.67, -6)
• » Ada 2 titik potong pada garis GH yaitu (-6, -4.6) dan (-3.67, -6)