MAKALAH GRAFIKA KOMPUTER KLIPING 2D Dosen Pengampu Hendra Himawan Putra,S.Kom
Disusun Oleh : Rhendra Hanung F.H
(09650022)
Angga Debby F
(09650075)
Fachry Fachr y Khusaini Khusai ni
(09650137)
Yousron Amin
(09650143) KELAS F
Jurusan Teknik Informatika Fakultas Sains dan Teknologi Universitas Islam Negeri Maulana Malik IbrahimMalang 2011
LANDASAN TEORI
Clipping adalah proses mengabaikan bagian objek yang berada di luar daerah yang akan ditampilkan (diluar window). Jenis clipping terdiri dari: clipping titik, clipping garis. Clipping titik adalah menghilangkan titik-titik yang berada di luar window, yaitu dengan menentukan apakah suatu titik berada dalam satu daerah atau tidak. Clippi li pping ng garis ar is menghilangkan bagian segmen garis yang berada di luar window. Segmen garis dapat melewati daerahBerikut ini akan dibahas algoritma-algoritma dalam bentuknya yang baku. Terdapat banyak varian dari algoritma-algoritma tersebut yang dibuat orang demi mendapatkan peningkatan efisiensinya. a. Algoritma Sutherland-Hodgman
Pada tahun 1974, Sutherland dan Hodgman memperkenalkan sebuah teknik yang mereka temukan untuk menguji, apakah bagian dari sebuah poligon dapat terlihat jika poligon tersebut berada didalam window, dan melakukan proses kliping luar bagian polygon yang berada diluar window. Metode yang mereka gunakan atau mereka kenalkan menguji setiap sisi dari window untuk bisa menampilkan bagian yang berada didalam batasannya. Metode ini memang dibuat untuk melakukan proses kliping dimana objek yang digunakan berupa poligon.
-
Prinsip Kerja Metode Sutherland-Hodgman
Metode pengujian untuk proses kliping, masing-masing bagian window yang berlawanan memiliki keterikatan secara individual. Ide dasar algoritma ini adalah kemudahan untuk mengklip sebuah segmen terhadap sisi manapun dari batas window. Kemudian dapat kita tampilkan secara lengkap proses kliping dengan mengklip setiap segmen terhadap keempat sisi window secara berurutan. Untuk melakukan proses kliping terhadap suatu batas window, kita melakukan langkah pertama sesuai dengan arah penggambaran objek pertama kali. Seperti kita mengingat masing-masing titik akhir ( end-point ), end-point ), kita lihat apakah sebuah garis pada polygon ini memotong garis batas window?Jika ya, maka titik perpotongannya perpotongannya dihitung dan hasilnya disimpan untuk melakukan rutin berikutnya. Masing-masing titik diuji untuk dilihat apa yang kita dapat antara titik-titik pembentuk polygon terhadap garis batas
window. Jika sudah, hasilnya juga disertakan untuk rutin selanjutnya. Pada prosedur ini, semua segmen end-point garis end-point garis polygon yang memotong garis batas window akan dibiarkan ( passed on), on), dan titik yang berada diluar window akan masukan kedalam list titik yang berada diluar window. Meskipun langkah dalam proses kliping dilakukan secara berurutan berdasarkan langkah yang dilakukan pada saat menggambar objek polygon. Tetapi ini bisa memungkinkan untuk memulai kliping pada batas kedua sebelum proses kliping objek titik dihitung pada proses kliping batas pertama secara lengkap. Pada faktanya, fakta nya, masing-masi masing-masing ng titik bisa langsung berjalan untuk diuji terhadap keempat sisi window atau keempat rutin kliping dan langsung masuk prosedur penggambaran sebelum titik berikutnya masuk rutin pertama. Algoritma untuk kliping menggambarkan setiap sisi batas window mengikuti jalan rutin yang sama. Mereka pertama kali mengecek untuk melihat apakah titik yang baru adalah titik awal dari polygon, jika ya, mereka akan menyimpannya. Mereka menghitung titik yang baru dan titik yang terakhir untuk dilihat apakah dengan segmen garis yang terbentuk memotong batas window?Algoritma dipanggil untuk masing-masing titik baru yang terbentuk. Kita dapat menggambarkannya dengan perpindahan sebuah pena. Kita mulai dengan menempatkan pena tersebut disuatu lokasi (titik disimpan untuk proses kliping, pada array XS dan YS) lalu menggerakannya ke posisi baru (titik yang baru, X dan Y). Rutin kliping menghitung garis ini untuk dilihat apakah bertemu dengan garis batas. Jika sisi yang tergambar dari luar ke dalam window maka kita memberikan perintah MOVE; sebaliknya, perintahnya sama dengan yang asli. Ini berati jika objek melewati keluar sisi window, segmen akan bergerak dari batas menuju titik, dimana segmen masuk kembali area window. Ketika kita menyatakan perintah ³entered´, ³entered´, ini berarti, dilewati dan menuju ke rutin selanjutnya. Rutin selanjutnya adalah algoritma untuk kliping yang dilakukan untuk batas selanjutnya. Algoritma terakhir dalam proses kliping sebenarnya masuk pada prosedur penggambaran objek setelah kliping. Lihat Lihat gambar ga mbar 2.2 .
Gambar 2.2 Proses Kliping Sutherland-Hodg S utherland-Hodgman man
Untuk lebih jelasnya , akan diberi contoh dibawah ini, contoh yang diambil berupa garis :
Gambar 2.3 Contoh Kliping Sutherland-Hodgman Pada contoh gambar 2.3 kita memiliki garis AB dengan koordinat A(1,2) dan B(3,2) yang akan dipotong oleh window klip KLMN dengan K(2,1), L(4,1), M(4,4) dan N(2,4). Dengan menggunakan algoritma Sutherland-Hodgman, maka dua titik A dan B akan diuji oleh setiap sisi dari window, window, penjelasannya : 1. WindowKiri bernilai 2, windowKanan bernilai 4, windowBawah bernilai 1, windowAtas bernilai 4. 2. Apakah A.x < window kiri? maka clipLeft bernilai True. 3. Jika clipLeft bernilai true maka, a. m = (B.y ± A.y) / (B.x ± A.x) = (2 ± 2) / (3 ± 1) = 0 b. p.y = A.y + (windowkiri ± A.x) * m c. p.x = windowkiri. d. Didapatkan titik baru C dengan koordinat (2,2). 4. Apakah B.x < windowkiri? Maka clipLeft bernilai False.
5. Apakah B.x > windowkanan? windowkanan? Maka clipRight bernilai False. 6. Apakah B.y < windowbawah? Maka clipBottom bernilai False. 7. Apakah B.y > windowatas? Maka clipT op bernilai False. 8. Titik B tidak masuk dalam perhitungan. 9. Setelah semua titik diuji, kita memperoleh titik AC A C dan titik C titik CB. 10. Lakukan rutin untuk menggambar kedua garis.
Cara
Menghitung Intersections
Asumsikan bahwa kita akan mengkliping sebuah polgon dengan simpul di (x1, y1) dan (x2, y2) terhadap jendela klip dengan simpul di (xmin, ymin) dan (Xmax, ymax).
Lokasi (IX, IY) dari tepi persimpangan dengan sisi kiri jendela ada lah: IX = xmin IY = kemiringan * (xmin-x1) + y1, di mana kemiringan = (y2-y1) / (x2-x1)\ Lokasi perpotongan perpotongan dari dar i sisi kanan jendela adala h: IX = Xmax IY = kemiringan * (Xmax-x1) + y1, di mana kemiringan = (y2-y1) / (x2-x1) Lokasi perpotongan perpotongan dari dar i sisi atas jendela adalah: IX = x1 + (ymax - y1) IY = ymax Lokasi perpotongan perpotongan dari dar i sisi bawah jendela adalah: IX = x1 + (ymin - y1) IY = ymin
Dibawah ini adalah adala h contoh kasus dalam bentuk segitiga :
Unt Unt
jaan, penghit jadii 3 mempermudah penger jaan, penghitungan ungan koordi koordinat nat pot potongnya di di agi agi men jad
bagi bagian, yait ya itu u bagi bagian at atas, k ir i, dan kanan. erpot erpotongan bagi bagian at atas Unt Untuk titi uk titik k A(0,5) terhubung ol oleh edge AB AB dan AC. Sehi Sehingga ver tex yang ter li l bat ibat adal adalah C( C (5,2) dan B(5,-2). Sehi Sehingga perhit perhitungannya ungannya :
Unt Untuk perpot perpotongan ant antara ver tex A dan C adal ada lah: ah: IY=Ymax=3 slope = (y2-y1)/ (y2-y1) /(x2-x1)=(-2-5)/ (x2-x1)=(-2-5)/(5+0)=7/ (5+0)=7/-5=-1.4 IX =(ymax-y1) /slope + x1= ((3-5) / (-1.4)) + 0 = 1.42 + 0 = 1.42 Sehi Sehingga di didapat dapat titik titik baru yait ya itu u (1.42, 3)
Unt Untuk perpot perpotongan ant antara ver tex A dan B adal ada lah: ah: IY=Ymax=4 slope = (y2-y1)/ (y2-y1) /(x2-x1)=(-2-5)/ (x2-x1)=(-2-5)/(-5+0)=-7/ (-5+0)=-7/-5= 1.4 IX =(ymax-y1) /slope + x1= ((3-5) / (1.4)) + 0 = -1.42 + 0 = -1.42 Sehi Sehingga di didapat dapat titik titik baru yait ya itu u (1.42, 3)
erpot erpotongan bagi bagian kanan Unt Untuk titi uk titik k B B(5,2) terhubung ol oleh edge BA dan BC. Sehi Sehingga ver tex yang ter li l bat ibat adal adalah A(0,5) dan C(-5,-2). Sehi Seh ingga perhit perhitungannya ungannya :
Unt Untuk perpot perpotongan ant antara ver tex B dan A adal ada lah: ah: IX=Xmax=4
slope = (y2-y1)/(x2-x1) = (5-(-2))/(0-5) = 7/-5 = -1.4 IY =(xmax-x1) *slope + y1= ((4-5) *(-1.4)) + (-2) = 1.4 + -2 = -0.6 Sehingga didapat titik baru yaitu (4,-0.6)
Untuk perpotongan antara vertex B dan C adalah: IY=Xmax=4 slope = (y2-y1)/(x2-x1) = (-2-(-2))/(-5-5) (-2-(-2))/(-5-5) = 0/-10 = 0 IY =(xmax-x1) *slope + y1= ((4-5) *(0)) + (-2) = 0 + -2 = -2 Sehingga didapat titik baru yaitu (4,2)
Perpotongan erpotongan bagian kiri Untuk titik B(5,2) terhubung oleh edge BA dan B C. Sehingga vertex yang terlibat adalah A(0,5) dan C(-5,-2). Sehingga perhitungannya :
Untuk perpotongan antara vertex C dan A adalah: IX=Xmin=-4 slope = (y2-y1)/(x2-x1) = (5-(-2))/(0+) = 7/5 = 1.4 IY =(xmin-x1) *slope + y1= ((-4 + 5) * (1.4)) + (-2) = 1.4 + -2 = -0.6 Sehingga didapat titik baru yaitu (-4,-0.6)
Untuk perpotongan antara vertex C dan B adalah: IY=Xmin=-4 slope = (y2-y1)/(x2-x1) = (-2-(-2))/(-5-5) (-2-(-2))/(-5-5) = 0/-5 = 0 IY =(xmax-x1) *slope + y1= ((4-5) *(0)) + (-2) = 0 + -2 = -2 Sehingga didapat titik baru yaitu (-4,-2)
b. Algoritma Liang-Barsky
Tahun 1983, Liang-Barsky mengusulkan sebuah metode untuk melakukan kliping. Meskipun konsepnya hampir sama dengan algoritma yang telah ada, tetapi perhitungannya menjadi lebih kompleks. Metode yang digunakan menggunakan bentuk parametric bentuk parametric untuk persamaan garis. Algortima ini akan sangat baik jika bekerja pada window persegi panjang (rectangle window). window).
Liang-Barsky menginisialisasikan garis batas window kiri dan bawah sebagai garis batas minimum dan batas window kanan dan atas sebagai batas maksimum, jika ada bagian dari poligon yang berada diantara batas minimum dan maksimum maka bagian poligon tersebut akan ditampilkan pada layar window klip. Pada algoritma Liang-Barsky, berlaku persamaan yang berlaku untuk setiap titik pada poligon, poligon, dimana persamaan ini akan a kan diterapkan setelah rutin dari algortima a lgortima Liang-Barsky dijalankan. Persamaan yang dibuat digunakan untuk menentukan titik-titik baru atau titik yang akan membentuk garis dan garis yang terbentuk akan ditampilkan kedalam window klip. Persamaan ini berlaku untuk segmen garis yang berada antara garis batas window minimum dan garis batas window maksimum. Persamaan yang berlaku berlaku adalah :
X ! X 1
( X 2 X 1 ) * t ! X 1
dX * t
dan
Y ! Y 1 (Y 2
-
Y 1 ) * t ! Y 1 dY * t
Prinsip Kerja Algoritma Liang-Barsky
Seperti yang telah dijelaskan sebagian, Liang-Barsky menginisialisasikan batas-batas window kedalam dua bagian, yaitu bata minimum dan batas maksimum, batas minimum terdiri dari batas kiri dan batas bawah sedangkan batas maksimum terdiri dari batas kanan dan batas atas. Jalan algoritma akan dijelaskan dibawah ini : 1. Kita set batas minimum dengan nilai nol, berarti batas kiri dan bawah bernilai nol (
t min
!
0 ), batas kanan dan batas atas bernilai satu ( t max
! 1 ).
2. Jika sebuah titik kurang dari garis batas window atau sebuah titik lebih dari garis batas window ( t t min atau t " t max ) maka titik tersebut kita biarkan. 3. Jika titik tersebut berpotensi masuk atau memiliki arah masuk kedalam window maka kita set t min
!
t , jika titik tersebut berpotensi keluar maka kita set t max
!
t .
4. Jika t min t max maka kita akan menemukan dua buah titik baru yang akan membentuk garis dengan
koordinat x1
dx * t min , y1 dy * t min , x1 dx * t max , y1 dy * t max ,
ini menunjukan bahwa garis gar is awal yang terbentuk melewati dua buah garis batas window.
Setiap garis yang terbentuk akan mengikuti persamaan dibawah ini : L (t )
Dimana :
! p 0
t ( p1 p 0 ) ! (1 t ) p 0
tp1 ,0 e t e 1
L(t) = titik baru yang terbentuk p 0 = titik awal
p1 = titik akhir t adalah t adalah hasil perhitungan yang terbentuk dari persamaan : N e .( L(t ) p e ) ! N e .( p 0
t ( p1 p 0 ) p e )
.( p 0
p e ) t
!
!
e
e
.( p1 p 0 ))
0
N e menunjukan titik normal sisi luar dari klip window e, p e menjadi titik penyimpanan untuk sisi e. p e disebut juga dengan ³P ³ Potentially Entering´, segmen garis yang mengarah atau menuju ke dalam window, nilai p e pun bisa berbeda-beda bergantung pada batas mana garis tersebut bisa disebut sebagai PE. Sedangkan garis yang meninggalkan window atau garis yang titik awalnya berada didalam window dan garis tersebut menuju keluar window maka segmen garis yang keluar terhadap batas perpotongan disebut sebagai ³ Potentially Leaving´ atau PL. Nilai t bisa t bisa didapatkan dari persamaan diatas dengan memecahkannya memecahkannya menjadi :
t !
N e .( p e
p o )
N e .( p1 p 0 )
.
Penjelasan tentang algoritma Liang-Barsky akan dipaparkan dibawah ini : 1. Set i = 1, apakah i lebih dari banyaknya titik yang membentuk poligon? Jika iya, maka lakukan no.19, jika tidak maka no.2. 2. Apakah isama dengan banyaknya titik? Jika iya maka set p1 set p1 = titik ke-i dan p2 dan p2 = titik ke-i+1, ke-i+1, jika tidak maka set p1 set p1 = titik ke-i dan p2 dan p2 = titik ke-1. ke-1. 3. Set dx = ( p2.x ± p1.x), p1.x), P P = = (-1* (-1* dx), dx ), Q = ( P1.x ± x ), M1 ), M1 = 0, M2 0, M2 = 1. ¡
4. Panggil function function Clip (P,Q,M1,M2) pada no.11, Jika Clip = Tr ue maka Set P Set P = dx, dx, Q = (xR ± p1.x), p1.x) , M1 = 0, M2 0, M2 = 1, jika tidak lakukan no.19. 5. Panggil function function Clip (P,Q,M1,M2) pada no.11, jika Clip = tr ue maka Set P Set P = (-1 * dy), dy), Q = (p1.y ± yT), yT) , M1 = 0, 0, M2 = 1, 1, jika tidak lakukan no.19. 6. Panggil function function Clip (P,Q,M1,M2) pada no.11, Jika Clip = tr ue maka Set P Set P = dy, dy, Q = (yB ± p1.y), p1.y) , M1 = 0, M2 0, M2 = 1, jika tidak maka lakukan no.19. 7. Apakah M2 Apakah M2 kurang dari 1? Jika iya maka Set p2.x Set p2.x = p1.x + (M2 * dx) dan p2.y dan p2.y = p1.y + (M2 * dy), dy) , draw = tr ue lakukan no.11, jika tidak maka lakukan no.8. 8. Apakah M1 Apakah M1 lebih dari 0? Jika iya maka Set S et p1.x p1.x = p1.x + (M1 * dx) dan p1.y dan p1.y = p1.y + (M1 * dy), dy) , draw = tr ue, jika tidak maka lakukan no.9. 9. Set garis.p1 Set garis.p1 = p1 dan garis.p2 dan garis.p2 = p2. p2. 10. Jika draw = tr ue? Jika iya maka lakukan penggambaran garis dari p1-p2, p1-p2, jika tidak maka lakukan no.19. 11. Set Clip = tr ue, lakukan no.12. 12. Apakah P Apakah P < 0? 0? Jika iya maka R maka R = Q/P lakukan Q/P lakukan no.13, jika tidak lakukan no.15. 13. Apakah R Apakah R > M2? M2? Jika iya maka Clip = f = f alse, alse, jika tidak maka lakukan no.14. 14. Apakah R Apakah R > M1? M1? Jika iya maka, M1 maka, M1 = R. R. 15. Apakah P Apakah P > 0? 0? Jika iya maka, R maka, R = Q/P , jika tidak maka lakukan no.18. 16. Apakah R Apakah R < M1? M1? Jika iya maka Clip = f = f alse, alse, jika tidak maka lakukan no.17. 17. Apakah R Apakah R < M2? M2? Jika iya maka, M2 maka, M2 = R. R. 18. Apakah Q < 0? 0? Jika iya maka Clip = f = f alse. alse. 19. Selesai.
Dibawah ini contoh proses kliping Liang-Barsky, yang menggunakan window klip rectangle dan objek yang digunakan berupa garis. Contohnya ada pada gambar2.6.
Gambar 2.6 Contoh Proses Kliping Liang-Barsky Penyelesaian untuk contoh diatas adalah : 1. Titik koordinat garis diatas adalah p1(-1,-2) - p2(2,4). 2. Set xL = 0, xR = 1, yB = 0, yT = 1 (xL batas kiri, xR batas kanan, yB batas bawah, yT batas atas). 3. dx = 2 ± (-1) = 3, dy = 4 ± (-2) = 6. 4. mMin = 0, mMax = 1 5. p1 = -dx = -3, q1 = ( x1 - xL) = -1 ± 0 = -1, r1 = q1/p1 = 1/3. 6. p2 = dx = 3, q2 = (xR - x1 ) = 1 ± (-1) = 2, r2 = q2/p2 = 2/3. 7. p3 = -dy = -6, q2 = y1 - yB = -2 ± 0 = 2, r3 = q3/p3 = 1/3. 8. p4 = dy = 6, q4 = yT - y1 = 1 ± (-2) = 3, r4 = q4/p4 = 1/2. 9. Jika (pi < 0) maka, Jika (ri> mMax) dan (ri > mMin) maka, t1 = ri. Dari contoh diatas maka t1 = 1/3. 10. Jika (pi > 0) maka, Jika (ri< mMin) dan (ri < mMax) maka, t2 = ri. Dari contoh diatas maka t2 = ½. 11. Selama t1 < t2, maka segmen tersebut berada didalam window dan dapat terlihat. 12. t1 = 1/3, x1¶ = x1 + dx * t1 = (-1 + (3. 1/3)) = 0, y1¶ = y1 + dy * t1 = -2 + (6. 1/3) = 0. 13. t2 = 1/2 , x2¶ = x1 + dx * t2 = -1 + (3.1/2) = ½ , y2¶ = y1 + dy * t2 = -1 + (6. ½) = 1. 14. Dengan perhitungan pada nomor 12 dan 13, didapatkan dua buah titik baru yaitu (x1¶, y1¶) dan (x2¶, y2¶) dengan koordinat (0,0) ± (1/2,1). Garis yang terbentuk berada didalam window klip maka garis gar is tersebut akan ditampilkan dalam window.
c. Objek Kliping Pada perkembangan dunia grafik komputer, objek sederhana yang ditampilkan pada layar disebut sebagai objek primitif.Objek primitif yang pertama dikenal adalah titik. Titik merupakan objek primitif yang dapat membangun beberapa objek primitif lain yaitu garis. Garis adalah objek primitif yang sering dijadikan sebagai objek dalam proses pengembangan kliping. Karena dengan garis kita dapat membentuk sebuah sebuah ruang atau bangun. Dalam Collins English Dictionary and Thesaurus, poligon didefinisikan sebagai suatu bidang tertutup yang dibatasi oleh tiga atau lebih sisi yang saling bertemu pada titik sudut yang sama, serta tidak saling berpotongan selain pada titik sudut tersebut. Definisi di atas berlaku untuk geometri dasar, dan bentuk yang tercakup di dalamnya dinamakan poligon standar. Contoh dari poligon standar diantaranya segitiga (triangle ( triangle), ), segi empat (rectangle (rectangle), ), segi delapan (octagon (octagon)) dan segi sepuluh (decagon ( decagon). ). Sisi dari poligon di atas hanya berpotongan pada titik sudut. Untuk bentuk yang lebih kompleks, poligon bisa dibentuk dari sisi-sisi yang saling berpotongan, dan ini berarti sisi tersebut dapat berpotongan tidak hanya/selain pada titik sudutnya. Poligon jenis ini dinamakan polygon kompleks. d. 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 lakuka n clipping tersebut
pada semua edge hingga polygon terpotong terpot ong sepenuhnya. sepenu hnya.
Berikut ini ketentuan dari algoritma a lgoritma Sutherland-Hodgman Sutherland-Hodgman : 1. Polygon dapat dipotong dengan setiap edge dari window sekali pada satu waktu. 1. Vertex yang telah terpotong akan disimpan untuk kemudian digunakan untuk memotong edge yang masih ada. 2. Perhatikan bahwa jumlah vertex biasanya berubah-ubah berubah-ubah dan sering bertambah. Pada saat mengimplementasikan algoritma akan a kan dilakukan tahap ta hap interseksi pada setiap sisi window, yaitu sebagai berikut :
1. Asumsikan bahwa kita akan memotong edge pada titik(x1, y1 ) dan (x2, y2) dengan clipping window pada titik (x min, ymin) dan (xmax, ymax). 2. Tentukan nilai slope = (y2 ± y1 ) / (x2 ± x1) pada setiap interseksi 3. Lokasi (IX,IY) dari interseksi edge dengan sisi kiri window adalah IX = x min IY = slope * (x min ± x1) + y1 1. Lokasi (IX,IY) dari interseksi edge dengan sisi kanan window adalah : IX = x max IY = slope * (x max ± x1) + y1 1. Lokasi (IX,IY) dari interseksi edge dengan sisi atas window adalah : IX = x 1 + (ymax - y1) / slope IY = y max 1. Lokasi (IX,IY) dari interseksi edge dengan sisi bawah window adalah : IX = x 1 + (ymin - y1) / slope IY = y min Contoh
Kasus :
Diketahui sebuah polygon ABC AB C dengan titik A(4,7), B(10,4), dan C(2,0). Clipping window memiliki nilai Xmin = 1, Xmax = 8, Ymin = 1, dan Y max = 6.
Contoh Kasus Polygon Clipping Dari gambar di atas dapat dilihat bahwa terdapat 6 buah titik potong yang akan dicari. Pada bagian atas clipping cl ipping window window terdapat 2 buah titik potong, yaitu perpotongan garis A C dengan Ymax dan garis AB dengan Ymax. Lalu pada bagian kanan clipping window terdapat 2 buah titik potong, yaitu perpotongan garis BA dengan X max dan garis BC 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 y
Mencari titik potong antara garis AC A C [(4,7) ; (2,0)] dan Y max .
slope = (y 2 ± y1) / (x2 ± x1)= (0 ± 7) / (2 ± 4) = -7 / -2 = 3,5 IX = x 1 + (ymax - y1) / slope = 4 + (6 ± 7) / 3,5 = 3,714 IY = y max = 6 Maka titik potongnya adalah (IX, IY) = (3,714 ; 6)
y
Mencari titik potong antara garis AB [(4,7) ; (10,4)] dan Y max .
slope = (y 2 ± y1) / (x2 ± x1).
= (4 ± 7) / (10 ± 4) = -3 / 6 = -0,5 IX = x 1 + (ymax - y1) / slope = 4 + (6 ± 7) / -0,5 = 6 IY = y max = 6 Maka titik potongnya adalah (IX, IY) = (6, 6)
1. Interseksi bagian kanan
y
Mencari titik potong antara garis BA [(10,4) ; (4,7)] dan X max .
slope = (y 2 ± y1) / (x2 ± x1). = (7 ± 4) / (4 ± 10) = 3 / -6 = -0,5 IX = x max = 8 IY = slope * (x max ± x1) + y1 = -0,5 * (8 ± 10) + 4 = 5 Maka titik potongnya adalah (IX, IY) = (8, 5)
y
Mencari titik potong antara garis BC B C [(10,4) ; (2,0)] dan X max .
slope = (y 2 ± y1) / (x2 ± x1). = (0 ± 4) / (2 ± 10) = -4 / -8 = 0,5 IX = x max = 8 IY = slope * (x max ± x1) + y1 = 0,5 * (8 ± 10) + 4 = 3 Maka titik potongnya adalah (IX, IY) = (8, 3)
1. Interseksi bagian bawah
y
Mencari titik potong antara garis CA [(2,0) ; (4,7)] dan Y min.
slope = (y 2 ± y1) / (x2 ± x1). = (7 ± 0) / (4 ± 2) = 7 / 2 = 3,5 IX = x 1 + (ymin - y1) / slope = 2 + (1 ± 0) / 3,5 = 2,286 IY = y min = 1 Maka titik potongnya adalah (IX, IY) = (2,286 ; 1)
y
Mencari titik potong antara garis CB [(2,0) ; (10,4)] dan Y min.
slope = (y 2 ± y1) / (x2 ± x1). = (4 ± 0) / (10 ± 2) = 4 / 8 = 0,5 IX = x 1 + (ymin - y1) / slope = 2 + (1 ± 0) / 0,5 = 4 IY = y min = 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
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 CPU dalam melakukan komputasi gambar, sehingga CPU 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.