Transcript Pertemuan5b

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
Cohen–Sutherland 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 masingmasing 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 CohenSutherland karena perhitungan titik potong dihilangkan.
Terimakasih
Selamat Belajar