Pembentuk Grafik dapat terbentuk dengan berbagai pola Titik
Pembentuk Grafik dapat terbentuk dengan berbagai pola : • Titik • Garis • Lingkaran • Poliline • Area 2 D dan 3 D • Dll Materi matkul Komputer Grafik adalah mempelajari bagaimana grafik tersebut dapat terbentuk melalui pola 2 pembentuknya.
GARIS Algoritma Pembentukan Garis • Persamaan garis lurus berdasarkan Cartesian adalah: dimana: m : Kemiringan garis b : intercept y • Bila diketahui kedua ujung garis berada posisi (x 1, y 1) dan (x 2, y 2) maka: y 2 y 1 X 2
GARIS • Berdasarkan persamaan garis tersebut maka dapat ditentukan hubungan antara x dan y, yaitu: y 2 y y 1 X 1 x X 2
GARIS-DDA A. Algoritma DDA • Digital Diferential Analyzer (DDA) adalah algoritma pembentukan garis berdasarkan perhitungan y atau x, menggunakan perasamaan : atau • Garis dibuat menggunakan dua ujung garis, yaitu titik awal (x 1, y 1) dan titik akhir (x 2, y 2). Setiap koordinat titik (xk, yk) yang membentuk garis diperoleh dari perhitungan, kemudian hasil perhitungan dikonversikan menjadi nilai integer.
GARIS-DDA • 1. 2. 3. 4. Langkah-langkah pembentukan garis berdasarkan algoritma DDA adalah: Tentukan dua titik yang akan dihubungkan dalam pembentukan garis. Tentukan salah satu sebagai titik awal (x 1, y 1) dan titik akhir (x 2, y 2). Hitung dx = x 2 - x 1 dan dy = y 2 - y 1 Tentukan step, yaitu jarak maksimum jumlah penambahan nilai x atau nilai y, dengan ketentuan: - bila |dx| > |dy| maka step = |dx| - bila tidak, maka step = |dy| 5. Hitung penambahan koordinat pixel dengan persamaan: x_inc = dx / step y_inc = dy / step 6. Koordinat selanjutnya (x+x_inc, y+y_inc) 7. Plot pixel pada layar, nilai koordinat hasil perhitungan dibulatkan • Ulangi nomor 6 dan 7 untuk menentukan posisi pixel berikutnya sampai x = x 1 atau y = y 1.
GARIS-DDA • Perhatikan ilustrasi gambar berikut ini Jalur garis 14 50 13 49 12 48 11 47 10 46 10 11 12 13 14 Jalur garis 50 51 52 53 54
GARIS-DDA
GARIS-DDA
GARIS-DDA
GARIS-DDA Prosedur Algoritma Garis DDA • Prosedur pembentukan garis lurus dengan algoritma DDA menggunakan bahasa pemrograman C adalah sebagai berikut: void Line(int x 1, y 1, x 2, y 2; ) { int step, k; float dx=x 2 -x 1, dy=y 2 -y 1, x_inc, y_inc, x, y; x=x 1; y=y 1; if (abs(dx)>abs(dy)) step=abs(dx); else step=abs(dy); x_inc=dx/step; y_inc=dy/step; setpixel (x, y); for (k=0; k<step; k++){ x += X_inc; y += y_inc; setpixel(round(x), round(y)); } }
GARIS-DDA Kelemahan Algoritma DDA • Prosedur untuk menggambar kembali garis dengan membulatkan nilai x atau y ke bilangan integer memerlukan waktu. • serta variabel x, y maupun m memerlukan bilangan real karena kemiringan merupakan nilai pecahan.
GARIS-BRESSENHAM B. Algoritma Bressenham • Bressenham mengembangkan algoritma klasik yang lebih menarik, karena hanya menggunakan perhitungan matematik dengan bantuan bilangan integer. • Dengan demikian tidak perlu membulatkan nilai posisi pixel setiap waktu. • Algoritma garis Bressenham disebut juga Midpoint Line Algorithm adalah algoritma konversi penambahan nilai integer yang juga dapat diadaptasi untuk menggambar sebuah lingkaran.
GARIS-BRESSENHAM • 1. 2. 3. 4. 5. Langkah-langkah pembentukan garis berdasarkan algoritma Bressenham adalah: Tentukan dua titik yang akan dihubungkan dalam pembentukan garis. Tentukan salah satu sebagai titik awal (x 1, y 1) dan titik akhir (x 2, y 2). Hitung dx, dy, 2 dy dan 2 dy - 2 dx Hitung parameter : po = 2 dy - dx Untuk setiap xk sepanjang jalur garis, dimulai dengan k=0 - bila pk < 0 maka titik selanjutnya adalah: (xk+1, yk) dan pk+1 = pk + 2 dy - bila tidak, titik selanjutnya adalah: (xk+1, yk+1) dan pk+1 = pk + 2 dy – 2 dx 6. Ulangi nomor 5 untuk menentukan posisi pixel berikutnya, sampai x = x 1 atau y = y 1.
GARIS-BRESSENHAM • Perhatikan ilustrasi gambar berikut ini yk+4 yk+3 Jalur garis yk+2 (xk+1, yk+1) yk+1 yk (xk+1, yk) xk xk+1 Xk+2 xk+3 xk+4
GARIS-BRESSENHAM
Grafika Komputer Materi II
GARIS-BRESSENHAM
GARIS-BRESSENHAM
GARIS-BRESSENHAM
GARIS-BRESSENHAM Prosedur Algoritma Garis Bressenham • Prosedur pembentukan garis lurus dengan algoritma Bressenham menggunakan bahasa pemrograman C adalah sebagai berikut: void linebress(int xa, ya, xb, yb) { int dx = abs(xb-xa), dy=abs(yb-ya); int p = 2*dy-dx, x. End; int dua. Dy = 2*dy, dua. Dy. Dx = 2*(dy-dx); if(xa>xb) { x=xb; y=yb; x. End=xa; } else { x=xa; y=ya; x. End=xb; } Set. Pixel(x, y); while(x<x. End) { x++; if(p<0) p+=dua. Dy; else { y++; p+=dua. Dy. Dx; } set. Pixel(x, y); } };
TUGAS 1. Diketahui 2 buah titik A(2, 2) sebagai titik awal dan B(8, 10) sebagai titik akhir, tentukan titik 2 yg menghubungkan kedua titik tersebut dengan Algorithma DDA dan Bressenham. 2. Buatlah aplikasi program komputer dgn sebuah bahasa pemrograman yg anda kuasai untuk implementasi soal nomer 1 tersebut.
- Slides: 21