Sabtu, 30 Oktober 2010

CLIPPING POLYGON


Clipping polygon Sutherland – Hodgman

Sutherland-Hodgman melakukan dengan kliping poligon subjek terhadap setiap sisi klip menghasilkan poligon subjek menengah. Walaupun kita belum melakukannya, algoritma Sutherland -Hodgman mudah meluas sampai 3 dimensi. 
Dan metode ini juga mempunyai ketentuan untuk menghasilkan clipping polygon yaitu:
Berikut contoh:

 
Hasil clipping polygon diatas:
Pemotongan yang dilakukan 
  1. Potong Kiri
  2. Potong Kanan
  3. Potong Atas
  4. Potong Bawah 
Pemotongan (clipping) Pada contoh diatas tidak melibatkan potong kanan dan potong bawah dikarenakan gambar diatas tidak terdapat objek dibawah dan kanan viewport.

untuk Clipping polygon Sutherland – Hodgman juga mempunyai cara hitung Intersection berikut rumusnya:

terlebih dahuhu asumsikan bahwa kita kliping tepi sebuah polgon dengan simpul di (x1, y1) dan (x2, y2) terhadap jendela klip dengan simpul di (xmin, ymin) dan (Xmax, ymax).

 Lokasi (IX, IY) dari tepi persimpangan dengan sisi kiri jendela adalah:
  1. IX = xmin IX = xmin
  2. IY = slope*(xmin-x1) + y1, where the slope = (y2-y1)/(x2-x1) IY = kemiringan * (xmin-x1) + y1, di mana kemiringan = (y2-y1) / (x2-x1)
Lokasi persimpangan tepi dengan sisi kanan jendela adalah:
  1. IX = xmax IX = Xmax
  2. IY = slope*(xmax-x1) + y1, where the slope = (y2-y1)/(x2-x1) IY = kemiringan * (Xmax-x1) + y1, di mana kemiringan = (y2-y1) / (x2-x1)
Perpotongan tepi poligon dengan sisi atas jendela adalah:
  1. IX = x1 + (ymax - y1) / slope IX = x1 + (ymax - y1) / lereng
  2. IY = ymax IY = ymax
Akhirnya, persimpangan tepi dengan sisi bawah jendela adalah:
  1. IX = x1 + (ymin - y1) / slope IX = x1 + (ymin - y1) / lereng
  2. IY = ymin IY = ymin 


Jumat, 29 Oktober 2010

Komputer Grafik = CLIPPING =

Kliping adalah pemotongan suatu objek dengan bentuk tertentu
Alasan dilakukannya kliping :
  • Menghindari perhitungan koordinat pixel yang rumit (karenanya kliping dilakukan sebelum rasterisasi).
  • Interpolasi parameter
Dan untuk sarana pemotong objek dinamakan 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.
Metode clipping garis :
1. Cohen Sutherland
2. Liang Barsky
3. Blinn’s

Clipping Line :
Mencari Nilai u:




 Ketentuan:

Clipping line :
      Garis pertama pada titik (1,1) dan (8,8)
Perhitungannya:
Dengan xmin=3
         
u  = 3-1/8-1 
    = 2/7 
          Nilai u terbukti a 0 ≤ 2/7  ≤ 1
           
Maka :
  y' =  1 + 2/7 (7) 
      =3



      
cek atas:
 dengan xmin = 5
                           u = 5-3/8-3
                           u = 2/5
Nilai u terbukti à 0 ≤ 2/5  ≤ 1
Maka :
y' = 3 + 2/5 (5)
    = 5 
                    
  
Kesimpulan:
Maka clipping garis pertama didapatkan dengan titik: (3,3) dan (5,5)

Garis Kedua pada titik (2,3) dan (10,3)   Perhitungannya   Dengan xmin=3  
u = 3-2/10-2
u = 1/8

Nilai u terbukti u 0 ≤ 1/8  ≤ 1
  Maka:
y' = 3 + 3-2/10-2(0) = 3

Cek titik selanjutnya: 
Dengan xmax=9  
                       u = 9-3/10-3 = 6/7

Nilai u terbukti u 0 ≤ 6/7  ≤ 1
Maka :
              y' = 3 + 6/7 (0)
                  = 3
Kesimpulan: Maka clipping garis kedua didapatkan dengan titik: (3,3) dan (9,3)

Gambar hasil clipping garis tersebut:


Menurut Cohen Sutherland


Hubungan antara sebuah garis dengan jendela kliping dapat ditulis seperti hubungan antara titik awal dan titik akhir sebuah garis dengan jendela kliping. Untuk menentukan relasi tersebut diperlukan suatu struktur data pembantu yang disebut pointcode.

Berdasarkan urutan kode, pointcode ditentukan :


PointCode :
Contoh clipping line cohen Sutherland:
Xmin=3, Xmax=9, Ymin=2, Ymax=5
Garis pertama:
Garis Kedua
Po:(1,3)
Po:(3,6)
P1:(6,7)
P1:(10,6)

Ketentuan:
Kiri jika x < xmin =1
Kanan jika x > xmax =1
Bawah jika y < ymin =1
Atas jika y > ymax =1

 
Ket * : dibaca dari bawah ke atas
Kemudian:Po AND p1
0001
1000   AND
0000  kemungkinan ada yang dapat diantara viewport

 
Kemudian:Po AND p1
1000
1010   AND
1000 tidak ada garis yang akan ditampil di viewport
Hasil gambarnya: