Pembentuk Grafik Grafik dapat terbentuk dengan berbagai pola : Titik Garis Lingkaran Poliline Area 2D dan 3D Dll Materi matkul Komputer Grafik adalah mempelajari bagaimana grafik tersebut dapat terbentuk melalui pola2 pembentuknya.
GARIS Algoritma Pembentukan Garis Persamaan garis lurus berdasarkan Cartesian adalah: dimana: m : Kemiringan garis b : intercept y y2 y1 X1 X2 Bila diketahui kedua ujung garis berada pada posisi (x1, y1) dan (x2, y2) maka:
GARIS Berdasarkan persamaan garis tersebut maka dapat ditentukan hubungan antara x dan y, yaitu: y2 y1 X1 X2 y x
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 (x1, y1) dan titik akhir (x2, y2). Setiap koordinat titik (xk, yk) yang membentuk garis diperoleh dari perhitungan, kemudian hasil perhitungan dikonversikan menjadi nilai integer.
GARIS-DDA Langkah-langkah pembentukan garis berdasarkan algoritma DDA adalah: 1. Tentukan dua titik yang akan dihubungkan dalam pembentukan garis. 2. Tentukan salah satu sebagai titik awal (x1, y1) dan titik akhir (x2, y2). 3. Hitung dx = x2 - x1 dan dy = y2 - y1 4. 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 = x1 atau y = y1.
GARIS-DDA Perhatikan ilustrasi gambar berikut ini Jalur garis 14 13 12 11 10 50 49 48 47 46 51 52 53 54 Jalur garis Jalur garis
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 x1, y1, x2, y2;) { int step, k; float dx=x2-x1, dy=y2-y1, x_inc, y_inc, x, y; x=x1; y=y1; 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 Langkah-langkah pembentukan garis berdasarkan algoritma Bressenham adalah: 1. Tentukan dua titik yang akan dihubungkan dalam pembentukan garis. 2. Tentukan salah satu sebagai titik awal (x1, y1) dan titik akhir (x2, y2). Hitung dx, dy, 2dy dan 2dy - 2dx Hitung parameter : po = 2dy - dx 5. Untuk setiap xk sepanjang jalur garis, dimulai dengan k=0 - bila pk < 0 maka titik selanjutnya adalah: (xk+1, yk) dan pk+1 = pk + 2dy - bila tidak, titik selanjutnya adalah: (xk+1, yk+1) dan pk+1 = pk + 2dy – 2dx 6. Ulangi nomor 5 untuk menentukan posisi pixel berikutnya, sampai x = x1 atau y = y1.
GARIS-BRESSENHAM Perhatikan ilustrasi gambar berikut ini Jalur garis yk+4 yk+3 yk+2 yk+1 yk xk xk+1 Xk+2 xk+3 xk+4 Jalur garis (xk+1, yk+1) (xk+1, yk)
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 meng-gunakan 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, xEnd; int duaDy = 2*dy, duaDyDx = 2*(dy-dx); if(xa>xb) { x=xb; y=yb; xEnd=xa;} else { x=xa; y=ya; xEnd=xb;} SetPixel(x,y); while(x<xEnd) { x++; if(p<0) p+=duaDy; { y++; p+=duaDyDx; } setPixel(x,y); } };
TUGAS 1. Diketahui 2 buah titik A(2,2) sebagai titik awal dan B(8,10) sebagai titik akhir, tentukan titik2 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.