You are on page 1of 25

Clipping 2D

M.Iqbal Habibie
2DB23- D3 Manajemen Informatika
Pendahuluan
Clipping merupakan metode untuk
menghilangkan garis yang tidak perlu
digambar apabila melebihi window viewing
(area gambar). Ada beberapa algoritam
clipping yang ada, namun kita akan
membahas algoritma yang diusulkan oleh
CohenSutherland dan Liang-Barsky.
Ketampakan Garis
(Line Visibility)
Garis-garis yang tampak pada area gambar atau
viewing dapat dikelompokkan menjadi
tiga kelompok, yaitu:
1. Garis yang terlihat seluruhnya (Fully visible).
2. Garis yang hanya terlihat sebagian (Partiality
Visible).
3. Garis yang tidak terlihat seama sekali (Fully
Invisible).
Garis yang dipotong adalah garis yang memiliki
ketampakan sebagaian (Partiality Visible) dari daerah
area gambar. Sedangkan garis yang memiliki
ketampakan seluruhnya.
tidak perlu dipotong, dan garis yang memiliki
ketampakan tidak terlihat sama sekali tidak perlu
digambar.
Algoritma Cohen - Sutherland
Ivan Edward Sutherland lahir pada tahun 1938 di hastings,nebraska
Amerika, dia adalah perintis ilmu komputer dan internet. Dia menerima
Turing Award 1988 untuk penemu Sketchpad sebuah langkah awa
untuk antarmuka pengguna grafis di komputer pribadi.
Dia memperoleh sarjana elektro dari institut teknologi carnegie
(sekarang carnegie mellon university), pasca sarjana dari caltech,
dan PhD dari MIT di EECS pada tahun 1963. Dia adalah anggota
dari nastional academy of engineering, serta anggota national
academy of sciences.
Menentukan Ketampakan Garis
Cohen-Sutherland mengusulkan sebuah
metode untuk menentukan apakah sebuah
garis
perlu dipotong atau tidak. Area gambar
didefinisikan sebagai sebuah area
segiempat yang
dibatasi oleh xMin, xMax, yMin, yMax
seperti pada Gambar dibawah ini
Setiap ujung garis diberi kode 4 bit dan disebut sebagai region code,
region code ditentukan berdasarkan area dimana ujung garis
tersebut berada. Cohen-Sutherland menyusun region code

Susunan Region Code


Dimana isi dari masing-masing bit
ditentukan berdasarkan pengujian seperti
pada Tabel 5.1
Tabel 5.1 Isi Region Code
Gambar 5.2. Region code dinyatakan dengan biner
memperlihatkan posisi dari titik terhadap bidang clipping.
Latihan soal
Jika diketahui area gambar ditentukan
dengan xMin = 1, yMin = 1 dan xMax = 4,
yMax= 5 dan dua buah garis:
1. P(-1,-2) (5,6)
2. Q(-1,5) (6,7)

Maka tentukan region code dari masing-


masing ujung garis tersebut
Jawab:

1. Garis P: Ujung garis P(-1, -2)

L = 1; karena x < xMin atau -1 < 1


R = 0; karena x < xMax atau -1 < 4
B = 1; karena y < yMin atau -2 < 1
T = 0; karena y < yMax atau -2 < 5
Dengan demikian region code untuk ujung P(-1,-2) adalah 0101,
ujung garis
P(5,6).
L = 0; karena x > xMin atau 5 > 1
R = 1; karena x > xMax atau 5 > 4
B = 0; karena y > yMin atau 6 > 1
T = 1; karena y > yMax atau 6 > 5
Dengan demikian region code untuk ujung
P(5,6) adalah 1010, karena region
code dari kedua ujung garis tidak sama dengan
0000 maka garis P bersifat
kemungkinan partialy invisible dan perlu
dipotong.
2. Garis Q:
Dengan cara yang sama pada garis P maka
akan ditentukan region code:
Ujung garis Q(-1,5) mempunyai region code =
0001
Ujung garis Q(6,7) mempunyai regian code =
1010
Karena region code tidak sama dengan 0000
maka garis Q bersifat kemungkinan
partialy invisible dan perlu dipotong.
Menentukan Titik Potong
Setelah garis ditentukan ketampakannya,
maka langkah berikutnya adalah
menentukan
lokasi titik potong antara garis tersebut
dengan batas area gambar. Titik potong
dihitung
berdasarkan bit=1 dari region code
dengan menggunakan panduan pada
Tabel
Tabel 5.2. Mencari titik potong.
Dengan Xp1, Xp2, Yp1 dan Yp2 dihitung menggunakan persamaan
berikut:
Ymin y1
Xp1 = x1+ ----------------------
M
Ymax y1
Xp2 = x1 + ----------------------
M
Yp1 = y1 + m * (xmin x1)
Yp2 = y1 + m * (xmax x1)

Dengan:
Y2 Y1
M = --------------
X2 - X1
Bergantung kepada lokasi ujung garis
maka kita akan memperoleh 2, 3, atau 4
titik potong seperti pada Gambar 5.3

Gambar 5.3 Kemungkinan banyaknya titik potong


Apabila ditemukan titik potong lebih dari dua pada suatu ujung maka
pilihlah titik potong yang ada di dalam area gambar.

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 mencari titik potong sebagai berikut :


Titik potong garis P (-1,-2) (5,6)
y2 y1
m = --------
x2 x1

6 (-2 )
= ---------
5 - (-1)

= 8/6
Region code 0101 di titik (-1,-2):
L=1 yp1 = y1 + m * (xmin x1)
= -2 + (8/6) * (1-(-1))
yp1 = 0,86
Titik potongnya adalah (xmin,yp1) = (1, 0.86)
Ymin y1
B = 1 xp1 = x1 + ---------------
M
(1 (-2))
= -1 + ---------------
8/6
xp1 = 1.25

Titik potongnya adalah (xp1, ymin) = (1.25 , 1)


Region code 1010 di titik (5,6):
R =1 yp2 = y1 + m * (xmax x1)
= 6 + (8/6) * (4-5)
yp2 = 4.7
Titik potongnya adalah(xmax, yp2) = (4, 4.7)
Ymax y1
T =1 xp2 = x1 + ---------------------
m
(5 6)
= 5 + ----------------------
8/6
xp2 = 4.25
Titik potongnya adalah (xp2, ymax) = (4.25 , 5)
Ada 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 Garis Liang-Barsky
Brian A. Barsky, lahir di Montreal, adalah Profesor di University of
California, Berkeley bekerja di komputer grafis dan geometris pemodelan
serta promosi dan sebagainya dan visi ilmu pengetahuan.
Beliau juga merupakan anggota dari Joint Graduate Group di
Bioengineering, sebuah program antar-kampus, antara UC Berkeley dan
San Francisco UC. Liang-Barsky menemukan algoritma clipping garis yang
lebih cepat. Menurut Liang-Barsky bentuk pertidaksamaan sebagai berikut:
Clipping yang lebih cepat dikembangkan berdasarkan persamaan
parametrik dari segmen garis dapat ditulis dalam bentuk:

x = x1 + u.dx
y = y1 + u.dy

Dimana dx = x2 x1 dan dy = y2-y1. Diman nilai u[0,1]. Menurut Liang


dan Barsky
bentuk pertidaksamaan sebagai berkut:
xwmin <= x1 + u.dx <= xwmax
ywmin <= y1 + u.dy <= ywmax
Dengan
u.pk <= qk, k=1,2,3,4
Dimana parameter p dan q ditentukan sebagai berikut:
k = 1 (Kiri): p1 = -dx, q1= x1-xwmin
k = 2 (Kanan): p2 = dx, q2= xwmax x1
k = 3 (Bawah): p3 = -dy, q3= y1-ywmin
k = 4 (Atas): p4 = dy, q4= ywmax-y1

Garis yang sejajar dengan salah satu batas clipping mempunyai pk = 0 untuk nilai
k=1,2,3,4 yaitu left, right, botton, dan top. Untuk setiap nilai k, juga diperoleh qk<0, maka
garis sepenuhnya diluar batas clipping. Bila qk>=0, maka garis didalam dan sejajar batas
clipping.

Bila pk<0, garis memotong batas clipping dari luar ke dalam, dan bila pk>0, garis
memotong batas clipping dari dalam ke luar. Untuk nilai pk yang tidak sama dengan 0,
nilai u dapat diperoleh dengan

u = qk / pk

Untuk setiap garis, dapat dihitung nilai dan parameter u1 dan u2 yang menentukan
posisi garis dalam bidang clipping. Nilai u1 diperlihatkan dengan batas clipping
dimana garis memotong batas clipping dari luar ke dalam (p<0).

rk = qk / pk
Dengan nilai u1 adalah nilai maksimum dari nilai 0 dan bermacam-macam
nilai r. Sebaliknya nilai u2 ditentkan dengan memeriksa batas dimana
clipping dipotong oleh garis dari dalam keluar (p>0). nilai rk dihitung untuk
setiap batas clipping, dan nilai u2 merupakan nilai minimum dari
sekumpulan nilai yang terdiri dari 1 dan nilai r yang dihasilkan. Bila u1>u2,
maka garis sepenuhnya berada di luar clip window dan dapat dihilangkan .
sebaliknya bila tidak endpoint dari garis yang di clip dihitung dari dua nilai
parameter u.

Untuk (pi < 0) t1 = Max (rk)


Untuk (pi > 0) t2 = Min (rk)

Jika t1 < t2 cari nilai endpoint yang baru.


t1 ( x1 + dx * t1 , y1 + dy * t1) titik awal garis yang baru
t2 ( x1 + dx * t1 , y1 + dy * t1) titik ujung garis yang baru

Algoritma Liang-Barsky lebih efisien dibandingkan dengan Cohen-


Sutherland karena perhitungan titik potong dihilangkan.
Terimakasih
Selamat Belajar

You might also like