KATA PENGANTAR
Puji
syukur kami panjatkan kehadirat allah SWT yang telah memberikan rahmat serta
karunia nya kepada kami sehingga berhasil menyelesaikan makalah ini yang
berjudul “CLIPPING”
Makalah
ini membahas tentang PENGERTIAN CLIPPING DAN METODE – METODENYA, yang
diharapkan dapat memberikan informasi dan bermanfaat bagi kita semua.
Kami menyadari bahwa makalah ini
masih ada kekurangan-kekurangan baik pada teknis penulisan maupun materi,
oleh
karena itu kritik dan saran kami terima demi kesempurnaan makalah ini.
Akhir
kata, kami sampaikan terimakasih, semoga allah SWT senantiasa meridhai
segalanya amin.
Depok ,21 Oktober 2012
Penyusun
DAFTAR ISI
KATA PENGANTAR……………………………………………………………………………….. i
Daftar Isi ……………………………………………………………………………………………… ii
BAB I PENDAHULUAN
A.
Latar Belakang
Masalah…………………………………………………………………… 1
B.
Tujuan
Penelitian…………………………………………………………………………….. 1
C.
Batasan Masalah………………………………………………………………………………
1
D.
Landasan Teori…………………………………………………………………………………
2
BAB II PEMBAHASAN
A.
Vertex
Clipping (Clipping Titik)…………………………………………………………. 3
B.
Line
Clipping (Clipping Garis)…………………………………………………………….. 4
C.
Polygon
Clipping……………………………………………………………………………….. 11
BAB II PENUTUP
Kesimpulan……………………………………………………………………………………………… 16
Saran………………………………………………………………………………………………………..
16
DAFTAR
PUSTAKA…………………………………………………………………………………….. 17
Bab I : Pendahuluan
A. Latar belakang
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 maksimum 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.
B.
Tujuan Penelitian
Mengetahui pengertian dari clipping dan
memecahkan masalah dengan 2 metode clipping yaitu vertex/point clipping dan line
clipping.
C.
Batasan masalah
Membahas tentang pengertian clipping
dan metode-metode clipping, yaitu : vertex/point clipping, dan line clipping
beserta kasus yang ada pada metode-metode tersebut.
D.
Landasan teori
Proses clipping dapat digunakan
untuk membuat aplikasi-aplikasi sebagai berikut :
1. Identifikasi permukaan yang dapat
dilihat dalam pandangan 3 Dimensi.
2. Antialiasing segmen garis atau
bagian suatu objek,
3. Membuat objek dengan prosedur solid
modelling.
4. Menampilkan beberapa window.
5. Membuat gambar dengan kemampuan
memindahkan dan menghapus sebagian
Ada beberapa teknik yang dapat
digunakan untuk melakukan proses clipping, diantaranya adalah sebagai berikut :
1. Line Clipping
2. Vertex/Point Clipping
3. Polygon Clipping
Bab II : Pembahasan Masalah
A. Vertex Clipping
(Clipping Titik)
Teknik yang digunakan untuk
mengimplementasikan Vertex Clipping cukup sederhana yaitu dengan menggunakan
rumus umum sebagai berikut :
Xmin ≤ x ≤ Xmax
Ymin ≤ y ≤ Ymax
Xmin, Xmax, Ymin,
dan Ymax merupakan batas maksimum untuk clipping window yang
berbentuk persegi empat dengan posisi standar. Agar teknik ini dapat di
jalankan, kedua kondisi di atas harus terpenuhi. Jika ada sebuah titik yang
tidak memenuhi kedua kondisi tersebut, maka titik tersebut tidak akan muncul
pada viewport.
Contoh kasus :
Terdapat 2 buah titik, yaitu P1(2,2)
dan P2(3,6) dengan Xmin = 1, Xmax = 5, Ymin =
1, dan Ymax = 5.
contoh kasus 1 (vertex clipping)
Dari gambar di atas dapat dilihat bahwa
titik P2 tidak memenuhi kedua kondisi umum dari vertex clipping berada sehingga
titik P2 tidak akan di tampilkan.
Clipping titik dapat diaplikasikan pada
scene yang menampilkan ledakan atau percikan air pada gelombang laut yang
dibuat dengan mendistribusikan beberapa partikel.
B. Line Clipping
(Clipping Garis)
Line clipping diproses dengan melakukan
inside-outside test, yaitu memeriksa kedua titik ujung dari garis tersebut .
Berdasarkan tes tersebut garis dapat dikategorikan menjadi 4 jenis, yaitu :
Jenis Line Clipping :
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.
Proses clipping tidak berlaku pada
garis dengan kondisi invisible dan visible, karena kedua kondisi tersebut tidak
memotong clipping window.
Secara umum algoritma line clipping dapat
digambarkan sebagai berikut :
(Line Clipping Algorthm Flowcarth)
Dalam melakukan teknik line clipping
dapat menggunakan beberapa algoritma, seperti : Cohen-Sutherland, Liang-Barsky,
Cyrus-Beck, dan Nicholl-Lee-Nicholl. Algoritma yang paling terkenal adalah
algoritma Cohen-Sutherland. Pada algoritma ini setiap titik ujung (endpoint)
dari garis direpresentasikan ke dalam 4 digit angka biner yang disebuy 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.
Region Code
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.
Region
Table
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 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
a. Garis AB
Titik A(2,2)
Region
|
Kondisi
|
L = 0
|
X > Xmin ;
2 > 1
|
R = 0
|
X < Xmax ;
2 < 6
|
B = 0
|
Y > Ymin ;
2 > 1
|
T = 0
|
Y < Ymax ;
2 < 6
|
Titik B(3,5)
Region
|
Kondisi
|
L = 0
|
X > Xmin ;
3 > 1
|
R = 0
|
X < Xmax ;
3 < 6
|
B = 0
|
Y > Ymin ;
5 > 1
|
T = 0
|
Y < Ymax ;
5 < 6
|
Dari kedua tabel di atas terlihat bahwa
garis AB berada pada region 0000, yaitu terletak di dalam clipping 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.
b. Garis CD
Titik C(2,7)
Region
|
Kondisi
|
L = 0
|
X > Xmin ;
2 > 1
|
R = 0
|
X < Xmax ;
2 < 6
|
B = 0
|
Y > Ymin ;
7 > 1
|
T = 1
|
Y > Ymax ;
7 < 6
|
Titik D(5,7)
Region
|
Kondisi
|
L = 0
|
X > Xmin ;
5 > 1
|
R = 0
|
X < Xmax ;
5 < 6
|
B = 0
|
Y > Ymin ;
7 > 1
|
T = 1
|
Y < Ymax ;
7 > 6
|
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.
b. Garis EF
Titik E(2,-1)
Region
|
Kondisi
|
L = 0
|
X > Xmin ;
2 > 1
|
R = 0
|
X < Xmax ;
2 < 6
|
B = 1
|
Y < Ymin ;
-1 < 1
|
T = 0
|
Y < Ymax ;
-1 < 6
|
Titik F(3,7)
Region
|
Kondisi
|
L = 0
|
X > Xmin ;
3 > 1
|
R = 0
|
X < Xmax ;
3 < 6
|
B = 0
|
Y > Ymin ;
7 > 1
|
T = 1
|
Y > Ymax ;
7 > 6
|
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 :
Region
Bit
|
Berpotongan
dengan
|
Dicari
|
Titik
Potong
|
L = 1
|
Xmin
|
yp1
|
( Xmin ,
yp1 )
|
R = 1
|
Xmax
|
Yp2
|
( Xmin ,
yp2 )
|
B = 1
|
Ymin
|
xp1
|
( yp1 ,
Ymin )
|
T = 1
|
Ymax
|
Xp2
|
( yp2 ,
Ymax )
|
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 R = 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 xp1.
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)
Hasil
Clipping
C. Polygon Clipping
Polygon merupakan bidang yang tersusun
dari verteks (titik sudut) dan edge (garis penghubung setiap verteks). Untuk
dapat melakukan proses clipping pada polygon diperlukan algoritma yang lebih
kompleks dari kedua teknik clipping yang telah di bahas sebelumnya. Salah
satunya adalah algortima Sutherland-Hodgman .Ide dasarnya adalah memperhatikan
edge pada setiap arah pandang, lalu clipping polygon dengan persamaan edge,
kemudian lakukan clipping tersebut pada
semua edge hingga polygon terpotong sepenuhnya. Berikut ini ketentuan dari
algoritma Sutherland-Hodgman :
- Polygon dapat dipotong dengan setiap edge dari window sekali pada satu waktu.
2. Vertex yang telah terpotong akan disimpan untuk kemudian
digunakan untuk memotong edge yang masih ada.
3. Perhatikan bahwa jumlah vertex biasanya berubah-ubah dan
sering bertambah.
Pada saat mengimplementasikan algoritma
akan dilakukan tahap interseksi pada setiap sisi window, yaitu sebagai berikut
:
- Asumsikan bahwa kita akan memotong edge pada titik(x1, y1) dan (x2, y2) dengan clipping window pada titik (xmin, ymin) dan (xmax, ymax).
- Tentukan nilai slope = (y2 – y1) / (x2 – x1) pada setiap interseksi
- Lokasi (IX,IY) dari interseksi edge dengan sisi kiri window adalah
IX = xmin
IY = slope * (xmin – x1)
+ y1
- Lokasi (IX,IY) dari interseksi edge dengan sisi kanan window adalah :
IX = xmax
IY = slope * (xmax – x1)
+ y1
- Lokasi (IX,IY) dari interseksi edge dengan sisi atas window adalah :
IX = x1 + (ymax -
y1) / slope
IY = ymax
- Lokasi (IX,IY) dari interseksi edge dengan sisi bawah window adalah :
IX = x1 + (ymin -
y1) / slope
IY = ymin
Contoh Kasus :
Diketahui sebuah polygon ABC dengan
titik A(4,7), B(10,4), dan C(2,0). Clipping window memiliki nilai Xmin =
1, Xmax = 8, Ymin = 1, dan Ymax = 6.
Dari gambar di atas dapat dilihat bahwa
terdapat 6 buah titik potong yang akan dicari. Pada bagian atas clipping window
terdapat 2 buah titik potong, yaitu perpotongan garis AC dengan Ymax dan
garis AB dengan Ymax. Lalu pada bagian kanan clipping window
terdapat 2 buah titik potong, yaitu perpotongan garis BA dengan Xmax dan
garis BC dengan Xmax. Kemudian pada bagian bawah window clipping
juga terdapat 2 buah titik potong, yaitu perpotongan garis CA dengan Ymin dan
garis CB dengan Ymin. Oleh karena itu akan dilakukan 3 kali
interseksi.
1.
Interseksi bagian atas
- Mencari titik potong antara garis AC [(4,7) ; (2,0)] dan Ymax .
slope = (y2 – y1)
/ (x2 – x1).
= (0 – 7) / (2 – 4) = -7 / -2 = 3,5
IX = x1 + (ymax -
y1) / slope
= 4 + (6 – 7) / 3,5 = 3,714
IY = ymax = 6
Maka titik potongnya adalah (IX, IY) =
(3,714 ; 6)
- Mencari titik potong antara garis AB [(4,7) ; (10,4)] dan Ymax .
slope = (y2 – y1)
/ (x2 – x1).
= (4 – 7) / (10 – 4) = -3 / 6 = -0,5
IX = x1 + (ymax -
y1) / slope
= 4 + (6 – 7) / -0,5 = 6
IY = ymax = 6
Maka titik potongnya adalah (IX, IY) =
(6, 6)
2.
Interseksi bagian kanan
- Mencari titik potong antara garis BA [(10,4) ; (4,7)] dan Xmax .
slope = (y2 – y1)
/ (x2 – x1).
= (7 – 4) / (4 – 10) = 3 / -6 = -0,5
IX = xmax = 8
IY = slope * (xmax – x1)
+ y1
= -0,5 * (8 – 10) + 4 = 5
Maka titik potongnya adalah (IX, IY) =
(8, 5)
- Mencari titik potong antara garis BC [(10,4) ; (2,0)] dan Xmax .
slope = (y2 – y1)
/ (x2 – x1).
= (0 – 4) / (2 – 10) = -4 / -8 = 0,5
IX = xmax = 8
IY = slope * (xmax – x1)
+ y1
= 0,5 * (8 – 10) + 4 = 3
Maka titik potongnya adalah (IX, IY) =
(8, 3)
3.
Interseksi bagian bawah
·
Mencari titik potong
antara garis CA [(2,0) ; (4,7)] dan Ymin.
slope = (y2 – y1)
/ (x2 – x1).
= (7 – 0) / (4 – 2) = 7 / 2 = 3,5
IX = x1 + (ymin -
y1) / slope
= 2 + (1 – 0) / 3,5 = 2,286
IY = ymin = 1
Maka titik potongnya adalah (IX, IY) =
(2,286 ; 1)
·
Mencari titik potong
antara garis CB [(2,0) ; (10,4)] dan Ymin.
slope = (y2 – y1)
/ (x2 – x1).
= (4 – 0) / (10 – 2) = 4 / 8 = 0,5
IX = x1 + (ymin -
y1) / slope
= 2 + (1 – 0) / 0,5 = 4
IY = ymin = 1
Maka titik potongnya adalah (IX, IY) =
(4, 1)
Dari perhitungan yang telah dilakukan
di atas, maka akan dibuat polygon baru dengan titik A(3,714 ; 6), B(6, 6), C(8,
5), D(8, 3), E(2,286 ; 1), dan F(4, 1).
Hasil
Polygon Clipping
Penutup
Kesimpulan
Dari semua algoritma yang telah dibahas
di atas, dapat disimpulkan bahwa ide dasar dalam proses clipping adalah dengan
menyembunyikan sementara bagian dari objek yang berada di luar viewport. Hal
tersebut bermanfaat untuk mengurangi kerja CPU dalam melakukan komputasi
gambar, sehingga CPU akan berkerja dengan lebih efisien. Saat ini penelitian
mengenai algoritma clipping masih terus dikembangkan untuk mencari cara yang
paling efisien dalam melakukan proses tersebut. Setelah membaca artikel ini,
saya sangat berharap anda dapat mencari dan mengembangkan algoritma clipping
terbaik dari yang pernah ada sebeumnya.
Daftar Pustaka
http://meilgrafico.wordpress.com/2010/10/30/computer-graphics-clipping-algoritm/