Uploaded by dat group

algoritma perhitungan semua clipping

advertisement
Line Dan Polygon Clipping
MATERI
• Viewing Transformation Pipeline in 2D
• Line and polygon clipping
• Brute force analytic solution
• Cohen-Sutherland Line Clipping Algorithm
• Liang-Barsky Algorithm
• Cyrus-Beck Line Clipping Algorithm
• Sutherland-Hodgman Polygon Clipping
• Sampling Theorem (Nyquist Frequency)
Viewing Transformation Pipeline in 2D
Viewing Transformation in 2D
• Obyek-obyek diberikan dalam koordinat world
• The world terlihat melalui window
• Window dipetakan kedalam sebuah device
viewport
Viewing Transformation in 2D
Line and Polygon Clipping
• Masalah: Mengingat satu set garis 2D atau
poligon dan jendela , klip garis atau poligon ke
daerah mereka yang berada di dalam jendela
Line and Polygon Clipping
• Efficiency
• Display in portion of a screen
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 sama sekali (Fully
Invisible).
Ketampakan Garis
(Line Visibility)
• Garis yang dipotong adalah garis yang
memiliki ketampakan sebagian (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.
Line Clipping
• Jendela dijelaskan dengan dua titik ekstrem
yaitu :
• Sebuah titik berada dalam window jika :
ALGORITMA BRUTE FORCE
• Jika kedua ujung garis berada didalam window,
jangan dipotong
• Untuk garis yang salah satu ujungnya diluar
window, hitung titik potongnya terhadap batas
window, kemudian lakukan pemotongan dari titik
potong ini ke arah luar
• Untuk garis yang kedua ujungnya terletak diluar
window, hitung titik potong terhadap batas
window kemudian potong dari titik tersebut
keluar.
ALGORITMA BRUTE FORCE
• Menghitung titik potong merupakan
komputasi yang tidak efisien, karena view bisa
berisi banyak sekali garis, karena itu
pendekatan ini untuk clipping sangat lambat
Cohen-Sutherland
• 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
Cohen-Sutherland
• 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
Cohen-Sutherland
• Dimana isi dari masing-masing bit ditentukan
berdasarkan pengujian
Cohen-Sutherland
• Region code dinyatakan dengan biner
memperlihatkan posisi dari titik terhadap
bidang clipping.
Cohen-Sutherland
Region Code
Arti
0000
Terletak di dalam viewport
0001
Terletak di sebelah kiri viewport
0010
Terletak di sebelah kanan viewport
0100
Terletak di sebelah bawah viewport
0101
Terletak di sebelah kiri bawah viewport
0110
Terletak di sebelah kanan bawah viewport
1000
Terletak di sebelah atas viewport
1001
Terletak di sebelah kiri atas viewport
1010
Terletak di sebelah kanan atas viewport
ALGORITMA CLIPING COHENSUTHERLAND
1.
2.
Tentukan region code dari setiap ujung garis
Jika kedua ujung garis memiliki region code 0000, maka garis
berada di dalam window clipping
3. Jika salah satu garis terletak didalam window, lakukan clipping
dengan cara berikut :
•
Tentukan titik potong garis dengan tepi window, kemudian
gambar garis antara ujung garis yang di dalam window dengan
titik potong
4. Jika kedua ujung garis tidak berada didalam window, lakukan operasi
logika AND untuk kedua region code
• Jika hasilnya tidak 0000, maka buang garis tersebut (invisible)
• Jika hasilnya 0000, cari titik potong antara garis dengan sisi-sisi
window, kemudian gambar garis antara dua titik potong tersebut
5. Ulangi langkah 2 untuk garis yang lain.
Cohen-Sutherland
• 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,6) – (6,7)
• Maka tentukan region code dari masingmasing ujung garis tersebut
Cohen-Sutherland
• 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
Cohen-Sutherland
•
•
•
•
•
•
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.
Cohen-Sutherland
2. Garis Q:
• Dengan cara yang sama pada garis P maka
akan ditentukan region code:
• Ujung garis Q(-1,6) mempunyai region code =
1001
• 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.
Cohen-Sutherland
• 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
Cohen-Sutherland
• Mencari titik potong
Cohen-Sutherland
• 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
Cohen-Sutherland
• Bergantung kepada lokasi ujung garis maka
kita akan memperoleh 2, 3, atau 4 titik potong
• Kemungkinan banyaknya titik potong
Cohen-Sutherland
• 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)
Cohen-Sutherland
• 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
Cohen-Sutherland
• 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.66)
Ymin – y1
• B = 1 xp1 = x1 + --------------M
(1 – (-2))
• = -1 + --------------8/6
• xp1 = 1.26
• Titik potongnya adalah (xp1, ymin) = (1.26 , 1)
Cohen-Sutherland
• Region code 1010 di titik (5,6):
• R =1 yp2 = y1 + m * (xmax – x1)
= 6 + (8/6) * (4-5)
yp2 = 4.65
• Titik potongnya adalah(xmax, yp2) = (4, 4.65)
Ymax – y1
• T =1 xp2 = x1 + --------------------m
(5 – 6)
• = 5 + ---------------------8/6
• xp2 = 4.26
• Titik potongnya adalah (xp2, ymax) = (4.26 , 5)
• Ada titik potong pada garis P yaitu (1, 0.67) , (1.25 ,1 ) , (4 , 4.65) ,
(4.25 , 5). Pilih titik
• potong yang terdapat dalam viewport yaitu (1.26 , 1) dan (4 , 4.65)
Liang-Barsky
• 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.
• Dimana nilai uЄ[0,1].
• Menurut Liang dan Barsky bentuk
pertidaksamaan sebagai berikut:
• xwmin <= x1 + u.dx <= xwmax
• ywmin <= y1 + u.dy <= ywmax
Liang-Barsky
• 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,
bottom, 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.
Liang-Barsky
• 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
Liang-Barsky
• Dengan nilai u1 adalah nilai maksimum dari nilai 0 dan
bermacam-macam nilai rk.
• Sebaliknya nilai u2 ditentukan 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 rk yang dihasilkan.
• Bila u1>u2, maka garis sepenuhnya berada di luar clip
window dan dapat dihilangkan .
• Bila u1<u2, maka dicari nilai endpoint yang baru
• 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)
Liang-Barsky
• Jika T1 < T2 cari nilai endpoint yang baru.
u1 ( x1 + dx * t1 , y1 + dy * t1) titik awal garis
yang baru
u2 ( x1 + dx * t2 , y1 + dy * t2) titik ujung garis
yang baru
• Algoritma Liang-Barsky lebih efisien
dibandingkan dengan Cohen-Sutherland
karena perhitungan titik potong dihilangkan.
Soal
• Diketahui sebuah segmen garis melalui titik P
(-5,3) dan Q(15,9) dan persamaan tepi
window berukuran (0,0)-(10,10). Tentukan
hasil clipping nya.
CLIPPING POLIGON
(ALGORITMA SUTHERLAND-HODMAN)
• Clipping dilakukan terhadap tiap-tiap sisi
window
• Input berupa poligon yang terdiri dari urutan
vertex (titik-titik pembentuk poligon) : v1,
v2,...vn
• Output berupa kumpulan verteks pembentuk
poligon hasil proses clipping
CLIPPING POLIGON
(ALGORITMA SUTHERLAND-HODMAN
• Aturan pemotongan garis yang melewati titik T1
(x1,y1) dan T2 (x2,y2) adalah :
1. Jika T1 titik dalam dan T2 titik dalam, maka
output T1,T2
2. Jika T1 titik dalam dan T2 titik luar, maka output
T’2,T1
3. Jika T1 titik luar dan T2 titik dalam, maka output
T’1, T2
4. Jika T1 titik luar dan T2 titik luar, maka output :
Tidak Ada
TITIK POTONG GARIS
• Titik potong garis dengan sisi kiri window (x,y)
• 𝑥 = 𝑥𝑚𝑖𝑛
• 𝑦=
(𝑦2−𝑦1)
(𝑥2−𝑥1)
∗ 𝑥𝑚𝑖𝑛 − 𝑥1 + 𝑦1
• Titik potong garis dengan sisi atas window (x,y)
• 𝑥 = 𝑥1 +
• 𝑦 = 𝑦𝑚𝑎𝑥
(𝑥2−𝑥1)
(𝑦2−𝑦1)
∗ (𝑦𝑚𝑎𝑥 − 𝑦1)
TITIK POTONG GARIS (2)
• Titik potong garis dengan sisi kanan window (x,y)
• 𝑥 = 𝑥𝑚𝑎𝑥
• 𝑦=
(𝑦2−𝑦1)
(𝑥2−𝑥1)
∗ 𝑥𝑚𝑎𝑥 − 𝑥1 + 𝑦1
• Titik potong garis dengan sisi bawah window (x,y)
• 𝑥 = 𝑥1 +
• 𝑦 = 𝑦𝑚𝑖𝑛
(𝑥2−𝑥1)
(𝑦2−𝑦1)
∗ (𝑦𝑚𝑖𝑛 − 𝑦1)
CONTOH SOAL
• Lakukan clipping dengan algoritma
Sutherland-Hodgman dari sebuah polygon
(A,B,C,D,E,F,G) yang dibatasi oleh window segi
empat (-4,2)-(10,10) dibawah ini :
CONTOH SOAL (2)
• Clipping terhadap sisi kiri window
• Titik luar : A
• Titik A membentuk garis AB dan berpotongan
dengan sisi kiri window di T1.
• Titik potong garis AB dengan sisi kiri window :
T1(x,y)
• 𝑥 = 𝑥𝑚𝑖𝑛 = −4
(𝑦2−𝑦1)
(𝑥2−𝑥1)
• 𝑦=
∗ 𝑥𝑚𝑖𝑛 − 𝑥1 + 𝑦1 =
−4 − (−6) + 5 =7
• Titik potong T1 = (-4,7)
(14−5)
(3+6)
∗
CONTOH SOAL (3)
• Titik A membentuk garis AG dan berpotongan
dengan sisi kiri window di T2.
• Titik potong garis AG dengan sisi kiri window
T2(x,y)
• 𝑥 = 𝑥𝑚𝑖𝑛 = −4
• 𝑦=
(𝑦2−𝑦1)
(𝑥2−𝑥1)
∗ 𝑥𝑚𝑖𝑛 − 𝑥1 + 𝑦1 =
−4 + 2 + 5 =5
• Titik potong T1 = (-4,5)
(5−5)
(−2− −6 )
∗
CONTOH SOAL (4)
• Lanjutkan untuk clipping terhadap
sisi atas, sisi kanan dan sisi bawah
window
??????
Download