Algorithma Klipping (Clipping)

Algorithma Clipping


Definisi

  • Dalam kehidupan sehari-hari saat kita ingin menggambar sesuatu pada sebuah bidang, tentunya kita tidak akan bisa menggambar melebihi bidang tersebut.
  • Dengan kata lain suatu bidang gambar pasti memiliki batas wilayah maksimum. Seperti halnya komputer, untuk melakukan proses penggambaran suatu objek di monitor, komputer tidak akan bisa menampilkan gambar melebihi batas maksisum yang telah ditentukan.
  • Untuk dapat melakukan hal tersebut, maka digunakanlah proses clipping, Clipping berasal dari kata clip, yang secara umum memiliki arti memotong.
  • Dalam ilmu grafika komputer, clipping merupakan proses pemotongan objek sehingga hanya bagian objek yang berada di dalam area tampil(viewport) yang dapat dilihat oleh user, sedangkan bagian objek yang berada di luar area tampil akan disembunyikan. Hal tersebut dilakukan agar proses perhitungan koordinat pixel pada layar tidak terlalu rumit. Tetapi sebelum melakukan proses clipping terlebih dahulu harus ditentukan bentuk dan ukuran clipping window, yaitu area dimana suatu objek dapat diproses dan ditampilkan. Clipping window dapat berupa segi empat, segi tiga, lingkaran, elips, poligon, dan lain-lain.


Teknik Clipping

Ada beberapa teknik yang dapat digunakan untuk melakukan proses clipping, diantaranya adalah sebagai berikut :

  1. Vertex Clipping
  2. Line Clipping
  3. Polygon Clipping


Line Clipping

Berdasarkan tes tersebut garis dapat dikategorikan menjadi 4 jenis, yaitu :

  1. Invisible : Garis yang tidak terlihat sepenuhnya / berada di luar clipping window.
  2. Half-partial : Garis yang terpotong sebagian oleh clipping window.
  3. Full-partial : Garis yang terpotong penuh oleh clipping window dan melintasi clipping window.
  4. Visible : Garis yang terletak di dalam clipping window.

Algorithma Clipping

Berbagai algorithma telah dikembangkan untuk menangani masalah pemotongan garis tersebut, antara lain :

  • Cyrus-Beck
  • Cohen-Sutherland

Algoritma Cohen-Sutherland

Pada algoritma ini setiap titik ujung (endpoint) dari garis direpresentasikan ke dalam 4 digit angka biner yang disebut region code. Masing-masing digit tersebut akan menentukan posisi titik relatif terhadap batas clipping yang berbentuk segiempat. Untuk lebih jelas dapat dilihat pada bagan dan tabel di bawah ini




3

2

1

0

T

B

R

L

           Bit ke-1 : Region Kiri (L)               

Bit ke-2 : Region Kanan (R)

 Bit ke-3 : Region Bawah (B)

                                               Bit ke-4 : Region Atas (T)


Bit dengan nilai 1 menandakan bahwa titik berada pada region yang bersangkutan. Jika tidak maka akan diset dengan nilai 0.



Contoh Kasus :

Diketahui dua buah garis yaitu garis AB dengan titik A(2,2) dan titik B(3,5). Kemudian garis CD dengan titik C(2,7) dan titik D(5,7). Lalu Garis EF dgn titik E(0,-1) dan titik F(7,7). Clipping window dengan Xmin = 1, Xmax = 6, Ymin = 1, dan Ymax = 6.

Langkah penyelesaian :

  • Lakukan pengecekan pada setiap titik terhadap window

  • Garis AB

Titik A(2,2)                                                                                    Titik B(3,5)


 Dari kedua tabel di atas terlihat bahwa garis AB berada pada region 0000, yaitu terletak di dalam window dan bersifat visible. Oleh karena itu garis AB dapat dilihat sepenuhnya tanpa melalui proses clipping. Hal tersebut dapat dibuktikan dengan menggunakan operator logika AND terhadap kedua titik yang menyusun garis AB, yaitu 0000 AND 0000 = 0000.



Garis CD

Titik C(2,7)                                                               Titik D(5,7)


Dari kedua tabel di atas terlihat bahwa garis CD berada pada region 1000, yaitu terletak di sebelah atas clipping window dan bersifat invisible. Oleh karena itu garis CD tidak dapat dilihat sepenuhnya dan tidak melalui proses clipping. Hal tersebut dapat dibuktikan dengan menggunakan operator logika AND terhadap kedua titik yang menyusun garis CD, yaitu 1000 AND 1000 = 1000


Garis EF

Titik E(2,1)                                                                                     Titik F(3,7)

                 

Dari kedua tabel di atas terlihat bahwa garis EF memiliki titik yang berada di luar clipping window, namun kedua titik tersebut dihubungkan dengan sebuah garis yang melalui clipping window, sehingga garis EF bersifat Full-partial dan harus melalui proses clipping. Hal tersebut dapat dibuktikan dengan menggunakan operator logika AND terhadap kedua titik yang menyusun garis EF, yaitu 0100 AND 1000 = 0000.

Untuk melakukan proses clipping dapat mengikuti langkah-langkah berikut ini :

Menentukan titik potong yang dihitung berdasarkan bit yang bernilai 1 dari region code dengan menggunakan panduan tabel berikut ini :


Dengan nilai xp1 , xp2 , yp1 , yp2 yang dapat dihitung dengan menggunakan persamaan :

xp1 = x1 + ( Ymin – y1 ) / m

xp2 = x1 + ( Ymax – y1 ) / m

yp1 = y1 + m * ( Xmin – x1 )

yp2 = y1 + m * ( Xmax – x1 )

dimana nilai m adalah sebagai berikut :

m = ( y2 – y1 ) / ( x2 – x1 )


Sehingga untuk garis EF (2,-1) dan (3, 7) dapat dilakukan perhitungan :

m = 7 – (-1) / 3 – 2 = 8/1 = 8

Region code untuk titik E(2,-1) adalah 0100, maka B = 1. Pada titik ini akan dicari xp1.

xp1 = x1 + ( Ymin – y1 ) / m

= 2 + (1 – (-1)) / 8 = 2,25

Maka titik potongnya adalah (2,25 ; 1)

Region code untuk titik F(3, 7) adalah 1000, maka T = 1. Pada titik ini akan dicari xp2.

Xp2 = x1 + ( Ymax – y1 ) / m

= 3 + (6 – 7) / 8 = 2,875

Maka titik potongnya adalah (2,875 ; 6)




Dari perhitungan di atas dapat disimpulkan bahwa garis EF akan di representasikan melalui 

titik E(2,25 ; 1) dan titik F(2, 875 ; 6)






Komentar

Postingan populer dari blog ini

OpenGL & GLUT

SYNTHETIC CAMERA