Clipping dapat diartikan memotong sebagian bentuk agar terlihat dilayar/ area tertentu, ukuran bentuk yang terlalu besar kadang tidak cukup untuk di perlihatkan seluruhnya, ada banyak teknik cliiping seperti

  • Cohen-Sutherland Line Clipping
  • Liang-Barsky Line Clipping
  • Blinn’s Line Clipping
  • Sutherland-Hodgman Polygon Clipping

Disini akan dicoba di jelaskan Cohen-Sutherland Line Clipping

-     Algoritma Cohen-Sutherland merupakan metode untuk menentukan apakah sebuah garis perlu dipotong atau tidak dan menentukan 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 ada 9 region dalam algoritma ini.

Susunan Region Code

Bit ke Region Bit Isi
0 L 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

Region Code untuk 9 daerah viewport

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

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:


Contoh Kasus:



Diketahui:

Xmax = 8 Xmin = -8
Ymax = 8 Ymin = -8
1.    Garis AB (2,2)(6,2) 3.    Garis EF (-4,-9)(-9,3)
2.    Garis CD (-2,6)(-3,9) 4.    Garis GH (2,-9)(6,-9)

Menentukan region code dari masing-masing garis

1. Garis AB (2,2)(6,2)

  • Verteks A (1,2)
L = 0 xmin = 2 2 > -8
R = 0 xmax = 2 2 <  8
B = 0 ymin = 2 2 > -8
T = 0 ymax = 2 2 < 8

Region code verteks A = 0000

  • Verteks B (6,2)
L = 0 xmin = 6 6 > -8
R = 0 xmax = 6 6 <  8
B = 0 ymin = 2 2 > -8
T = 0 ymax = 2 2 < 8

Region code dari verteks B = 0000

hasil region vertex A dan B adalah 0000 dan 0000 sehingga jika dibuktikan dengan cara 0000 AND 0000 maka akan menghasilkan 0000, region code 0000 berarti garis berada di dalam viewport dan tidak perlu dipotong

2. Garis CD (-2,6)(-3,9)

  • Verteks C (-2,6)
L = 0 xmin = -2 -2 > -8
R = 0 xmax = -2 -2 <  8
B = 0 ymin = 6 6 > -8
T = 0 ymax = 6 6 < 8

Region code dari verteks C = 0000

  • Verteks D (-2,9)
L = 0 xmin = -2 -3 > -8
R = 0 xmax = -3 -3 <  8
B = 0 ymin = 9 9 > -8
T = 1 ymax = 9 9 > 8

Region code dari vertex D = 1000

Karena region code vertex D tidak bernilai 0000, maka kemungkinan garis CD bersifat partially visible(garis yang hanya terlihat sebagian) dan perlu di potong,

-     Titik potong pada garis CD (-2,6)(-3,9)

Region code 1000 untuk verteks D(-3,9)

T = 1 à Karena T=1, maka yang dicari adalah xp2.

Maka titik potongnya adalah (xp2, ymax) = (-2.6 , 8 )

3. Garis EF (-4,-9)(-9,-3)

  • Verteks E (-4,-9)
L = 0 xmin = -4 -4 > -8
R = 0 xmax = -4 -4 <  8
B = 1 ymin = -9 -9 < -8
T = 0 ymax = -9 -9 < 8

Region  code dari verteks E  =  0100

  • Verteks F (-9,-3)
L = 1 xmin = -9 -9 < -8
R = 0 xmax = -9 -9 <  8
B = 0 ymin = -3 -3 > -8
T = 0 ymax = -3 -3 < 8

Region code dari vertex F = 0001

Kedua vertex tidak menghasilkan kode 0000 tetapi jika keduanya dilakukan operasi AND maka akan menghasilkan 0000 (0100 AND 0001 = 0000), maka kemungkinan ada garis yang perlu dipotong juga.

Titik potong pada garis EF (-4,-9) (-9,-3)

B = 1, maka yang dicari adalah xp1.

Maka titik potongnya adalah (xp1, ymin) à (-4.03, -8)

L = 1, maka yang dicari adalah yp1.

Maka titik potongnya adalah (xmin, yp1) à (-8, -4.2)

Ada 2 titik potong pada garis EF yaitu (-4.03, -8) dan (-8, -4.2)

4. Garis GH (2,-9)(6,-9)

  • Verteks G (2,-9)
L = 0 xmin = 2 -2 > -8
R = 0 xmax = 2 -2 <  8
B = 1 ymin = -9 -9 < -8
T = 0 ymax = -9 -9 < 8

Region code dari vertex G = 0100

  • Verteks H (6,-9)
L = 0 xmin = -6 -6 > -8
R = 0 xmax = -6 -6 <  8
B = 1 ymin = -9 -9 < -8
T = 0 ymax = -9 -9 < 8

Region code dari vertex H = 0100

Kedua vertex dari garis GH mempunyai region code 0100, jika dilakukan operasi AND dengan keduanya maka akan dihasilkan 0100 (0100 AND 0100 = 0100), dan arti dari region code 0100 adalah garis terletak dibawah viewport, jadi garis tidak ditampilkan (fully invisible).

Sumber : aokihayyi

Advertisement