· Line Clipping
Clipping yaitu teknik memotong sebagian bentuk agar terlihat dilayar/ area tertentu, ukuran bentuk yang terlalu besar kadang tidak cukup untuk di perlihatkan seluruhnya.
Ini ada beberapa teknik line clipping diantaranya sebagai berikut :
1. Cohen-Sutherland Line Clipping
2. Liang-Barsky Line Clipping
3. Blinn’s Line Clipping
Adapun teknik yang di gunakan sebagai contoh adalah algoritma Cohen-Sutherland Line clipping :
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.

| L | 1 apabila x <> 0 apabila x ≥ xmin |
| R | 1 apabila x > xmax 0 apabila x ≤ xmax |
| B | 1 apabila y <> 0 apabila y ≥ ymin |
| T | 1 apabila y > ymax 0 apabila y ≤ ymax |
| Region Code | Arti |
| 0000 | Terletak di dalam viewport |
| 0001 | Terletak di sebelah kiri viewport |
| 0010 | 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 | Terletak di sebelah atas viewport |
| 1001 | Terletak di sebelah kiri atas viewport |
| 1010 | Terletak di sebelah kanan atas viewport |
Keterangan Gambar :
Xmax = 7 Ymax = 7
Xmin = -7 Ymin = -7
Garis AB (2,3) (5,3) Garis EF (-8,-5) (-3,-8)
Garis CD(-9,3) (4,3) Garis GH (3,-8) (7,-8)
Ø Menentukan Region code dari masing- masing garis :
1. Garis AB
Verteks A= (2,3)
| L | = | 0 | → | Karena X > Xmin = 2 > -7 |
| R | = | 0 | → | Karena X < xmax =" 2"> |
| B | = | 0 | → | Karena Y > Ymin = 3 > -7 |
| T | = | 0 | → | Karena Y < ymax =" 3"> |
Jadi Region code dari vertex A adalah 0000
Verteks B = (5,3)
| L | = | 0 | → | Karena X > Xmin = 5 > -7 |
| R | = | 0 | → | Karena X < xmax =" 5"> |
| B | = | 0 | → | Karena Y > Ymin = 3 > -7 |
| T | = | 0 | → | Karena Y < ymax =" 3"> |
Jadi Region code dari vertex B adalah 0000
Kesimpulan : Karena Region code dari verteks A dan B adalah 0000, maka garis AB bersifat Fully Visible. Maka dapat dibuktikan bahwa garis AB terletak dalam viewport secara keseluruhan dengan menggunakan operasi AND (0000 AND 0000 = 0000).
2. Garis CD
Verteks C (-9,3)
| L | = | 1 | → | Karena X < xmin =" -9"> |
| R | = | 0 | → | Karena X < xmax =" -9"> |
| B | = | 0 | → | Karena Y > Ymin = 3 > -7 |
| T | = | 0 | → | Karena Y < ymax =" 3"> |
Jadi Region code dari vertex C adalah 1000
Verteks D(4,3)
| L | = | 0 | → | Karena X > Xmin = 4 < -7 |
| R | = | 0 | → | Karena X < xmax =" 4"> |
| B | = | 0 | → | Karena Y > Ymin = 3 > -7 |
| T | = | 0 | → | Karena Y < ymax =" 3"> |
Jadi Region code dari vertex D adalah 0000
Kesimpulan : Karena Salahsatu Region code dari verteks C dan D adalah tidak sama dengan 0000, maka garis CD bersifat Partially Visible (Garis hanya terlihat sebagian). Dan garis yg sebagian tidak terlihat pada viewport harus di potong.
ü Menentukan titik Potong
| 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) |
3. Garis EF
Teknik Pemecehannya sama seperti teknik perhitungan perpotongan garis CD. Akan tetapi garis EF memiliki 2 titik potong karena kedua ujung titik berada diluar viewport akan tetapi sebagian garis berada dalam viewport. Dicari titik potong pada tiap verteks yaitu E dan F dicari verteks pada titik potong dengan bit code = 1.
4. Garis GH
Verteks G (3,-8)
| L | = | 0 | → | Karena X > Xmin = 3 < -7 |
| R | = | 0 | → | Karena X < xmax =" 3"> |
| B | = | 1 | → | Karena Y < ymin =" -8"> -7 |
| T | = | 0 | → | Karena Y < ymax =" -8"> |
Jadi Region code dari vertex G adalah 0010
Verteks H (7,-8)
| L | = | 0 | → | Karena X > Xmin = 7 < -7 |
| R | = | 0 | → | Karena X < xmax =" 7"> |
| B | = | 1 | → | Karena Y < ymin =" -8"> -7 |
| T | = | 0 | → | Karena Y < ymax =" -8"> |
Jadi Region code dari vertex G adalah 0010
Kesimpulan : Karena Region code dari verteks G dan H adalah tidak sama dengan 0000, maka garis GH bersifat Fully Invisible. Garis tidak terlihat sama sekali pada viewport sehingga garis tidak perlu digambar.

Tidak ada komentar:
Posting Komentar