Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

CLIPPING 2 DIMENSI

CLIPPING 2 DIMENSI Linda Setiawati, S.Kom.,M.Pd TAMPILAN 2 DIMENSI  Menampilkan gambar 2 dimensi ke output device (misal : monitor)  Sistem koordinat (misal : sistem koordinat cartesian) dapat digunakan untuk mendefinisikan sebuah gambar  Pada gambar 2 dimensi, tampilan dipilih dengan cara menentukan sebuah sub area dari total area gambar  Bagian gambar di dalam suatu area yang ditentukan kemudian dipetakan pada sistem koordinat THE VIEWING PIPELINE Window • Area koordinat dunia (world-coordinate) yang dipilih untuk ditampilkan mendefinisikan apa yang ditampilkan Viewport • Area dari display device (misal:monitor) dimana window dipetakan. Mendefinisikan dimana harus ditampilkan Viewing transformation • Pemetaan bagian dari koordinat dunia ke koordinat device. PENGGAMBARAN 2 DIMENSI CLIPPING 2 DIMENSI    Tidak semua garis harus digambar di area gambar karena garis-garis yang tidak terlihat di area gambar seharusnya tidak perlu digambar. Metode untuk menentukan bagian garis yang perlu digambar atau tidak perlu digambar disebut clipping. Clipping juga dapat diartikan sebagai suatu tindakan untuk memotong suatu objek dengan bentuk tertentu. KETAMPAKAN GARIS  Posisi ketampakan garis terhadap area gambar (viewport) :    Garis yang terlihat seluruhnya (fully visible) : garis tidak perlu dipotong Garis yang hanya terlihat sebagian (partially visible) : garis yang perlu dipotong Garis yang tidak terlihat sama sekali (fully invisible) : garis tidak perlu digambar KETAMPAKAN GARIS ALGORITMA COHENSUTHERLAND   Algoritma Cohen-Sutherland merupakan metode untuk menentukan apakah sebuah garis perlu dipotong atau tidak dan menentukan titik potong garis. Area gambar didefinisikan sebagai sebuah area segiempat yang dibatasi oleh xmin dan xmax,ymin dan ymax. ALGORITMA COHENSUTHERLAND ALGORITMA COHENSUTHERLAND  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 : ALGORITMA COHENSUTHERLAND CONTOH  Jika diketahui area gambar ditentukan dengan xmin=1, ymin = 1 dan xmax=4, ymax=5 dan 2 garis :   P (–1, –2) – (5,6) Q (–1,5) – (6,7) C ONTOH  maka untuk menentukan region code dari masing-masing garis tersebut adalah : Garis P  Ujung garis P (–1, –2)   L = 1, karena x < xmin yaitu –1 < 1  R = 0 , karena x < xmax yaitu –1 < 4  B = 1 , karena y < ymin yaitu –2 < 1  T = 0 , karena y < ymax yaitu –2 < 5 sehingga region code untuk ujung P (–1, –2) adalah 0101  Ujung garis P (5, 6)   L = 0 , karena x > xmin yaitu 5 > 1  R = 1 , karena x > xmax yaitu 5 > 4  B = 0 , karena y > ymin yaitu 6 > 1  T = 1 , karena y > ymax yaitu 6 > 5 sehingga region code untuk ujung P (5, 6) adalah 1010  Karena region code kedua ujung garis tidak 0000 maka garis P kemungkinan bersifat partialy invisible dan perlu C ONTOH Garis Q  Ujung garis Q (–1, 5)  L = 1 , karena x < xmin yaitu –1 < 1  R = 0 , karena x < xmax yaitu –1 < 4  B = 0 , karena y > ymin yaitu 5 > 1  T = 0 , karena y = ymax yaitu 5 = 5  sehingga region code untuk ujung Q (–1, –2) adalah 0001  Ujung garis Q (6, 7)  L = 0 , karena x > xmin yaitu 6 > 1  R = 1 , karena x > xmax yaitu 6 > 4  B = 0 , karena y > ymin yaitu 7 > 1  T = 1 , karena y > ymax yaitu 7 > 5  sehingga region code untuk ujung Q (5, 6) adalah 1010  Karena region code kedua ujung garis tidak 0000 maka garis Q kemungkinan bersifat partialy invisible dan perlu dipotong. MENENTUKAN TITIK POTONG  Langkah berikutnya menentukan lokasi titik potong antara garis tersebut dengan batas area gambar.  Titik potong dihitung berdasarkan bit=1 dari region code dengan menggunakan panduan tabel berikut : MENENTUKAN TITIK POTONG  dengan xp1,xp2,yp1, dan yp2 dihitung menggunakan persamaan berikut ini : MENENTUKAN TITIK POTONG Bergantung pada lokasi ujung garis maka akan diperoleh 2,3,atau 4 titik potong seperti gambar berikut: Bila ditemukan titik potong lebih dari 2 pada 1 ujung maka pilih titik potong yang ada di dalam area gambar. CONTOH Untuk contoh sebelumnya titik potong pada garis P adalah : Region Bit B = 1 titik (1.25 , 1) Region Bit R = 1 titik (4, 4.7) CONTOH  Cara mencari :  Titik potong garis P (-1,-2) – (5,6) CONTOH  Region code 0101 di titik (-1,-2) :  Titik potongnya adalah (xmin,yp1) = (1, 0.67)  L = 1 → yp1 = y1 + m * (xmin – x1) = -2 + (8/6) * (1-(1))  yp1 = 0,67 CONTOH  Titik potongnya adalah (xp1,ymin) = (1.25, 1) CONTOH   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) CONTOH  Titik potongnya adalah (xp2,ymax) = (4.25, 5) CONTOH  Ada 4 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). ALGORITMA CLIPPING GARIS LIANGBARSKY   Liang-Barsky menemukan algoritma clipping garis yang lebih cepat. Clipping yang lebih cepat dikembangkan berdasarkan persamaan parametrik dari segmen garis dapat ditulis dalam bentuk: Dimana dx = x2 – x1 dan dy = y2-y1. Dimana 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, 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. 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 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 r yang dihasilkan. Bila u1 > u2, maka garis sepenuhnya berada di luar clip window dan dapat dihilangkan; sebaliknya bila tidak ujung 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 ujung 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 CONTOH PERHITUNGAN Diketahui titik garis P1(-1,-2) dan P2(2,4) dan viewport xl = 0, xr = 1, yb = 0 dan yt = 1. Tentukan endpoint baru. JAWAB: P1(-1,-2) , P2(2,4) xL =0, xR=1, yB = 0, yT =1 dx= x2 – x1 = 2 – (-1) = 3 p1 = -dx , = -3 P2 = dx , =3 P3 = -dy , = -6 P4 = dy , =6 dy = y2 – y1 = 4 – (-2) = 6 q1 = x1 – xL = -1- 0 = -1 q2 = xR – x1 = 1- (-1) = 2 q3 = y1 - yB = -2- 0 = -2 q4 = yT - yl = 1- (-2)= 3  q1/p1 = -1/-3 = 1/3  q2/p2 = 2/3  q3/p3 = -2/-6 = 1/3 q4/p4 = 3/6 = 1/2 Untuk (pi < 0 ) T1 = “Max” (1/3, 1/3, 0) = 1/3 Untuk (pi > 0 ) T2 = Min (2/3, 1/2, 1) = ½ T1 < T2 Perhitungan ujung baru T1 = 1/3 X1’ = x1 + dx * t1 = -1 + ( 3 * 1/3) = -1 + 1 = 0 Y1’ = y1 + dy * t1 = -2 + 6 * 1/3 = -2 + 2 = 0 (X1’,Y1’) = (0,0) T2 = 1/2 X2’ = x1 + dx * t2 = -1 + ( 3 * 1/2) = 1/2 Y2’ = y1 + dy * t2 = -2 + 6 * 1/2= 1 (X2’,Y2’) = (1/2,1) LATIHAN 1. 2. Diketahui titik awal P (1,1) dan titik akhir di Q (10,10), dengan area clipping xmin = 1, ymin=1, xmax= 7 dan ymax=7. Selesaikan masalah ini dengan clipping CohenSutherland. Berdasarkan soal no 1 lakukan clipping menggunakan algoritma Liang-Barsky dimana xl=1, xr= 7, yb = 1 dan yt = 7.