Clipping 2 Dimensi
CLIPPING 2 DIMENSI
• Clipping adalah pemotongan suatu objek dengan bentuk tertentu
• Alasan dilakukannya clipping :
– Menghindari perhitungan koordinat pixel yang rumit (karenanya clipping dilakukan sebelum rasterisasi).
– Interpolasi parameter
• Sarana pemotong objek disebut jendela clipping.
• Fungsi jendela clipping adalah untuk mengidentifikasi
objek yang akan di-clipping dan memastikan bahwa data yang diambil hanya yang terletak di dalam jendela clipping
CLIPPING GARIS
Posisi ketampakan garis terhadap area gambar (viewport) :
1. Garis yang terlihat seluruhnya (fully visible) : garis tidak perlu dipotong
2. Garis yang hanya terlihat sebagian (partially visible) : garis yang perlu dipotong
3. Garis yang tidak terlihat sama sekali (fully invisible) : garis tidak perlu digambar
ALGORITMA COHEN-SUTHERLAND
• 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.
• Susunan region code :
Contoh :
Jika diketahui area gambar ditentukan dengan xmin=1, ymin = 1 dan xmax=4, ymax=5 dan 2 garis :
1. P (–1, –2) – (5,6)
2. Q (–1,5) – (6,7)
maka untuk menentukan region code dari masing-masing garis tersebut adalah :
1. Garis P
Ujung garis P (–1, –2)
L = 1 –> karena x < xmin yaitu –1 < 1
R = 0 –> karena x < xmax yaitu –1 < 4
B = 1 –> karena y < ymin yaitu –2 < 1
T = 0 –> karena y < ymax yaitu –2 < 5
sehingga region code untuk ujung P (–1, –2) adalah 0101
Ujung garis P (5, 6)
L = 0 –> karena x > xmin yaitu 5 > 1
R = 1 –> karena x > xmax yaitu 5 > 4
B = 0 –> karena y > ymin yaitu 6 > 1
T = 1 –> karena y > ymax yaitu 6 > 5
sehingga region code untuk ujung P (5, 6) adalah 1010
Karena region code kedua ujung garis tidak 0000 maka garis P kemungkinan bersifat partialy
invisible dan perlu dipotong.
2. Garis Q
Ujung garis P (–1, 5)
L = 1 –> karena x < xmin yaitu –1 < 1
R = 0 –> karena x < xmax yaitu –1 < 4
B = 0 –> karena y > ymin yaitu 5 > 1
T = 0 –> karena y = ymax yaitu 5 = 5
sehingga region code untuk ujung P (–1, –2) adalah 0001
Ujung garis P (6, 7)
L = 0 –> karena x > xmin yaitu 6 > 1
R = 1 –> karena x > xmax yaitu 6 > 4
B = 0 –> karena y > ymin yaitu 7 > 1 T = 1 –> karena y > ymax yaitu 7 > 5
sehingga region code untuk ujung P (5, 6) adalah 1010
Karena region code kedua ujung garis tidak 0000 maka garis Q kemungkinan bersifat partialy
invisible dan perlu dipotong.
Menentukan Titik Potong
• Langkah berikutnya menentukan lokasi titik potong antara garis tersebut dengan batas area
gambar.
• Titik potong dihitung berdasarkan bit=1 dari region code dengan menggunakan panduan tabel
berikut :
dengan xp1,xp2,yp1, dan yp2 dihitung menggunakan persamaan berikut ini :
Untuk contoh diatas titik potong pada
garis P adalah :
Region Bit B = 1 Æ titik (1.25 , 1)
Region Bit R = 1 Æ titik (4, 4.7)
cara mencarinya sebagai berikut :
Titik potong garis P (-1,-2) – (5,6)
Region code 0101 di titik (-1,-2) :
Titik potongnya adalah (xp1,ymin) = (1.25, 1)
Region code 1010 di titik (5,6) :
Titik potongnya adalah (xp2,ymax) = (4.25, 5)
Ada 4 titik potong pada garis P yaitu (1, 0.67), (1.25,1), (4, 4.7), (4.25, 5). Pilih titik potong yang
terdapat dalam viewport yaitu (1.25,1) dan (4, 4.7).
CLIPPING POLYGON
Clipping poligon lebih kompleks dibandingkan
clipping garis :
– Input: poligon
– Output: poligon asli, poligon baru, atau lainnya
Sutherland-Hodgman Polygon Clipping
Cara mencari output clipping :
- Jika simpul input pertama adalah di luar perbatasan ini simpul kedua adalah di dalam, baik titik persimpangan dan titik kedua dikirim ke pemangkas berikutnya
- Jika kedua simpul input berada di dalam perbatasan ini, hanya titik kedua dikirim ke pemangkas berikutnya.
- Jika simpul pertama adalah di dalam perbatasan ini dan simpul kedua adalah luar, hanya posisi persimpangan dikirim ke clipper berikutnya.
- Jika kedua simpul input berada di luar perbatasan ini, tidak ada simpul dikirim ke pemangkas berikutnya.
{1,2}:
{2,3}: {3,1}: |
(in-in)->{2}
(in-out)->{2’} (out-in)->{3’,1} |
{2,2’}:(in-in)->{2’}
{2’,3’}:(in-in)->{3’} {3’,1}:(in-in)->{1} {1,2}:(in-in)->{2} |
{2’,3’}:(in-out)->{2’’}
{3’,1}:(out-out)->{} {1,2}:(out-in)->{1’,2} {2,2’}:(in-in)->{2’} |
{2’’,1’}:(in-in)->{1’}
{1’,2}:(in-in)->{2} {2,2’}:(in-in)->{2’} {2’,2’’}:(in-in)->{2’’} |
leave a comment