Clipping
Grafika Komputer
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
Tahun Ajaran 06/07 2
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.
Algoritma Clipping
• Algoritma clipping digunakatn untuk berbagai macam primitif, yaitu :
- Clipping titik - Clipping garis
- Clipping area (poligon) - Clipping kurva
Tahun Ajaran 06/07 3
- Clipping kurva - Clipping teks
CLIPPING TITIK
• Pada Clipp window yang mempunyai bentuk persegi empat dengan posisi standar, titik P(x,y) disimpan untuk ditampilkan bila :
Tahun Ajaran 06/07 4
ditampilkan bila :
• dimana batas clip window dapat berada di dalam batas world coordinate atau
viewport coordinate.
max min x xw
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
Tahun Ajaran 06/07 5
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.
Clipping Garis
D D F B H C Tahun Ajaran 06/07 6 A E C G G J J I I clip Persegi empat l H B
Clipping Garis
C D Tahun Ajaran 06/07 7 A C l H GAlgoritma
• Recursive Subdivision (membagi garis pada titik tengah)
• Bagus untuk binary processing
Tahun Ajaran 06/07 8
• Bagus untuk binary processing
• Bounded number (10 atau 12) dari step (melalui ukuran pixel)
Recursive Subdivision
Clipping
P1 Tahun Ajaran 06/07 9 P0 Clip PersegiRecursive Subdivision Clipping
P1 Clip persegi Tahun Ajaran 06/07 10 P0 Titik tengah (Midpoint)P1
Recursive Subdivision Level 1
Stack kedua pertengahan
Tahun Ajaran 06/07 11
P0
Recursive Subdivision Level 2
Recursive Subdivision Level 3
Recursive Subdivision Level 3
Recursive Subdivision Level 2
Recursive Subdivision Level 3
Recursive Subdivision Level 3
P1
Recursive Subdivision Clipping
Tahun Ajaran 06/07 18
P0
Clip persegi
Akurasi sampai 3 Binary Digits
Recursive Subdivision
• Algoritma Kovergensinya Linear
• Menghitung 1 binary digit tiap satu loop • Secara alami bekerja dengan shift
Tahun Ajaran 06/07 20
• Secara alami bekerja dengan shift register
Parameter persamaan Garis
0 11
( )
(
)
P t
t
P
t
P
Tahun Ajaran 06/07 21 0 1,
1
(0)
;
( )
where
P
P
P
P
Clip batas-batas
x = a
P
1 Tahun Ajaran 06/07 22 P0 Clipping Edgea
x
P
1Clipping Edge
Gunakan Kesamaan Segitiga
Tahun Ajaran 06/07 23
P0 Clipping Edge
a
x
Gunakan Kesamaan Segitiga
Gunakan rasio garis ini
Tahun Ajaran 06/07 24 0 1 0a
x
t
x
x
Dan , sama juga untuk garis eksplisit Yaitu,
Clipping garis
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
Tahun Ajaran 06/07 26
• 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
Region Outcode
1000 1010 1001 maxy
Tahun Ajaran 06/07 27 0000 0010 0110 0001 0101 0100 maxy
miny
maxx
minx
Lihat pada Bit (neg
1)
• Bit 1 • Bit 2 max)
(
y
sign y
)
(
sign y
y
Tahun Ajaran 06/07 28 • Bit 2 • Bit 3 • Bit 4 min)
(
sign y
y
max)
(
x
sign x
min)
(
sign x
x
Butuh Classify Endpoint
• Lihat pada
• Apakah yang bisa kita katakan?
• “trivial reject” 0 1 C C 0 C C Tahun Ajaran 06/07 29 • “trivial reject”
• Kedua ujung ada di dalam suatu baris atau kolom outside
0 1 0
Region Outcodes
• Bit 1
t
Atas window1 2 3 4
Bit
Bit
Bit
Bit
Tahun Ajaran 06/07 30
• Bit Atas window
• Bit bawah window
• Bit kanan window
• Bit Kiri window
t
1
t
2
t
3
t
4
Classify Endpoint
C 0 C1 0
Titik akhirmungkin saja tidak
Tahun Ajaran 06/07 31
mungkin saja tidak dalam window
I
Cohen-Sutherland Line Clipping
D C B 1001 1000 1010 Tahun Ajaran 06/07 32 H G F E B A 0000 0010 0110 0001 0101 0100
I D C B 1000 1001 1010
Cohen-Sutherland Line Clipping
Tahun Ajaran 06/07 33 H G F E B A 0000 0010 0110 0001 0101 0100
Penghitungan Outcode Awal
• OC(D)=1000; OC(A)=0001000
000
0000
1
1
Tahun Ajaran 06/07 34 • OC(E)=0100; OC(I)=10100 00
1
1 1
0 0
0000
Clip dan lanjutkan
• Clip lagi batas atas
• Hitung B. Keep AB
max
y
y
Tahun Ajaran 06/07 35
Cohen-Sutherland Line Clipping
B Tahun Ajaran 06/07 36 H G F E B AClip and Continue
• Clip lagi batas bawah
• Skr test dan tolak AB karena
• OC(A)=0001 and OC(B)=0001;
min
y
y
Tahun Ajaran 06/07 37
• OC(A)=0001 and OC(B)=0001; • Tolak AB on outcode basis
Penghitungan Outcode
• OC(H)=0010; OC(E)=0100
00 0
1
0 00
1
0000
Tahun Ajaran 06/07 38
• Saat hasil adalah 0, proses
H
Cohen-Sutherland Line Clipping
1000 1010 1001 Tahun Ajaran 06/07 39 H G F 0000 0010 0110 0001 0101 0100
Outcode Calculations
• OC(F)=0000; OC(H)=0010
00 0
1
0 00
1
0000
Tahun Ajaran 06/07 40
• Saat hasil adalah 0, proses HF untuk mendapatkan GF
Clip and Continue
• Clip lagi batas kanan • Dapatkan GF max
x
x
Tahun Ajaran 06/07 41 • Dapatkan GF • kerjakanCohen-Sutherland Line Clipping
Tahun Ajaran 06/07 42
G
Kapan Algoritma ini bagus?
• Jika trivally rejects(accepts) banyak kasus
• Bagus jika window lebar
Tahun Ajaran 06/07 43
• Bagus jika window lebar • Bagus jika window kecil
• Sebagai contoh, ini akan bekerja baik dalam kasus yang ekstrim
Masalah Line Clipping
) 1 , 1 (x y max y y Tahun Ajaran 06/07 44 min y y min x x Clipping Segi empat ) 0 , 0 ( x y 1 1 max x x Clipped Line
) 1 , 1 (x y max y y Tahun Ajaran 06/07 45 min y y min x x Clipping Segiempat 1 1 max x x ) 0 , 0 ( x y Menggambar Clipped Lines
) 1 , 1 (x y Tahun Ajaran 06/07 46 ) 0 , 0 (x yClipped Line
Punya Slope yang berbeda !
2 1 m Tahun Ajaran 06/07 47 4 3 m
Hati-hati: Pick Right Slope
Tahun Ajaran 06/07 48
min
x
x
Clipping lagi
NE min x x )) ( min ( , min mx B x Round midpoint M Tahun Ajaran 06/07 49 E min y y )) ( min ( , min mx B x Clip segiempat Clip segiempat midpoint Mmin
y
y
Clipping lagi
min y y min x x Line clipped B A Tahun Ajaran 06/07 50 min y y 1 min y y 2 1 min y yClipping lagi
y
y
min
• Situasi kompleks
• Multiple pixels terlibat pada
• Ingin semua pixel-pixelsebagai “di dalam”
min
y
y
Tahun Ajaran 06/07 51
• Ingin semua pixel-pixelsebagai “di dalam” • Analitik , rounding x memberikan A • Kita ingin titik B
Clipping lagi
min
y
y
• Gunakan Line
• Round up untuk integer x terdekat
12min
y
y
Tahun Ajaran 06/07 52
• Round up untuk integer x terdekat • Ditemukan titik B, hasil yang