Docstoc

pertemuan_9_LineClipping

Document Sample
pertemuan_9_LineClipping Powered By Docstoc
					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
  berada di luar window akan dibuang.
• Clipping dapat diterapkan pada world coordinate,
  sehingga hanya isi yang berada dalam window
  dipetakan ke device coordinat.



Tahun Ajaran 06/07                                      2
         Algoritma Clipping
• Algoritma clipping digunakatn untuk berbagai macam primitif,
  yaitu :
  - Clipping titik
  - Clipping garis
  - Clipping area (poligon)
  - Clipping kurva
  - Clipping teks




Tahun Ajaran 06/07                                               3
CLIPPING TITIK

• Pada Clipp window yang mempunyai
  bentuk persegi empat dengan posisi
  standar, titik P(x,y) disimpan untuk
  ditampilkan bila :
                     xw  x  xw
                       min      max
                                      yw xyw
                                       min   max

• dimana batas clip window dapat berada
  di dalam batas world coordinate atau
  viewport coordinate.
Tahun Ajaran 06/07                                 4
            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
    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.

Tahun Ajaran 06/07                                                   5
            Clipping Garis
                       F                D


                                   D
                               B                  H
                                    C
                                            Hl
                   E                              J
                           A
                                             J
                                   G
                                            I
                               G
clip                                    I
Persegi empat
  Tahun Ajaran 06/07                                  6
            Clipping Garis
                         D

                     B
                         C
                              Hl

                     A

                         G

Tahun Ajaran 06/07                  7
        Algoritma

• Recursive Subdivision (membagi
  garis pada titik tengah)
• Bagus untuk binary processing
• Bounded number (10 atau 12) dari
  step (melalui ukuran pixel)


Tahun Ajaran 06/07                   8
              Recursive Subdivision
                           Clipping

                                       P   1




P   0
                             Clip
                             Persegi

Tahun Ajaran 06/07                     9
Recursive Subdivision Clipping

         Clip                        P    1

         persegi




P   0
                      Titik tengah
                      (Midpoint)
 Tahun Ajaran 06/07                  10
Recursive Subdivision Level 1

    Stack kedua                  P   1


    pertengahan




P   0
                     Midpoint

Tahun Ajaran 06/07              11
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
Recursive Subdivision Clipping

                                 P   1




 P   0
                      Clip
                      persegi

 Tahun Ajaran 06/07             18
     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
  register
• stabil


Tahun Ajaran 06/07                       20
       Parameter persamaan Garis


    P (t )  (1  t ) P 0  t P1
    where,
    P (0)  P 0 ; P (1)  P1

Tahun Ajaran 06/07                 21
                Clip batas-batas x = a

                                             P
                                             1




P0
                                 Clipping

Tahun Ajaran 06/07
                         xa     Edge
                                        22
  Gunakan Kesamaan Segitiga

          Clipping                       P 1

          Edge


                     
P0                         Clipping Edge


Tahun Ajaran 06/07
                     xa            23
    Gunakan Kesamaan Segitiga

    Gunakan rasio garis ini

                          a  x0
    Yaitu,
                     t 
                          x1  x0
    Dan , sama juga untuk garis eksplisit
Tahun Ajaran 06/07                          24
  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
  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


Tahun Ajaran 06/07                                            26
                             Region Outcode

                     1001      1000     1010
                                               y max
                     0001      0000     0010
                                               y min
                     0101      0100     0110
                            x min     x max
Tahun Ajaran 06/07                                     27
             Lihat pada Bit (neg 1)

• Bit 1               sign( y max  y )
• Bit 2               sign( y  y min )
• Bit 3               sign( x max  x)
• Bit 4               sign( x  x min )
Tahun Ajaran 06/07                         28
         Butuh Classify Endpoint

•   Lihat pada C 0  C 1
•   Apakah yang bisa kita katakan?
•   C 0  C 1  0  “trivial reject”
•   Kedua ujung ada di dalam suatu
    baris atau kolom outside


Tahun Ajaran 06/07                     29
                           Region Outcodes

                     Bit1 Bit 2 Bit3 Bit 4

•     Bit 1  t  Atas window
•     Bit 2  t  bawah window
•     Bit 3  t  kanan window
•     Bit 4  t  Kiri window
Tahun Ajaran 06/07                           30
                     Classify Endpoint


C 0       C 1  0     Titik akhir
                          mungkin saja tidak
                          dalam window
Clip suatu akhir untuk Ci  0


Tahun Ajaran 06/07                        31
     Cohen-Sutherland Line Clipping
                                 D
                         C
                                         1010    I
               B 1001        1000
A                                            H
                                         G
                   0001      0000        0010
                                     F
                   0101      0100        0110
                             E
    Tahun Ajaran 06/07                               32
Cohen-Sutherland Line Clipping
                                 D
                         C
            1001                 1000        1010
                                                 I
               B
                                             H
A                                        G
            0001                 0000        0010
                                     F
            0101             E   0100        0110
    Tahun Ajaran 06/07                               33
 Penghitungan Outcode Awal

     • OC(D)=1000; OC(A)=0001
           1000  0001  0000

     • OC(E)=0100; OC(I)=1010
             0100  1010  0000

Tahun Ajaran 06/07                34
                     Clip dan lanjutkan

• Clip lagi batas atas      y  y max
• Hitung B. Keep AB
• Hitung H . Keep EH




Tahun Ajaran 06/07                      35
     Cohen-Sutherland Line Clipping



               B
A                                    H
                                 G


                             F
                         E
    Tahun Ajaran 06/07                   36
                     Clip and Continue
 • Clip lagi batas bawah y  y min
 • Skr test dan tolak AB karena
 • OC(A)=0001 and OC(B)=0001;
         0001  0001  0001  0
 • Tolak AB on outcode basis


Tahun Ajaran 06/07                   37
               Penghitungan Outcode

     • OC(H)=0010; OC(E)=0100
            0010  0100  0000
     • Saat hasil adalah 0, proses
          HE untuk mendapatkan FH



Tahun Ajaran 06/07                   38
 Cohen-Sutherland Line Clipping

              1001   1000       1010

                                H
                            G
              0001   0000       0010
                        F
              0101   0100       0110

Tahun Ajaran 06/07                     39
                     Outcode Calculations

• OC(F)=0000; OC(H)=0010
            0010  0100  0000
• Saat hasil adalah 0, proses HF
  untuk mendapatkan GF


Tahun Ajaran 06/07                      40
                      Clip and Continue

• Clip lagi batas kanan
                 x  x max
• Dapatkan GF
• kerjakan



Tahun Ajaran 06/07                        41
Cohen-Sutherland Line Clipping




                          G


                      F


 Tahun Ajaran 06/07           42
    Kapan Algoritma ini bagus?

• Jika trivally rejects(accepts)
  banyak kasus
• Bagus jika window lebar
• Bagus jika window kecil
• Sebagai contoh, ini akan bekerja
  baik dalam kasus yang ekstrim
Tahun Ajaran 06/07                   43
                        Masalah Line Clipping
                                                y  y max


                                 ( x1, y1 )

                                               Clipping
       
( x0 , y0 )                                    Segi empat


                                                 y  y min
           x  x min                      x  xmax
   Tahun Ajaran 06/07                                   44
                        Clipped Line
                                       y  y max


                        ( x1, y1 )

                                      Clipping
       
( x0 , y0 )                           Segiempat


                                        y  y min
           x  x min             x  xmax
   Tahun Ajaran 06/07                          45
        Menggambar Clipped Lines
                          ( x1, y1 )




          ( x0 , y0 )
Tahun Ajaran 06/07                     46
       Clipped Line
Punya Slope yang berbeda !

      1
m 
      2


                           3
                      m
                           4



 Tahun Ajaran 06/07            47
            Hati-hati: Pick Right Slope




               Zoom dari situasi sebelumnya


Tahun Ajaran 06/07                            48
                          Clipping lagi x  xmin
                x  xmin              NE

( xmin , Round (m xmin  B ))
                          M midpoint


                                       E

                       Clip segiempat
                                                  y  ymin
( xmin , (m xmin  B ))
     Tahun Ajaran 06/07                                      49
                      Clipping lagi y  ymin

x  xmin                       Line clipped

                B        A
                                                y  ymin




                                              y  ymin  1
                                                         2
                             y  ymin  1
 Tahun Ajaran 06/07                                   50
                     Clipping lagi y  ymin

• Situasi kompleks
• Multiple pixels terlibat pada          yy
                                              min
• Ingin semua pixel-pixelsebagai “di dalam”
• Analitik           , rounding x   memberikan A
• Kita ingin titik B



Tahun Ajaran 06/07                                  51
Clipping lagi                    y  ymin

• Gunakan               Line y  y min  1
                                          2

• Round up untuk integer x terdekat
• Ditemukan titik B, hasil yang
  diinginkan

Tahun Ajaran 06/07                            52

				
DOCUMENT INFO
Shared By:
Categories:
Tags:
Stats:
views:143
posted:4/27/2011
language:Indonesian
pages:52