Grafik komputer
dan pengolahan citra
Klipping
Definisi
• Kliping adalah
pemotongan suatu objek dengan bentuk tertentu
• Alasan dilakukannya kliping
:
– Menghindari perhitungan koordinat pixel yang rumit
(karenanya kliping dilakukan sebelum rasterisasi).
– Interpolasi parameter
• Sarana pemotong objek disebut jendela kliping.
• Fungsi jendela
kliping adalah untuk mengidentifikasi
objek yang akan di-clipping
dan memastikan bahwa data yang diambil
hanya yang terletak di dalam
jendela clipping.
• Bentuk jendela kliping :
– Segi empat, segi tiga
– Lingkaran atau
ellips
– Polygon dan lain-lain.


Xmin O X Ymin
O Y
O Xmax dan








Xmin
Xmax
Ymin
• Pada gambar di atas, terdapat sebuah jendela kliping
dengan parameter sebagai berikut :
Xmin - batas minimum sumbu X Xmax - batas maksimum sumbu x Ymin - batas minimum sumbu Y Ymax - batas maksimum sumbu Y
• Terdapat w2 buah titik P1(x,y) dan P2(x,y) dengan :
– P1 terletak di dalam jendela kliping,karena
P1.x < Xmax dan P1.x > Xmin
serta
P1.y < Ymax dan P1.y >
Ymin
– P2 terletak di dalam jendela kliping,karena
P2.x < Xmin
walaupun P2.x < Xmax
P2.y < Ymax dan P2.y >
Ymin
Kliping Garis (1/2)
• Kliping sebuah garis P1 dan P2 dengan
jendela L, R, T, dan B akan berhubungan dengan
garis yang terletak di dalam jendela
dan garis di luar jendela. Garis yang berada di dalam jendela
adalah garis yang akan ditampilkan (P1’ – P2’), sedangkan garis yang terletak di luar jendela dibuat tidak tampak (P1 –
P1’ dan P2 – P2’)
T
P2

L
R
P1’
P1
B
• Untuk menentukan letak sebuah garis di dalam jendela kliping dilakukan analisis letak titik yang menentukan garis tersebut
dan memastikan bahwa titik-titik tersebut berada di dalam
jendela kliping.
Titik Asli
|
Titik Semu
|
Kondisi X
|
Kondisi Y
|
P1(x,y)
|
P1’(x,y)
|
P1(x) ≥ L
|
P1(y) ≤ T
|
P2(x,y)
|
P2’(x,y)
|
P2(x) ≤ R
|
P2(x) ≥ B
|
Kliping Garis (2/2)
• Kondisi garis terhadap jendela kliping :
– Invisible
: Tidak kelihatan,
terletak di luar jendela kliping
– Visible : Terletak di dalm jendela kliping
– Halfpartial : Terpotong
sebagian oleh jendela kliping, bisa hanya dnegan
bagian atas, bawah, kiri atau kanan
– Vollpartial : Terpotong penuh oleh jendela kliping. Garis melintasi jendela kliping
• Algoritma Umum Kliping
Mulai
Baca Garis
Baca Jendela
Klip ing
Invisible Cek Garis
Visible
Kliping Garis
P’(x,y),P2'(x,y)
Gambar Garis
Selesai
Kliping Garis
Cohen-Sutherland (1/6)
• Hubungan antara sebuah garis dengan jendela kliping
dapat ditulis seperti hubungan antara
titik
awal dan titik
akhir sebuah garis dengan jendela
kliping
P1(x,y) dan P2(x,y) ⇔ W(L,R,T,B)
• Untuk menentukan relasi tersebut diperlukan suatu struktur data pembantu yang disebut pointcode.
Dengan pointcode kita dapat mengidentifikasi posisi
titik
terhadap jendela
kliping.
• Nilai untuk pointcode l, r, t dan b adalah 1 dan 0 yang merupakan nilai logika yang dapat dimengerti dengan nilai true dan false.
• Suatu titik yang visible berarti titik tersebut terletak di dalam jendela kliping, dan
invisible jika terletak di luar
jendela kliping.
• Suatu
titik
itu
visible dengan pointcode jika
nilai l, r, t dan b adalah nol, artinya jika salah satu
nilai dari l, r,
t dan b tidak sama
degan nol maka dapat diketahui
bahwa titik tersebut terletak di luar jendela kliping dan
diketahui pada posisi mana.
Kliping Garis
Cohen-Sutherland (2/6)
• Berdasarkan urutan
kode, pointcode ditentukan :
|
|
0 0
0 0
pointcode
|
Arti Kode
|
0000
|
Terletak di dalam jendela kliping
|
0001
|
Terletak di sebelah
kiri jendela kliping
|
0010
|
Terletak di sebelah
kanan jendela kliping
|
0100
|
Terletak di sebelah
bawah jendela kliping
|
0101
|
Terletak di sebelah
kiri bawah jendela
kliping
|
0110
|
Terletak di sebelah
kanan bawah jendela kliping
|
1000
|
Terletak di sebelah
atas jendela klipig
|
1001
|
Terletak di sebelah
kiri atas jendela kliping
|
1010
|
Terleak di sebelah kanan atas jendela kliping
|
• Titik terletak di dalam jendela kliping jika jumlah keempat
pointcode adalah nol :L + R + T + B
=
0
• Titik terletak
di
luar jendela kliping jika jumlah keempat pointcode lebih besar dari nol. L +
R + T + B >
0
Kliping Garis
Cohen-Sutherland (3/6)
• Visibilitas suatu garis tergantung dari pointcode pada kedua titik yang membentuk garis tersebut, yaitu P1 dan
P2.
– Jika P1 dan P2 di dalam jendela kliping maka garis adalah
visible
– Jika salah satu dari titik P1 atau P2 di uar jendela kliping, artinya garis adalah halfpartial
– Jika titik P1 dan P2 di luar jendela kliping, artinya garis adalah
invisible.
– Jika P1 dan P2 melintasi jendela kliping, artinya garis adalah
vollpartial
• Algoritma Kliping Cohen-Sutherland :
1.
Tentukan regioncode dari setiap endpoint
2. Jika kedua endpoint memiliki regioncode 0000, maka garis berada di dalam jendela kliping. Gambar garis tersebut
3. Jika tidak, lakukan operasi logika AND untuk
kedua regioncode
3.1. Jika hasilnya 0000, maka buang
garis tersebut (tolak)
3.2 Jika tidak (hasilnya 000), maka dibutuhkan kliping
3.2.1. Pilih salah satu endpoint yang berada di luar jendela kliping
3.2.2. Cari
titik persinggungan pada
batas jendela (berdasarkan regioncode)
3.2.3. Ganti endpoint dengan titik persinggungan dan update regioncode
3.2.4. Ulangi langkah 2 hingga diperoleh garis klipping yang diterima dan yang ditolak
4. Ulangi langkah 2 untuk garis yang lain.
Kliping Garis
Cohen-Sutherland (4/6)
• Daerah titik persinggungan dapat dilihat dari nilai
bit :
– Jika bit 1 = 1, titik
persinggungan ada di atas
– Jika
bit
2 = 1, titik
persinggungan ada di bawah
– Jika bit 3 = 1, titik
persinggungan ada di kanan
– Jika bit 4 = 1, titik
persinggungan ada di kiri
• Titik persinggungan dapat dicari dengan
persamaan garis :
– Persinggungan antara batas
KIRI
dan
KANAN



– Persinggungan antara batas ATAS dan BAWAH

x = x1 + (y –y1)/m
Kliping Garis

|
C1
Garis A1- A2
1. A1=0000,A2=0000
2. (both 0000) – Yes
Garis C1 – C2
1. C1=0001,C2=0000
2. (both
0000) – No
3. AND Operation
D2
……now
1. C1=0000,C2=0000
-> accept & draw
Garis B1 – B2
C1 Æ
C2 Æ
Result
0001
0000
0000
2. (both 0000) – Yes
Æ accept & draw
1. B1=1001,B2=1010
2. (both 0000) – No
3. AND Operation
B1 Æ 1001
B2 Æ 1010
Result 1000
3.1 (not 0000) – Yes
Æ reject
3.1 (not 0000) - No
3.2 (0000) - Yes
3.2.1 Choose C1
3.2.2 Intersection point
C1’ at LEFT
3.2.3 C1 < C1’
C1 =
0000
3.2.4 repeat
2
next…….
Kliping Garis
|
100)
Diketahui jendela
kliping seperti di
atas. Bila titik P1 adalah (0,
120) dan titik P2(130, 5), carilah titik-titik persinggungan
yang membentuk garis baru
di dalam jendela kliping.
Gunakan algoritma Cohen-
Sutherland !
1. P1=1001,
P2=0100
2. (both 0000) – No
3. AND Operation
B1 Æ 0000
B2 Æ 0100
Result 0000
3.1 (not 0000)
– no
3.2 (0000)
yes
3.2.1choose P2
3.2.2 intersection with BOTTOM
boundary
m = (5-120)/(130-0) = -0.8846
x = x1 + (y –y1)/m where y = 10;
x = 130 + (10-5)/ -0.8846 = 124.35
P2’ = (124,
10)
3.2.3 update region
code
P2’ = 0000
3.2.4 repeat
step 2
next……..
….now
1. P1=1001,
P2=0100
2. (both 0000) – yes
Æ ACCEPT & DRAW
Endpoints after clipping
P1’’ = (22, 100) P2’ = 124, 10)
Kliping Poligon
Sutherland-Hodgeman (1/2)
• Kliping
poligon lebih kompleks dibandingkan kliping garis :
– Input: poligon
– Output: poligon asli, poligon
baru, atau lainnya



segitiga Ö segitiga segitiga Ö segiempat
segitiga Ö segilima
Kliping Poligon
Sutherland-Hodgeman
(2/2)
• Ide Dasar Kliping
Poligon :
– Perhatikan setiap edge pada setiap arah
pandang.
– Klip/potong poligon
dengan persamaan edge.
– Lakukan pada semua edge, hingga poligon tersebut secara penuh ter-klip/terpotong.

Tidak ada komentar:
Posting Komentar