CLIPPING 2 DIMENSI
Linda Setiawati, S.Kom.,M.Pd
TAMPILAN 2 DIMENSI
Menampilkan
gambar 2 dimensi ke
output device (misal : monitor)
Sistem
koordinat (misal : sistem
koordinat cartesian) dapat digunakan
untuk mendefinisikan sebuah gambar
Pada gambar 2 dimensi, tampilan dipilih
dengan cara menentukan sebuah sub area
dari total area gambar
Bagian gambar di dalam suatu area yang
ditentukan kemudian dipetakan pada
sistem koordinat
THE VIEWING PIPELINE
Window
• Area koordinat dunia (world-coordinate) yang dipilih
untuk ditampilkan
mendefinisikan apa yang ditampilkan
Viewport
• Area dari display device (misal:monitor) dimana
window dipetakan.
Mendefinisikan dimana harus ditampilkan
Viewing transformation
• Pemetaan bagian dari koordinat dunia ke koordinat
device.
PENGGAMBARAN 2 DIMENSI
CLIPPING 2 DIMENSI
Tidak semua garis harus digambar di area
gambar karena garis-garis yang tidak terlihat di
area gambar seharusnya tidak perlu digambar.
Metode untuk menentukan bagian garis yang
perlu digambar atau tidak perlu digambar
disebut clipping.
Clipping juga dapat diartikan sebagai suatu
tindakan untuk memotong suatu objek dengan
bentuk tertentu.
KETAMPAKAN GARIS
Posisi
ketampakan garis terhadap area
gambar (viewport) :
Garis yang terlihat seluruhnya (fully visible) :
garis tidak perlu dipotong
Garis yang hanya terlihat sebagian (partially
visible) : garis yang perlu dipotong
Garis yang tidak terlihat sama sekali (fully
invisible) : garis tidak perlu digambar
KETAMPAKAN GARIS
ALGORITMA COHENSUTHERLAND
Algoritma Cohen-Sutherland merupakan metode
untuk menentukan apakah sebuah garis perlu
dipotong atau tidak dan menentukan titik potong
garis.
Area gambar didefinisikan sebagai sebuah area
segiempat yang dibatasi oleh xmin dan
xmax,ymin dan ymax.
ALGORITMA COHENSUTHERLAND
ALGORITMA COHENSUTHERLAND
Setiap ujung garis diberi kode 4 bit dan disebut
sebagai region code. Region code ditentukan
berdasarkan area dimana ujung garis tersebut berada.
Susunan region code :
ALGORITMA COHENSUTHERLAND
CONTOH
Jika diketahui area gambar ditentukan dengan
xmin=1, ymin = 1 dan xmax=4, ymax=5 dan 2
garis :
P (–1, –2) – (5,6)
Q (–1,5) – (6,7)
C
ONTOH
maka untuk menentukan region code dari masing-masing
garis tersebut adalah :
Garis P
Ujung garis P (–1, –2)
L = 1, karena x < xmin yaitu –1 < 1
R = 0 , karena x < xmax yaitu –1 < 4
B = 1 , karena y < ymin yaitu –2 < 1
T = 0 , karena y < ymax yaitu –2 < 5
sehingga region code untuk ujung P (–1, –2) adalah 0101
Ujung garis P (5, 6)
L = 0 , karena x > xmin yaitu 5 > 1
R = 1 , karena x > xmax yaitu 5 > 4
B = 0 , karena y > ymin yaitu 6 > 1
T = 1 , karena y > ymax yaitu 6 > 5
sehingga region code untuk ujung P (5, 6) adalah 1010
Karena region code kedua ujung garis tidak 0000 maka
garis P kemungkinan bersifat partialy invisible dan perlu
C
ONTOH
Garis
Q
Ujung garis Q (–1, 5)
L = 1 , karena x < xmin yaitu –1 < 1
R = 0 , karena x < xmax yaitu –1 < 4
B = 0 , karena y > ymin yaitu 5 > 1
T = 0 , karena y = ymax yaitu 5 = 5
sehingga region code untuk ujung Q (–1, –2) adalah
0001
Ujung garis Q (6, 7)
L = 0 , karena x > xmin yaitu 6 > 1
R = 1 , karena x > xmax yaitu 6 > 4
B = 0 , karena y > ymin yaitu 7 > 1
T = 1 , karena y > ymax yaitu 7 > 5
sehingga region code untuk ujung Q (5, 6) adalah 1010
Karena region code kedua ujung garis tidak 0000
maka garis Q kemungkinan bersifat partialy invisible
dan perlu dipotong.
MENENTUKAN TITIK POTONG
Langkah berikutnya menentukan lokasi titik potong
antara garis tersebut dengan batas area gambar.
Titik potong dihitung berdasarkan bit=1 dari region
code dengan menggunakan panduan tabel berikut :
MENENTUKAN TITIK POTONG
dengan xp1,xp2,yp1, dan yp2 dihitung menggunakan
persamaan berikut ini :
MENENTUKAN TITIK POTONG
Bergantung pada lokasi ujung garis maka akan
diperoleh 2,3,atau 4 titik potong seperti gambar berikut:
Bila ditemukan titik potong lebih dari 2 pada 1 ujung maka
pilih titik potong yang ada di dalam area gambar.
CONTOH
Untuk contoh sebelumnya titik potong pada garis P
adalah :
Region Bit B = 1
titik (1.25 , 1)
Region Bit R = 1
titik (4, 4.7)
CONTOH
Cara mencari :
Titik potong garis P (-1,-2) – (5,6)
CONTOH
Region code 0101 di titik (-1,-2) :
Titik potongnya adalah (xmin,yp1) = (1, 0.67)
L = 1 → yp1 = y1 + m * (xmin – x1) = -2 + (8/6) * (1-(1))
yp1 = 0,67
CONTOH
Titik potongnya adalah (xp1,ymin) = (1.25, 1)
CONTOH
Region code 1010 di titik (5,6) :
R = 1 → yp2 = y1 + m * (xmax – x1) = 6 + (8/6) * (4-5)
yp2 = 4,7
Titik potongnya adalah (xmax,yp2) = (4, 4.7)
CONTOH
Titik potongnya adalah (xp2,ymax) = (4.25, 5)
CONTOH
Ada 4 titik potong pada garis P yaitu (1, 0.67),
(1.25,1), (4, 4.7), (4.25, 5). Pilih titik potong yang
terdapat dalam viewport yaitu (1.25,1) dan (4,
4.7).
ALGORITMA CLIPPING GARIS LIANGBARSKY
Liang-Barsky menemukan algoritma clipping garis yang lebih cepat.
Clipping yang lebih cepat dikembangkan berdasarkan persamaan
parametrik dari segmen garis dapat ditulis dalam bentuk:
Dimana dx = x2 – x1 dan dy = y2-y1. Dimana nilai u Є [0,1]. Menurut
Liang dan Barsky bentuk pertidaksamaan sebagai berkut: xwmin <=
x1 + u.dx <= xwmax ywmin <= y1 + u.dy <= ywmax
Dengan
u.pk <= qk, k=1,2,3,4
Dimana parameter p dan q ditentukan sebagai
berikut:
k = 1 (Kiri): p1 = -dx, q1= x1-xwmin
k = 2 (Kanan): p2 = dx, q2= xwmax – x1
k = 3 (Bawah): p3 = -dy, q3= y1-ywmin
k = 4 (Atas): p4 = dy, q4= ywmax-y1
Garis yang sejajar dengan salah satu batas clipping
mempunyai pk = 0 untuk nilai k=1,2,3,4 yaitu left,
right, bottom, dan top. Untuk setiap nilai k, juga
diperoleh qk < 0, maka garis sepenuhnya diluar batas
clipping. Bila qk>=0, maka garis didalam dan sejajar
batas clipping.
Bila pk < 0, garis memotong batas clipping dari luar
ke dalam, dan bila pk > 0, garis memotong batas
clipping dari dalam ke luar. Untuk nilai pk yang
tidak sama dengan 0, nilai u dapat diperoleh dengan
u = qk / pk
Untuk setiap garis, dapat dihitung nilai dan
parameter u1 dan u2 yang menentukan posisi
garis dalam bidang clipping. Nilai u1
diperlihatkan dengan batas clipping dimana
garis memotong batas clipping dari luar ke
dalam (p<0)
rk = qk / pk
Dengan nilai u1 adalah nilai maksimum dari nilai 0
dan bermacam-macam nilai r. Sebaliknya nilai u2
ditentukan dengan memeriksa batas dimana clipping
dipotong oleh garis dari dalam keluar (p > 0). nilai rk
dihitung untuk setiap batas clipping, dan nilai u2
merupakan nilai minimum dari sekumpulan nilai
yang terdiri dari 1 dan nilai r yang dihasilkan. Bila
u1 > u2, maka garis sepenuhnya berada di luar clip
window dan dapat dihilangkan; sebaliknya bila tidak
ujung dari garis yang di clip dihitung dari dua nilai
parameter u.
Untuk (pi < 0) t1 = Max (rk)
Untuk (pi > 0) t2 = Min (rk)
Jika t1 < t2 cari nilai ujung yang baru.
t1 ( x1 + dx * t1 , y1 + dy * t1) titik awal garis yang baru
t2 ( x1 + dx * t1 , y1 + dy * t1) titik ujung garis yang baru
Algoritma Liang-Barsky lebih efisien dibandingkan
dengan Cohen-Sutherland karena perhitungan titik
potong dihilangkan
CONTOH PERHITUNGAN
Diketahui titik garis P1(-1,-2) dan P2(2,4) dan
viewport xl = 0, xr = 1, yb = 0 dan yt = 1. Tentukan
endpoint baru.
JAWAB:
P1(-1,-2) , P2(2,4)
xL =0, xR=1, yB = 0, yT =1
dx= x2 – x1
= 2 – (-1) = 3
p1 = -dx ,
= -3
P2 = dx ,
=3
P3 = -dy ,
= -6
P4 = dy ,
=6
dy = y2 – y1
= 4 – (-2) = 6
q1 = x1 – xL
= -1- 0 = -1
q2 = xR – x1
= 1- (-1) = 2
q3 = y1 - yB
= -2- 0 = -2
q4 = yT - yl
= 1- (-2)= 3
q1/p1 = -1/-3
= 1/3
q2/p2 = 2/3
q3/p3 = -2/-6
= 1/3
q4/p4 = 3/6
= 1/2
Untuk (pi < 0 ) T1 = “Max” (1/3, 1/3, 0) = 1/3
Untuk (pi > 0 ) T2 = Min (2/3, 1/2, 1) = ½
T1 < T2
Perhitungan ujung baru
T1 = 1/3
X1’
= x1 + dx * t1
= -1 + ( 3 * 1/3) = -1 + 1 = 0
Y1’
= y1 + dy * t1
= -2 + 6 * 1/3 = -2 + 2 = 0
(X1’,Y1’) = (0,0)
T2 = 1/2
X2’
= x1 + dx * t2
= -1 + ( 3 * 1/2) = 1/2
Y2’
= y1 + dy * t2
= -2 + 6 * 1/2= 1
(X2’,Y2’) = (1/2,1)
LATIHAN
1.
2.
Diketahui titik awal P (1,1) dan titik akhir di Q
(10,10), dengan area clipping xmin = 1, ymin=1,
xmax= 7 dan ymax=7. Selesaikan masalah ini
dengan clipping CohenSutherland.
Berdasarkan soal no 1 lakukan clipping
menggunakan algoritma Liang-Barsky dimana
xl=1, xr= 7, yb = 1 dan yt = 7.