You are on page 1of 52

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
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
xw x xw s s
max min
yw x yw s s
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'
G'
Algoritma
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
Persegi
Recursive 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
Midpoint
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
P1
Recursive Subdivision Clipping
Tahun Ajaran 06/07 18
P0
Clip
persegi
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
Tahun Ajaran 06/07 20
Secara alami bekerja dengan shift
register
stabil
Parameter persamaan Garis
0 1
1 ( ) ( ) P t t t
P P
= +
Tahun Ajaran 06/07 21
0 1
,
1 (0) ; ( )
where
P P
P P
= =
Clip batas-batas x = a
P1
Tahun Ajaran 06/07 22
P
0
Clipping
Edge
a x =
P1
Clipping
Edge
Gunakan Kesamaan Segitiga
Tahun Ajaran 06/07 23
P
0
Clipping Edge

a x =
Gunakan Kesamaan Segitiga

Gunakan rasio garis ini


{
Tahun Ajaran 06/07 24
0
1 0
a x
t
x x

'
=

Dan , sama juga untuk garis eksplisit


Yaitu,
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
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
max
y
Tahun Ajaran 06/07 27
0000 0010
0110
0001
0101 0100
max
y
min
y
max
x
min
x
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 dalamsuatu
baris atau kolomoutside
0 1
0
C C
. =
Region Outcodes
Bit Atas window = t 1
1 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
{ }
0 1
0
C C
. =
Titik akhir
mungkin saja tidak
Tahun Ajaran 06/07 31
mungkin saja tidak
dalam window
Clip suatu akhir untuk 0 =
i
C
I
Cohen-Sutherland Line Clipping
D
C
B
1000
1010
1001
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)=0001
000 000 0000 = . 1 1
Tahun Ajaran 06/07 34
OC(E)=0100; OC(I)=1010
0 00 0 0 0000 = . 1 1 1
Clip dan lanjutkan
Clip lagi batas atas
Hitung B. Keep AB
max
y y =
Tahun Ajaran 06/07 35
Hitung H . Keep EH
Cohen-Sutherland Line Clipping
B
Tahun Ajaran 06/07 36
H
G
F
E
B
A
Clip 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
000 000 000 0 . = = 1 1 1
Penghitungan Outcode
OC(H)=0010; OC(E)=0100
00 0 0 00 0000 . = 1 1
Tahun Ajaran 06/07 38
Saat hasil adalah 0, proses
HE untuk mendapatkan FH
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 0 00 0000 . = 1 1
Tahun Ajaran 06/07 40
Saat hasil adalah 0, proses HF
untuk mendapatkan GF
Clip and Continue
Clip lagi batas kanan
DapatkanGF
max
x
x
=
Tahun Ajaran 06/07 41
DapatkanGF
kerjakan
Cohen-Sutherland Line Clipping
Tahun Ajaran 06/07 42
G
F
Kapan Algoritma ini bagus?
J ika trivally rejects(accepts)
banyak kasus
Bagus jika windowlebar
Tahun Ajaran 06/07 43
Bagus jika windowlebar
Bagus jika windowkecil
Sebagai contoh, ini akan bekerja
baik dalamkasus yang ekstrim
Masalah Line Clipping
)
1
,
1
( y x
max
y y =
Tahun Ajaran 06/07 44
min
y y =
min
x x =
Clipping
Segi empat
)
0
,
0
( y x ' '
1 1
max
x x =
Clipped Line
)
1
,
1
( y x
max
y y =
Tahun Ajaran 06/07 45
min
y y =
min
x x =
Clipping
Segiempat
1 1
max
x x =
)
0
,
0
( y x ' '
Menggambar Clipped Lines
)
1
,
1
( y x
Tahun Ajaran 06/07 46
)
0
,
0
( y x
Clipped 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
Zoom dari situasi sebelumnya
min
x x = Clipping lagi
NE
min
x x =

)) (
min
( ,
min
B x m x Round +
midpoint M
Tahun Ajaran 06/07 49
E
min
y y =

)) (
min
( ,
min
B x m x +
Clip segiempat Clip segiempat
midpoint M
min
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 y
Clipping lagi
min
y y =
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

2
1
min
= y y
Tahun Ajaran 06/07 52
Round up untuk integer x terdekat
Ditemukan titik B, hasil yang
diinginkan

You might also like