Clipping 2 Dimensi

Posted in Umum by derwan dani on 30 October , 2010

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 :

  1. Jika simpul input pertama adalah di luar perbatasan ini simpul kedua adalah di dalam, baik titik persimpangan dan titik kedua dikirim ke pemangkas berikutnya
  2. Jika kedua simpul input berada di dalam perbatasan ini, hanya titik kedua dikirim ke pemangkas berikutnya.
  3. Jika simpul pertama adalah di dalam perbatasan ini dan simpul kedua adalah luar, hanya posisi persimpangan dikirim ke clipper berikutnya.
  4. 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’’}

About these ads

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

Follow

Get every new post delivered to your Inbox.

%d bloggers like this: