Pada komputer grafik ada 3 macam sistem koordinat yang harus di perhatikan : ◦ Koordinat nyata ◦ Koordinat sistem (koordinat cartesian) ◦ Koordinat tampilan / layar Grafika Komputer Page 2 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. Grafika Komputer Page 3 Setiap titik yang digambar dengan teknik pointplotting 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. Grafika Komputer Page 4 Grafika Komputer Page 5 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. Grafika Komputer Page 6 X Y Koordinat layar pada OS. Windows Grafika Komputer Page 8 0,0 640,480 Dalam implementasinya koordinat tampilan/layar bisa dikatakan sebagai VIEWPORT yaitu area di layar monitor yang menunjukkan dimana WINDOW akan ditampilkan Grafika Komputer Page 10 Grafika Komputer Page 11 Untuk memetakan sebuah titik di window ke titik di viewport digunakan rumus : Grafika Komputer Page 12 13 Titik(point) dalam grafika komputer didefinisikan sebagai suatu posisi tertentu dalam sistem koordinat Pixel merupakan ukuran satuan gambar terkecil dalam layar dan dapat ditempati oleh satu titik Maksimum titik atau pixel yang dapat ditempati dalam satu layar disebut resolusi Membangkitkan pixel dalam BGI putpixel (x,y,color) Dalam OpenGL glVertex3f(0,0,-0.0) Garis merupakan kumpulan titik – titik Persamaan garis lurus pada koordinat kartesian y =m.x+b dimana: m=gradien, b=intercept m=y1-y0 / x1-x0 b= y1-m.x1 Berdasarkan algoritma diatas dikembangkan beberapa algoritma utk membangkitkan garis - Algoritma sederhana - Algoritma DDA ( digital differential Analyzer ) - Algoritma Bresenham Garis adalah kumpulan titik-titik yang tersusun sedemiki-an rupa sehingga memiliki pangkal dan ujung. Suatu titik pada layar terletak pada posisi (x,y), untuk menggambarkannya plot suatu pixel dengan posisi yang berkesesuaian. Contoh program :Setpixel (x,y) 16 Tampilan garis pada layar komputer dibedakan berdasarkan Resolusi-nya. Resolusi : keadaan pixel yang terdapat pada suatu area tertentu Contoh : Resolusi 640x480, berarti pada layar komputer terdapat 640 pixel per-kolom dan 480 pixel per-baris. Resolusi dapat pula dibedakan menjadi kasar, medium dan halus. 17 Untuk menggambarkan garis seperti gambar di atas, diperlukan pixel aktif. 18 Parameter pixel address yang membentuk garispada layar adalah : 19 Untuk menampilkan atau menggambarkan garis pada layar dibutuhkan minimal 2 titik (endpoint), yaitu titik awal dan akhir. - Awal garis dimulai dengan titik atau pixel pertama, P1 diikuti titik kedua, P2. - Untuk mendapatkan titik-titik selanjutnya sampai ke Pn perlu dilakukan inkrementasi atas nilai koordinat sumbu X dan Y pada titik sebelumnya. 20 Menggambar GARIS (lanjt) - Perhitungan inkrementasi untuk masing-masing sumbu adalah berbeda : n dan m adalah nilai inkrementasi - Persamaan Umum Garis : y = mx +c 21 22 Garis yang membentang secara paralel dengan sumbu X dengan asumsi titik P1 pada koordinat X1 lebih kecil daripada X2 dari P2, sedangkan Y1 dan Y2 konstant Algoritma: 1. Menentukan titik awal (P1) dan titik akhir (P2) 2. Periksa posisi sumbu (koordinat)Jika titik akhir > titik awal, Lakukan inkrementasi sumbu X dari titik awal sampai titik akhir. Jika tidak, maka Lakukan dekrementasi sumbu X dari titik awal sampai titik akhir 3. Tampilkan garis menggunakan parameter koordinat yang telah dihitung. 23 Garis yang membentang secara paralel dengan sumbu Y dengan asumsi titik P1 pada koordinat Y1 lebih kecil daripada Y2 dari P2, sedangkan X1 dan X2 konstant Algoritma: 1. Menentukan titik awal (P1) dan titik akhir (P2) 2. Periksa posisi sumbu (koordinat) Jika titik akhir > titik awal,Lakukan inkrementasi sumbu Y dati titik awal sampai titik akhir. Jika tidak, maka lakukan dekrementasi sumbu Y dari titik awal sampai titik akhir 3.Tampilkan garis menggunakan parameter koordinat yang telah dihitung. 24 Garis yang membentang secara paralel 45 derajat dari sumbu X atau sumbu Y dengan asumsi titik awal P1 dengan koordinat X1 dan Y1 lebih kecil daripada X2 dan Y2 atau sebaliknya. Algoritma : 1. Menentukan titik awal (P1) dan titik akhir (P2) 2. Periksa posisi sumbu (koordinat)Jika titik akhir > titik awal, lakukan inkrementasi sumbu X dan sumbu Y dari titik awal sampai titik akhir. Jika tidak, maka lakukan dekrementasi sumbu X dan sumbu Y dari titik awal sampai titik akhir 3. Tampilkan garis menggunakan parameter koordinat yang telah dihitung. 25 1. 2. 3. 4. 5. 6. 7. 8. Prinsip algoritma DDA adalah mengambil nilai integer teredekat dengan jalur garis berdasarkan atas sebuah titik yang telah ditentukan sebelumnya (titik awal garis) Algoritma pembentukan garis DDA Tentukan dua titik yang akan dihubungkan utk pembentukan garis Tentukan salah satu titik sebagai awal (x0,y0) dan yang lain sebagai titik akhir (x1,y1) Hitung dx=x1-x0 dan dy=y1-y0 Tentukan step untuk titik x dan y - if abs(dx) > abs(dy), step= dx else step= dy Hitung penambahan koordinat pixel - x_increment = dx/step - y_increment = dy/step Koordinat selanjutnya (x+x_inc, y+y_inc) Posisi pixel pada layar merupakan pembulatan dari nilai koor pixel Ulangi langkah 6 & 7 sampai x=x1 dan y=y1 Garis yang membentang antara 2 titik, P1 dan P2, selalu membentuk sudut yangbesarnya sangat bervariasi. Sudut yang terbentuk menentukan kemiringan suatu garis atau disebut gradient/ slop atau disimbolkan dengan parameter m. Jika titiktitik yang membetuk garis adalah : (x1,y1) dan (x2,y2) maka m y y 2- y 1 ,m x x2 - x1 27 Algoritma DDA bekerja atas dasar penambahan nilai x dan nilai y. Pada garis lurus, turunan pertama dari x dan y adalah konstanta. Sehingga untuk memperoleh suatu tampilan dengan ketelitian tinggi, suatu garis dapat dibangkitkan dengan menambah nilai x dan y masing-masing sebesar ∆x dan ∆y. 28 Kondisi ideal ini sukar dicapai, karenanya pendekatan yang mungkin dilakukan adalah berdasarkan piksel-piksel yang bisa dialamati/dicapai atau melalui penambahan atau pengurangan nilai x dan y dengan suatu besaran dan membulatkannya ke nilai integer terdekat. 29 1. 2. 3. 4. 6. Algoritma bresenham tidak menggunakan pembulatan nilai real seperti DDA, melainkan penambahan nilai integer untuk membentuk garis Pada setiap iterasi algoritma bresenham, salah satu posisi (x atau y) diubah nilainya dengan 1,apabila x diubah , y bisa diubah ataupun tetap tergantung dari nilai e (ketelitian) begitupun sebaliknya Nilai ketelitian adl jarak antara garis sesungguhnya dengan pixel yg dihidupkan dan diukur tegak lurus thd sumbu yg mengalami kecendrungan pertambahan lebih banyak Algoritma pembentukan garis bresenham : Tentukan dua titik yang akan dihubungkan Tentukan salah satu titik sebagai awal yaitu(x0,y0) dan titik lainnya sebagai titik akhir(x1,y1). Hitung dx,dy Hitung nilai e = 2*dy-dx Untuk setiap integer mulai dari 1 sampai dx, bangkitkan pixel mulai dari x0,y0 kemudian cek nilai e, if e>0 then y= y+1 dan e=e+(2*dy-2*dx) else e=e+2*dy dan x=x+1 Algoritma Bresenham - Pixel selanjutnya ? - Algoritma Bresenhma memilih titik terdekat dari actual path - Setiap sampling akan diinkremen menjadi 1 atau 0. 31 Kondisi awal :Jika m < 1, maka m bernilai positif Bresenham melakukan inkremen 1 untuk x dan 0 atau 1 untuk y. Jika current pixel (xk,yk) Dimanakah pixel berikutnya akan di-plot, apakah di (xk+1, yk+1), (xk+1, yk), atau (xk, yk+1)? 32 33 Tentukan nilai parameter keputusan, pk: 34 Algoritma Bresenham untuk |m| < 1: Input 2 endpoints, simpan endpoints kiri sebagai (x0, y0). 2. Panggil frame buffer (plot titik pertama) 3. Hitung konstanta ∆x, ∆y, 2∆y, 2∆y–2∆x dan nilai awal parameter keputusan p0= 2∆y –∆x 1. 35 Algoritma Bresenham untuk |m| < 1: 4. Pada setiap xk sepanjang garis, dimulai dari k=0, ujilah : Jika pk< 0, maka plot(xk+1, yk) dan pk+1= pk+ 2∆y Jika tidak maka plot (xk+1, yk+1) dan pk+1= pk+ 2∆y -2∆x 5. Ulangi tahap 4 ∆xkali Latihan : Hitunglah posisi piksel hingga membentuk sebuah garis yang menghubungkan titik (12,10) dan (17,14) ! Jawab : 1.(x0, y0) =(12, 10) 2.∆x =5, ∆y = 4, 2∆y =8, 2∆y–2∆x = -2 3.p0= 2∆y –∆x = 3 37 Ada 2 metode pembangkitan karakter 1. metode titik (bitmap method) 2. metode goresan (stroke method) Bitmap Stroke Bitmap karakter digambarkan sebagai array 2 dimensi dengan ukuran bervariasi, setiap elemen array dianggap sebuah pixel yang bisa dihidupmatikan Stroke Karakter dianggap sbg kumpulan segmen garis yang dihubungkan pada tempat tertentu keuntungannya: karakter dapat dengan mudah diresize tanpa mengurangi kualitasnya Geometri