Clipping Grafika Komputer Murinto, M.Kom
Clipping • Prosedur yang mendefinisikan bagian gambar, baik di dalam maupun di luar suatu bidang tertentu di sebut dengan algoritma clipping/clipping • Pada transformasi viewing, perlu ditampilkan bagian gambar yang terdapat dalam window. Semua yang berada di luar window akan dibuang. • Clipping dapat diterapkan pada world coordinate, sehingga hanya isi yang berada dalam window dipetakan ke device coordinat.
Tahun Ajaran 06/07
2
Algoritma Clipping • Algoritma clipping digunakatn untuk berbagai macam primitif, yaitu : - Clipping titik - Clipping garis - Clipping area (poligon) - Clipping kurva - Clipping teks
Tahun Ajaran 06/07
3
CLIPPING TITIK • Pada Clipp window yang mempunyai bentuk persegi empat dengan posisi standar, titik P(x,y) disimpan untuk ditampilkan bila : xwmin x xwmax
ywminxywmax
• dimana batas clip window dapat berada di dalam batas world coordinate atau viewport coordinate. Tahun Ajaran 06/07
4
Clipping Garis • Prosedur clipping untuk garis dapat dijelaskan sebagai berikut :
Clipping garis diproses dengan inside-outside tes dengan memeriksa endpoint dari garis. Garis yang mempunyai kedua endpoint di dalam batas clipping, maka garis tersebut disimpan. Sedang bila kedua endpoint tidak berada di dalam, maka garis tersebut berada di luar window. Semua garis lain yang memotong satu atau lebih batas clipping memerlukan algoritma clipping yang dapat mengidentifkasi dengan efisien bahwa garis di luar batas clipping. Tahun Ajaran 06/07
5
Clipping Garis F
D D B
H
C
Hl
E
J A
J
G
clip Persegi empat Tahun Ajaran 06/07
I
G I
6
Clipping Garis D
B C Hl
A G Tahun Ajaran 06/07
7
Algoritma • Recursive Subdivision (membagi garis pada titik tengah) • Bagus untuk binary processing • Bounded number (10 atau 12) dari step (melalui ukuran pixel)
Tahun Ajaran 06/07
8
Recursive Subdivision Clipping P
1
P
0
Tahun Ajaran 06/07
Clip Persegi 9
Recursive Subdivision Clipping P
1
Clip persegi
P
0
Tahun Ajaran 06/07
Titik tengah (Midpoint) 10
Recursive Subdivision Level 1 P
Stack kedua pertengahan
P
0
Tahun Ajaran 06/07
1
Midpoint 11
Recursive Subdivision Level 2
Tahun Ajaran 06/07
12
Recursive Subdivision Level 3
Tahun Ajaran 06/07
13
Recursive Subdivision Level 3
Tahun Ajaran 06/07
14
Recursive Subdivision Level 2
Tahun Ajaran 06/07
15
Recursive Subdivision Level 3
Tahun Ajaran 06/07
16
Recursive Subdivision Level 3
Tahun Ajaran 06/07
17
Recursive Subdivision Clipping P
1
P
0
Tahun Ajaran 06/07
Clip persegi 18
Akurasi sampai 3 Binary Digits
Tahun Ajaran 06/07
19
Recursive Subdivision • Algoritma Kovergensinya Linear • Menghitung 1 binary digit tiap satu loop • Secara alami bekerja dengan shift register • stabil
Tahun Ajaran 06/07
20
Parameter persamaan Garis
P (t ) (1 t ) P 0 t P1 where,
P (0) P 0 ; P (1) P1 Tahun Ajaran 06/07
21
Clip batas-batas x = a P
1
P0 Tahun Ajaran 06/07
xa
Clipping Edge 22
Gunakan Kesamaan Segitiga P
Clipping Edge
1
P0
Clipping Edge
xa Tahun Ajaran 06/07
23
Gunakan Kesamaan Segitiga
Gunakan rasio garis ini
Yaitu,
a x0 t x1 x0
Dan , sama juga untuk garis eksplisit Tahun Ajaran 06/07
24
Clipping garis Cohen-Sutherland
Cohen-Sutherland • Metode ini mempercepat pemrosesan segmen garis dengan mengurangi jumlah perpotongan yang harus dihitung. • Setiap endpoint dari garis dalam gambar dinyatakan dalam 4 digit kode biner disebut region code • Nilai 1 pada setiap posisi bit menerangkan bahwa titik berada pada posisi region tersebut, jika tidak nilainya 0 • Nilai region code dapat ditentukan dengan 2 langkah: - hitung perbedaan antara koordinat endpoint dengan batas clipping - gunakan bit tanda resultan pada setiap perbedaan perhitungan untuk menentukan lokasi pada region
Tahun Ajaran 06/07
26
Region Outcode 1001
1000
1010
y max 0001 0101
0000 0100
x min Tahun Ajaran 06/07
0010 0110
y min
x max 27
Lihat pada Bit (neg 1) • Bit 1
sign( y max y )
• Bit 2
sign( y y min )
• Bit 3
sign( x max x)
• Bit 4
sign( x x min )
Tahun Ajaran 06/07
28
Butuh Classify Endpoint • • • •
Lihat pada C 0 C 1 Apakah yang bisa kita katakan? C 0 C 1 0 “trivial reject” Kedua ujung ada di dalam suatu baris atau kolom outside
Tahun Ajaran 06/07
29
Region Outcodes Bit1 Bit 2 Bit3 Bit 4 • • • •
Bit 1 t Atas window Bit 2 t bawah window Bit 3 t kanan window Bit 4 t Kiri window
Tahun Ajaran 06/07
30
Classify Endpoint C 0
C 1 0
Titik akhir mungkin saja tidak dalam window
Clip suatu akhir untuk Ci 0
Tahun Ajaran 06/07
31
Cohen-Sutherland Line Clipping D C B 1001
1000
1010
I
H
A
0001
0000
G
0010
F
0101
0100
0110
E Tahun Ajaran 06/07
32
Cohen-Sutherland Line Clipping D
1001
C
1000
1010 I
B A
H
0001
0000
G
0010
F
0101 Tahun Ajaran 06/07
E
0100
0110 33
Penghitungan Outcode Awal • OC(D)=1000; OC(A)=0001
1000 0001 0000
• OC(E)=0100; OC(I)=1010
0100 1010 0000
Tahun Ajaran 06/07
34
Clip dan lanjutkan • Clip lagi batas atas
y y max
• Hitung B. Keep AB • Hitung H . Keep EH
Tahun Ajaran 06/07
35
Cohen-Sutherland Line Clipping
B H
A
G F E Tahun Ajaran 06/07
36
Clip and Continue • Clip lagi batas bawah y y min • Skr test dan tolak AB karena • OC(A)=0001 and OC(B)=0001;
0001 0001 0001 0 • Tolak AB on outcode basis
Tahun Ajaran 06/07
37
Penghitungan Outcode • OC(H)=0010; OC(E)=0100
0010 0100 0000 • Saat hasil adalah 0, proses HE untuk mendapatkan FH
Tahun Ajaran 06/07
38
Cohen-Sutherland Line Clipping 1001
1010
1000
H
0001
0000
G
0010
F
0101 Tahun Ajaran 06/07
0100
0110 39
Outcode Calculations • OC(F)=0000; OC(H)=0010
0010 0100 0000 • Saat hasil adalah 0, proses HF untuk mendapatkan GF
Tahun Ajaran 06/07
40
Clip and Continue • Clip lagi batas kanan
x x max
• Dapatkan GF • kerjakan
Tahun Ajaran 06/07
41
Cohen-Sutherland Line Clipping
G F
Tahun Ajaran 06/07
42
Kapan Algoritma ini bagus? • Jika trivally rejects(accepts) banyak kasus • Bagus jika window lebar • Bagus jika window kecil • Sebagai contoh, ini akan bekerja baik dalam kasus yang ekstrim Tahun Ajaran 06/07
43
Masalah Line Clipping y y max
( x1, y1 ) ( x 0 , y 0 )
x x min Tahun Ajaran 06/07
Clipping Segi empat y y min x xmax 44
Clipped Line y y max
( x1, y1 ) ( x 0 , y 0 )
x x min Tahun Ajaran 06/07
Clipping Segiempat y y min x xmax 45
Menggambar Clipped Lines ( x1, y1 )
( x0 , y0 ) Tahun Ajaran 06/07
46
Clipped Line Punya Slope yang berbeda ! m
1 2
m
Tahun Ajaran 06/07
3 4
47
Hati-hati: Pick Right Slope
Zoom dari situasi sebelumnya
Tahun Ajaran 06/07
48
Clipping lagi x xmin x xmin ( xmin , Round (m xmin B ))
NE
M midpoint
E ( xmin , (m xmin B )) Tahun Ajaran 06/07
Clip segiempat
y ymin 49
Clipping lagi y ymin x xmin
Line clipped
B
A y ymin
y ymin 1 Tahun Ajaran 06/07
y ymin 1 2 50
Clipping lagi y ymin • Situasi kompleks • Multiple pixels terlibat pada
yy
min
• Ingin semua pixel-pixelsebagai “di dalam” • Analitik
, rounding x
memberikan A
• Kita ingin titik B
Tahun Ajaran 06/07
51
Clipping lagi • Gunakan
y ymin
Line y y min 1 2
• Round up untuk integer x terdekat • Ditemukan titik B, hasil yang diinginkan Tahun Ajaran 06/07
52