Module Dasar Teori dan Algoritma Grafika Komputer

  

Dasar teori dan algoritma

grafika komputer

Sub Pokok Bahasan

   Geometri Dasar

   Geometri Lanjut

   Geometri Dua Dimensi

  

Geometri Dasar

Geometri Dasar

   Sistem koordinat

   Kuadran garis

   Gradien

   Algoritma garis DDA

   Algoritma garis Bresenham

   Algoritma lingkaran Bresenham

  Lailatul Husniah, S.ST

Sistem Koordinat

   Pada komputer grafik ada 3 macam sistem koordinat yang harus di perhatikan :

  

  Koordinat nyata

  

  Koordinat sistem (koordinat cartesian)

  

  Koordinat tampilan / layar

Koordinat nyata (World Koordinat)

  

Adalah koordinat yang pada saat itu objek yang bersangkutan

berada.

  Ex: koordinat sebuah kursi tergantung dari letak kursi itu ada dimana & bagaimana letaknya.

  

Dalam implementasinya koordinat nyata bisa dikatakan sebagai

WINDOW yaitu area di dunia nyata yang menunjukkan bagian yang dilihat oleh pemirsa.

Koordinat sistem (koordinat cartesian)

  

  Setiap titik yang digambar dengan teknik point-plotting lokasinya ditentukan berdasarkan sistem koordinat cartesian.

  

  Setiap titik ditentukan lokasinya melalui pasangan nilai x dan y.

  

  Dimana nilai koordinat x bertambah positif dari kiri ke kanan dan nilai y bertambah positif dari bawah ke atas.

  

Koordinat sistem (koordinat cartesian)

Koordinat tampilan/layar

  

  Arah sumbu koordinat kartesian berkebalikan dengan yang digunakan di layar komputer

  

  Pada layar komputer sumbu x bertambah positif ke kanan dan sumbu y bertambah positif ke bawah

  

  Seperti pada gambar berikut jika sebuah titik pada koordinat cartesian digambar ulang ke layar komputer maka secara visual lokasi titik tersebut akan berubah.

  Koordinat tampilan/layar

Koordinat tampilan/layar

  

  Dalam implementasinya koordinat tampilan/layar bisa dikatakan sebagai VIEWPORT yaitu area di layar monitor yang menunjukkan dimana WINDOW akan ditampilkan

  Koordinat tampilan/layar

Koordinat tampilan/layar

  

  Untuk memetakan sebuah titik di window ke titik di viewport digunakan rumus :

  Lailatul Husniah, S.ST

Garis

  

  Garis merupakan salah satu bentuk dasar dari gambar

  

  Sebuah garis dalam grafika disebut segment

  

  Garis dibuat dengan menentukan posisi titik diantara titik awal dan akhir dari suatu garis, yaitu (x1,y1) dan (x2,y2)

Kuadran Garis

   Berdasarkan arah garis maka sebuah garis dapat di salah satu area (kuadran).

   Tanda panah pada arah garis menunjukkan lokasi (x2,y2)

Kuadran Garis

  

  Pada gambar diatas, garis 1 terletak pada kuadran I, garis 2 di kuadran III, garis 3 di kuadran IV, garis 4 di kuadran II

  

  Jadi kuadran garis tidak berhubungan dengan nilai negatif maupun positif tetapi menyatakan arah garis

  Contoh

  GRADIEN

Gradien

   Nilai kecenderungan sebuah garis, dan dihitung disimbolkan dengan huruf m dengan rumus

  

Algoritma Garis DDA (Digital Differential Analyzer)

  

Merupakan salah satu algoritma menggambar garis yang

sederhana 

  Bentuk garis : 

  Cenderung mendatar Gradien bernilai 0 < m < 1 Pixel bertambah 1 pada sumbu x dan bertambah sebesar m pixel pada sumbu y

  

  Cenderung tegak Gradien bernilai m > 1 Pixel bertambah 1 pada sumbu y dan bertambah sebesar 1/m pixel pada sumbu x

  

  Miring 45 Gradien bernilai m = 1 Pixel bertambah 1 pada sumbu x dan bertambah sebesar 1 pixel pada sumbu y

Algoritma DDA

  Prinsip algoritma ini adalah mengambil nilai integer terdekat dengan jalur garis berdasarkan atas sebuah titik yang telah ditentukan sebelumnya(titik awal garis) Algoritma pembentukan garis DDA: 1. Tentukan dua titik yang akan dihubungkan dalam pembentukan garis.

  2. Tentukan salah satu titik sebagai awal(x0,y0) dan titik akhir(x1,y1).

  3. Hitung dx=x1 x0, dan dy= y1 y0 4.

  Tentukan langkah, yaitu dengan cara jarak maksimum jumlah penambahan nilai x maupun nilai y, dengan cara: 1. Bila nilai absolut dari dx lebih besar dari absolut dy, maka langkah= absolut dari dx. 2. Bila tidak maka langkah= absolutdari dy

  5. Hitung penambahan koordinat pixel yaitu x_increment=dx/langkah, dan

  y_increment=dy/langkah 6. Koordinat selanjutnya (x+x_increment, y+y_increment)

  

7. Posisi pixel pada layar ditentukan dengan pembulatan nilai koordinat tersebut

8.

  Ulangi nomor 6 dan 7 untuk menentukan posisi pixel selanjutnya,sampai x=x1 dan y=y1

Kelemahan algoritma DDA :

  

  Hanya dapat digunakan untuk nilai x1 < x2 dan y1 < y2 atau garis yang berada di kuadran I

  

ALGORITMA GARIS

BRESENHAM

Algoritma Garis Bresenham

   Dikembangkan oleh Bresenham

  

Berdasarkan selisih antara garis yang

diinginkan terhadap setengah ukuran dari pixel yang sedang digunakan

  

Algoritma Bresenham untuk dx > dy

  

Algoritma Bresenham untuk dx < dy

Contoh

   Hitung lokasi 5 titik pertama yang dilewati oleh garis (10,30) – (256,147) menggunakan algoritma bresenham!

   Gambarkan hasil perhitungannya!

Contoh

  

  gunakan algoritma untuk dx > dy Garis (10,30) – (256,147) dx = (x2 – x1) = (256 – 10) = 246 dy = (y2 – y1) = (147 – 30) = 117 e = 2 * dy – dx = 2 * 117 – 246 = -12 d1 = 2 * dy = 2 * 117 = 234 d2 = 2 * (dy – dx) = 2 * (117 – 246) = -258 x = 10 ; y = 30 e = -12  e < 0 e = e + d1 = -12 + 234 = 222 x = x + 1 = 11 ; y = y = 30 e = 222  e >= 0 e = e + d2 = 222 + -258 = -36 x = x + 1 = 12; y = y + 1 = 31

Contoh

  e = -36  e < 0 e = e + d1 = -36 + 234 = 198 x = x + 1 = 13; y =y =31 e = 198  e >= 0 e =e + d2 = 198 + -258 = -60 x = x + 1 =14; y =y +1 = 32

  Lailatul Husniah, S.ST

Lingkaran

   Untuk menggambar sebuah lingkaran hanya diperlukan menggambar titik-titik pada oktan pertama saja, sedangkan titik-titik pada kuadran lain dapat diperoleh dengan mencerminkan titik-titik pada oktan pertama.

   Dari gambar dibawah ini titik pada oktan pertama dapat dicerminkan melalui sumbu Y = X untuk memperoleh titik-titik pada oktan kedua dari kuadran pertama.

   Titik-titik pada kuadran pertama dicerminkan melalui sumbu X = 0 untuk memperoleh titik-titik pada kuadran kedua.

   Gambar berikut menunjukkan menggambar lingkaran dengan merefleksikan oktan pertama

  Lingkaran

  Lingkaran

  Algoritma Lingkaran Bresenham

Contoh

  

  Jika diketahui R = 5 dan titik terakhir yang dipilih adalah (0,5) hitung koordinat titik berikutnya yang harus dipilih

  

  Jawab

Latihan Soal

   Hitung 3 titik pertama yang dilewati garis A dengan koordinat (100,150)-(10,30) menggunakan algoritma garis Bresenham dan gambarkan hasilnya.

   Jika diketahui R=10 dan titik terakhir yang dipilih adalah (10,20), hitung koordinat titik berikutnya yang harus dipilih.

  

Geometri Lanjut

Geometri Lanjut

   Polygon

   Algoritma flood fill

  POLYGON

Polygon

  

  Polygon adalah bentuk yang disusun dari serangkaian garis

  

  Titik sudut dari polygon disebut vertex

  

  Garis penyusun polygon disebut edge

  

  Sebuah polygon selalu mempunyai properti dasar :

  

  jumlah vertex

  

  koordinat vertex

  

  data lokasi tiap vertex

  

  Polygon digambar dengan menggambar masing-masing edge dengan setiap . edge merupakan pasangan dari vertex – vertex , kecuali untuk edge i i+1 terakhir merupakan pasangan dari vertex – vertex n 1

Operasi-operasi pada polygon

   Menginisialisasi polygon

  inisialisasi terhadap polygon perlu dilakukan untuk mengatur agar field vertnum berisi 0.

   Menyisipkan vertex

  menyimpan informasi tentang vertex dan menyesuaikan informasi tentang jumlah vertex dengan menambahkan satu ke vertnum.

   Menggambar polygon

  mengunjungi vertex satu per satu dan menggambar edge dengan koordinat (vertex .x, vertex .y) – (vertex .x – vertex .y) dari vertex nomor satu i i i+1 i+1 sampai vertnum – 1. Khusus untuk edge terakhir mempunyai koordinat (vertex .x , vertex .y) – (vertex .x – vertex .y). vertnum vertnum 1 1

   Mewarnai polygon Mengisi area yang dibatasi oleh edge polygon dengan warna tertentu.

  Algoritma menggambar polygon

Algoritma Flood Fill (Seed Fill)

  

Merupakan algoritma untuk mengisi area di dalam sebuah polygon.

  Bekerja dengan cara :  Pemakai menentukan warna polygon serta lokasi titik yang menjadi titik awal.  Kemudian algoritma akan memeriksa titik-titik tetangga. 

  Bila warna titik tetangga tidak sama dengan warna isi polygon maka titik tersebut akan diubah warnanya.

   Proses tersebut dilanjutkan sampai seluruh titik yang berada di dalam polygon selesai diproses.

   Penentuan titik tetangga dapat menggunakan metode 4 koneksi atau 8 koneksi seperti berikut :

Algoritma Flood Fill (Seed Fill)

   Ketepatan algoritma Flood Fill ditentukan oleh titik awal (seed point) dan apakah polygon yang diwarnai merupakan polygon tertutup.

   Apabila polygon tidak tertutup, meskipun hanya 1 titik yang terbuka maka pengisian akan melebar ke area di luar polygon.

  Algoritma Flood Fill (Seed Fill)

  

Geometri Dua Dimensi

Geometri Dua Dimensi

   Transformasi Affine 2D

   Translasi

   Skala

   Rotasi

   Transformasi homogeneous

   Clipping dua dimensi:

  

  Ketampakan garis

  

  Algoritma Cohen-Sutherland

  

  Algoritma Sutherlan-Hodgeman

Transformasi

  

Transformasi merupakan metode untuk mengubah lokasi titik.

  

Bila transformasi dikenakan terhadap sekumpulan titik yang

membentuk sebuah benda maka benda tersebut akan mengalami perubahan.

   Transformasi dasar :

   translation (translasi)

   scaling (skala)

   rotation (putar)

   Reflection (refleksi)

Translasi

  

  Translasi adalah transformasi yang menghasilkan lokasi baru dari sebuah objek sejauh jarak pergeseran tr = ( tr tr x, y).

  

  Untuk menggeser benda sejauh tr maka setiap titik dari objek akan digeser sejauh tr

  tr x dalam sumbu x dan y dalam sumbu y.

Contoh

  

  Jika diketahui titik L (1,-1) dan vektor translasi (3,2) maka hitung lokasi titik L yang baru setelah dilakukan translasi.

  

  Jawab : Lx = 1 dan Ly = -1 dan trx=3 try=2 maka (Qx,Qy) = (Lx + trx , Ly + try) = (1+3, -1+2) = (4,1) Jadi, lokasi titik L yang baru adalah (4,1).

  Contoh

Skala

  

  Berbeda dengan transformasi geser yang tidak mengubah bentuk objek, transformasi skala akan mengubah bentuk objek sebesar skala Sx dan Sy sehingga :

Contoh

  

  Gambar berikut menunjukkan suatu objek setelah mengalami transformasi skala dengan Sx=2 Sy=2

Rotasi

  

  Pemutaran objek dilakukan dengan menggeser semua titik P sejauh sudut q dengan tr = 0 dan titik pusat pemutaran berada di titik (0,0), sehingga :

Contoh

  

  Dari gambar diperoleh

   Objek berikut diputar

  koordinat titik sudut dari

  sebesar 60°

  objek tersebut adalah P1=(1,1), P2=(3,1), P3=(3,2), P4 = (1,2).

  Objek diputar 60° dengan titik pusat (0,0)

  Contoh

  Dengan cara yang sama diperoleh:

  Contoh

  Contoh

Skala Atau Rotasi Menggunakan Sembarang Titik Pusat

  

  Seperti telah dijelaskan sebelumnya, skala dan rotasi menggunakan titik (0,0) sebagai titik pusat transformasi.

  

  Agar dapat menggunakan sembarang titik pusat (Xt,Yt) sebagai titik pusat maka transformasi dilakukan dengan urutan :

   Translasi (-Xt, -Yt)

   Rotasi atau Skala

   Translasi (Xt,Yt)

Contoh

  

  Dengan menggunakan objek persegi panjang sebelumnya, putar objek sebesar 60° dengan titik pusat (3,2)

  

  Jawab: Karena objek diputar pada titik pusat (3,2) maka sebelum dilakukan pemutaran objek harus ditranslasikan sebesar (-3,-2), setelah itu objek diputar sebesar 60° dan kemudian hasil pemutaran ditranslasikan sebesar (3,2).

  Contoh

  Contoh

Transformasi Homogeneous

   Transformasi yang sudah dibahas sebelumnya baik di titik pusat (0,0) maupun di sembarang titik merupakan transformasi linear

   Transformasi juga dapat dilakukan dengan menggunakan

matriks transformasi yang menggabungkan transformasi

translasi, penskalaan dan rotasi ke dalam satu model matriks atau sering disebut juga sebagai transformasi homogeneous

   Isi dari matriks transformasi bergantung pada jenis transformasi yang dilakukan

Transformasi Homogeneous

  Transformasi dilakukan dengan menggunakan rumus: 

  1 cos sin sin cos

      M

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 (Line Visibility)

  

  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

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 Cohen-sutherland

   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 Cohen-sutherland

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) Maka untuk menentukan region code dari masing-masing garis tersebut adalah :

  Contoh

  Karena region code kedua ujung garis tidak 0000 maka garis P kemungkinan bersifat partialy invisible dan perlu dipotong.

Contoh

  Ujung Garis Q (-1,5) Ujung Garis Q (6,7)

  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 :dengan xp1,xp2,yp1, dan yp2 dihitung menggunakan persamaan berikut ini :

  Persamaan

  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

  Contoh

  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).

Latihan Soal

   Jika diketahui area gambar ditentukan dengan xmin=0, ymin = 0 dan xmax=9, ymax=9 dan 3 garis :

   A (-2, -1) – (3, 9)

   B (-1,-3) – (2,8)

   C(-4, -2) – (1, 5)

   Tentukan region code dan titik potong dari masing- masing garis.

Latihan Soal

   Jika diketahui area gambar ditentukan dengan xmin=0, ymin = 0 dan xmax=9, ymax=9 dan 3 garis :

   A (0, -2) – (3, 9)

   B (-1,-1) – (2,8)

   C(-2, -1) – (0, 10)

   Tentukan region code dan titik potong dari masing- masing garis

Algoritma Sutherland-Hodgeman (SH)

   Digunakan untuk kliping poligon

   Idenya melakukan pemotongan terhadap batas demi batas window secara terpisah

   Pemotongan terhadap suatu batas (dan perpanjangan batas itu) menghasilkan suatu poligon lain yang akan dipotongkan terhadap batas selanjutnya (dan perpanjangannya)

Contoh

   Gambar berikut ini dimana suatu poligon dipotong terhadap suatu window berbentuk persegi panjang

   Pemotongan pertama dilakukan terhadap sisi kiri, kemudian kanan, bawah, dan terakhir atas.

  Cara pemotongan terhadap suatu garis batas (1)

  Algoritma SH memiliki aturan sbb, jika poligon dinyatakan oleh verteks- verteks v , v , …..v : 1 2 n

  Sisi demi sisi diperiksa terhadap batas window mulai dari sisi v v , v v ,….. v 1 2 2 3 n- 1 n n v dan v v , untuk mendapatkan verteks-verteks membentuk poligon baru 1 hasil pemotongan tersebut . Pada tahap inisialisasi poligon hasil berisikan 0 verteks.

  Bila suatu sisi v v berpotongan dengan batas window dengan v berada i i+1 i di luar mengarah dan berada di dalam batas window maka dilakukan komputasi untuk mendapatkan titik perpotongannya yaitu v ’, dan verteks- i verteks v ’ dan v dicatat sebagai verteks berikutnya di poligon hasil i i+1 pemotongan.

  Bila suatu sisi v berpotongan dengan batas window dengan v berada i i+1 v i di dalam mengarah dan berada di luar batas window maka dilakukan komputasi untuk mendapatkan titik perpotongannya yaitu v ’, dan verteks i

dicatat sebagai verteks berikutnya di poligon hasil pemotongan

  Cara pemotongan terhadap suatu garis batas (2)

  Bila suatu sisi v v tidak berpotongan dengan batas window dan i i+1 berada di sebelah dalam batas window maka verteks v dicatat i+1 sebagai verteks berikutnya di poligon hasil pemotongan.

  

  Bila suatu sisi v v tidak berpotongan dengan batas window dan i i+1 berada di sebelah luar batas window maka tidak ada yang dicatat.

Contoh

   Beikut ini adalah contoh pemotongan poligon terhadap sisi kiri window persegi empat

Pada pemeriksaan v Pada pemeriksaan v Pada pemeriksaan v Pada pemeriksaan v

diperoleh v diperoleh v diperoleh v tidak ada verteks baru 1 , dan v 1 2 v v v v 2 3 2 3 3 3 4 4 1

  

Poligon yang dihasilkan adalah dengan verteks-verteks v ’v v v ’

1 2 3 3