Komputer Grafik Rudy Gunawan Sistem Koordinat Komputer Grafik Rudy Gunawan
Sistem Koordinat Pada komputer grafik ada 3 macam sistem koordinat yang harus kita perhatikan : • Koordinat nyata • Koordinat sistem (koordinat cartesian) • Koordinat tampilan / layar KOORDINAT NYATA (WORLD COORDINATE) Adalah koordinat yang pada saat itu objek yang bersangkutan berada, misal 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.
Kordinat 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 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.
Dalam implementasinya koordinat tampilan/layar bisa dikatakan sebagai VIEWPORT yaitu area di layar monitor yang menunjukkan dimana WINDOW akan ditampilkan. Untuk memetakan sebuah titik di window ke titik di viewport digunakan rumus : xv = s x * xw + t x yv = s y * yw + t y Dengan VR − VL Sx = ------------------- WR − WL VL * WR − VR * WL Tx = ------------------------ VT − VB Sy = -------------------------- WT − WB VB * WT − VL * WB Ty = ---------------------------
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). (x2,y2) (x1,y1)
Kuadran Garis Berdasarkan arah garis maka sebuah garis dapat di salah satu area (kuadran). Tanda panah pada arah garis menunjukkan lokasi (x2,y2) II I III IV
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.
(x2,y2) (x2,y2) (x1,y1) K.2 K.4 K.1 (x1,y1) (x2,y2) (x1,y1) (x1,y1) K.3 (x2,y2)
Algoritma Garis DDA DDA (Digital Differential Analyzer) • Merupakan salah satu algoritma menggambar garis yang sederhana. • Gradien garis : y 2 − y1 m = ------------ x 2 − x1
Bentuk Garis c. miring 45 o a. cenderung mendatar Gradien bernilai 0 < m < 1 Pixel bertambah 1 pada sumbu x dan bertambah sebesar m pixel pada sumbu y b. cenderung tegak Gradien bernilai m > 1 Pixel bertambah 1 pada sumbu y dan bertambah sebesar 1/m pixel pada sumbu x c. miring 45 o Gradien bernilai m = 1
Algoritma DDA akhir selama y <= y2 X = x+1 Listing algoritma DDA : x = x1 ; y = y1; m = (y2 – y1) / (x2 – x1) jika m > 0 dan m < 1 maka selama x <= x2 maka gambar pixel pada (x,y) x = x+1 y =y+m akhir selama x <= x2 tetapi jika m > 1 maka selama y <= y2 maka x = x + 1/m y=y+1 akhir selama y <= y2 tetapi jika m = 1 maka Gambar pixel pada (x,y) X = x+1 Y=y+1 Kelemahan algoritma DDA : hanya dapat digunakan untuk nilai x1 < x2 dan y1 < y2 atau garis yang berada di kuadran I
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 dan untuk dx < dy dimana : dx = X2-X1 dy = Y2-Y1
Algoritma Bresenham untuk dx > dy
Algoritma Bresenham untuk dx < dy
Hitung lokasi 5 titik pertama yang dilewati oleh garis (10,30) – (256,147) menggunakan algoritma bresenham. Gambarkan hasil perhitungannya. Garis (10,30) – (256,147) dx = (x2 – x1) = (256 – 10) = 246 dy = (y2 – y1) = (147 – 30) = 117 gunakan algoritma untuk dx > dy 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 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
Lingkaran Untuk menggambar sebuah lingkaran hanya diperlukan menggambar titik-titik pada kuadran pertama saja, sedangkan titik-titik pada kuadran lain dapat diperoleh dengan mencerminkan titik-titik pada kuadran 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 refleksikan octan pertama.
Algoritma Lingkaran BRESENHAM xi = 0 ; yi = R Ulangi sampai yi = 0 Hitung ∆i Gambar titik di (xi ,yi) Jika ∆i < 0 maka hitung δ Jika δ < = 0 maka xi = xi +1 Jika δ > 0 maka xi = xi +1 dan yi = yi – 1 Jika ∆i > 0 maka hitung δ’ Jika δ’ < = 0 maka yi = yi -1 Jika δ’ > 0 maka xi = xi +1 dan yi = yi – 1 Jika ∆i = 0 maka xi = xi +1 dan yi = yi – 1 Rumus : ∆i = (xi +1)2 + (yi –1)2 – R2 δ = | (xi +1)2 + (yi)2 – R2 | – | (xi +1)2 + (yi – 1)2 – R2 | δ’ = | (xi)2 + (yi – 1)2 – R2 | – | (xi +1)2 + (yi – 1)2 – R2 |
Jika = 0 artinya tepat sama dengan R Posisi awal x,y Posisi Perkiraan Berikut x+1,y-1 Cek harusnya posisi baru juga sama dengan R. (xi +1)2 + (yi –1)2 = R2 Y R R X Jika R baru lebih kecil, bandingkan dengan nilai y tidak ditambah δ = | (xi +1)2 + (yi)2 – R2 | – | (xi +1)2 + (yi – 1)2 – R2 | ∆i = (xi +1)2 + (yi –1)2 – R2 Jika = 0 artinya tepat sama dengan R Jika > 0 artinya posisi baru lebuh besar dari R Jika < 0 artinya posisi baru lebih kecil dari R Jika R posisi baru lebih besar,bandingkan dengan Nilai X tidak ditambah. δ’ = | (xi)2 + (yi – 1)2 – R2 | – | (xi +1)2 + (yi – 1)2 – R2 |
Keputusan Posisi baru perkiraan Jika Δ I > 0 R R Pilih posisi ini jika lebih dekat dengan harga R δ' < 0 Posisi baru perkiraan Jika Δ I < 0 R Pilih posisi ini jika lebih dekat dengan harga R δ < 0
Algoritma Lingkaran BRESENHAM Contoh : Jika diketahui R = 5 dan titik terakhir yang dipilih adalah (0,5) hitung koordinat yang harus dipilih. Jawab : xi = 0 , yi = 5 ∆i = (xi +1)2 + (yi –1)2 – R2 = (0 +1)2 + (5 –1)2 – 52 = 1 + 16 – 25 = -8 karena ∆i < 0 maka δ = | (xi +1)2 + (yi)2 – R2 | – | (xi +1)2 + (yi – 1)2 – R2 | = | (0 +1)2 + (5)2 – 52 | – | (0 +1)2 + (5 – 1)2 – 52 | = | 1 | – | –8 | = 1 – 8 = – 7 karena δ < 0 maka koordinat titik berikutnya adalah (xi +1, yi) = (0+1, 5) = (1,5