KOMPUTER GRAFIK Algoritma Garis Naïve dan DDA

Slides:



Advertisements
Presentasi serupa
Persamaan Garis dan Grafik Kuadrat
Advertisements

PERSAMAAN GARIS LURUS Hanik Badriyah A Okta Sulistiani
Oleh : Novita Cahya Mahendra
Gradien Oleh : Zainul Munawwir
ASSALAMUALAIKUM WR. WB VIII B MENENTUKAN GRADIEN By : Ratna Rahmadani.
FMIPA Universitas Indonesia
Grafika Komputer (TIZ10)
Oleh: Ziadatus Sha’adhah ( )
BAB 3 PERSAMAAN GARIS LURUS Terdiri dari dua sumbu koordinat
Instruktur : Ferry Wahyu Wibowo, S.Si., M.Cs.
ALGORITHMA GARIS Hieronimus Edhi Nugroho, M.Kom.
FUNGSI Cherrya Dhia Wenny, S.E..
PEMBANGKITAN CITRA GRAFIK Dosen :Dewi Octaviani, S.T, M.C.s
PENERAPAN DIFFERENSIASI PERSAMAAN GARIS SINGGUNG
ASSALAMU’ALAIKUM Wr Wb
PERSAMAAN GARIS PROGRAM STUDI PENDIDIKAN MATEMATIKA Oleh Kelompok 4 :
Persamaan Garis Lurus Materi Kelas VIII.
Persamaan Garis Lurus Latihan Soal-soal.
Gradien Garis Lurus.
Assalamualaikum Wr Wb PERSAMAAN GARIS LURUS BY Yanuar Kristina P
ASSALAMUALAIKUM WR WB.
PERSAMAAN GARIS Menentukan Gradien Kedudukan 2 Garis
PENGERTIAN PERSAMAAN GARIS LURUS
D3 Manajemen Informatika S1 Sistem Informasi
2.1 Bidang Bilangan dan Grafik Persamaan
Komputer Grafik Rudy Gunawan
S1 Teknik Informatika Disusun Oleh Dr. Lily Wulandari
Pengertian garis Lurus Koefisien arah/gradien/slope
Persamaan Garis Lurus.
MATEMATIKA DASAR.
BILANGAN BULAT Bilangan Bulat Operasi Hitung pada Bilangan Bulat
PERTEMUAN TGL LUAS BIDANG dx dy cos ds k . n  cos 
Pembentuk Grafik Grafik dapat terbentuk dengan berbagai pola : Titik
Fungsi Riri Irawati, M.Kom 3 sks.
Geometri Primitive.
Pertemuan 4 Fungsi Linier.
NILAI MUTLAK PERSAMAAN GARIS FUNGSI
ASSALAMUALAIKUM WR WB.
Algoritma Garis DDA dan Bressenham
Dasar teori dan algoritma grafika komputer
Pertemuan II – Grafika Komputer
Grafika Komputer Pengenalan Grafika Komputer &
1.4 SISTEM KOORDINAT EMPAT BIDANG
Algoritma Garis Bressenham dan Mid Point
Algoritma Bentuk Primitif
D3 Manajemen Informatika S1 Sistem Informasi
Kalkulus 3 Fungsi Ari kusyanti.
MENGGAMBAR DENGAN PIXEL (KONVERSI SCAN)
PERSAMAAN GARIS LURUS 1. Bentuk Umum 2. Gradien 3. Menggambar Garis
ALGORITHMA GARIS Hieronimus Edhi Nugroho, M.Kom.
Pertemuan ke-7 FUNGSI LINIER.
FUNGSI LINEAR Jaka Wijaya Kusuma M.Pd.
Teknologi Grafika -Uniska
Pertemuan II – Grafika Komputer
Pembangkitan Citra Grafik Dosen :Dewi Octaviani, S.T, M.C.s
GARIS LURUS KOMPETENSI
ASSALAMU’ALAIKUM Wr Wb
Persamaan Garis Lurus Latihan Soal-soal.
Ihr Logo Dasar teori dan algoritma grafika komputer.
Peta Konsep. Peta Konsep B. Kedudukan Dua Garis.
Pertemuan 2 – Pendahuluan 2
D3 Manajemen Informatika S1 Sistem Informasi
Persamaan Garis Lurus Latihan Soal-soal.
D3 Manajemen Informatika S1 Sistem Informasi
Bab 2 Fungsi Linier.
FUNGSI LINEAR.
Persamaan Garis Lurus Latihan Soal-soal.
PERTEMUAN Ke- 5 Matematika Ekonomi I
PENDAHULUAN KALKULUS yogo Dwi prasetyo, m. SI. prodi teknik industri dan rpl [ref : calculus (Purcell, Varberg, and rigdon)]
Persamaan Garis Lurus Materi Kelas VIII. Standar Kompetensi persamaan garis lurus. Kompetensi Dasar 3.4 Menganalisis fungsi linear (sebagai persamaan.
Transcript presentasi:

KOMPUTER GRAFIK Algoritma Garis Naïve dan DDA

Dinyatakan dengan 4 nilai : x1,y1,x2,y2 Koordinat / titik awal (x1,y1) Garis Dinyatakan dengan 4 nilai : x1,y1,x2,y2 Koordinat / titik awal (x1,y1) Koordinat / titik akhir (x2,y2) m = gradien / kemiringan garis

Persamaan garis lurus :Y = mx + c M : gradien C : konstanta Garis dikelompokkan ke dalam 3 bentuk : cenderung tegak (m>1), miring 45 derajat (m=1) dan cenderung mendatar (0<m<1)

Naïve Idea Kelemahan : Komputasi tinggi, tidak efisien Menentukan titik-titik garis penghubung koordinat awal dan akhir Dimulai dari (x, y), untuk menentukan titik selanjutnya, koordinat x diincrement sebanyak 1 dan koordinat y dihitung sebagai y=m*x+c Kelemahan : Komputasi tinggi, tidak efisien for x from x0 to xend Compute y=mx+b Draw_fn(x, round(y))

Naive Idea void NaiveLine(int x0,int y0,int xend,int yend,int color)  int x; float y, m, b; m=(yend-y0)/(xend-x0); b = y0 – m*x0; for (x=x0; xxend; x++)  drawpixel (x, int(y+0.5), color); y=m*x+b;  Costly floating point computations !! Multiplications, additions, roundings

DDA (Digital Differential Analyzer) Algorithm Increment Jika m<1 (garis cenderung mendatar pada kuadran 1 ,oktan 1) maka x sebagai iterator. For Dimulai dari x=x0 and y=y0, setiap posisi (x,y) dihitung dengan melakukan increment x sebanyak 1 dan y sebanyak m -> x sebagai iterator

Example:draw segment, octant 1 x y int(y+0.5) 0 0 0 1 0+0.4 0 2 0.4+0.4 1 3 0.8+0.4 1 4 1.2+0.4 2 5 1.6+0.4 2 round

Draw segment, octant 2 Jika m> 1, garis cenderung tegak pada kuadran 1, oktan 2, maka yang jadi iteratornya adalah y y di-incremet 1 dan x di-increment 1/m Bagaimana mengimplementasikan pada program?

DDA (Digital Differential Analyzer) Algorithm Berikut ini adalah algoritma DDA untuk kuadran 1, oktan 1 dan 2 Tentukan 2 buah titik. Tentukan yang menjadi titik awal (X0,Y0) dan titik akhir (X1,Y1). Hitung Dx dan Dy dimana Dx= X1-X0 dan Dy= Y1–Y0 Bandingkan Abs(Dx) dan Abs(Dy). Jika Abs(Dx) > Abs(Dy) maka Steps = Abs(Dx) bila tidak Steps = Abs(Dy) Hitung penambahan koordinat pixel, yaitu: X_increment = dx/steps, dan Y_increment = dy/steps. Koordinat selanjutnya, yaitu X+X_increment dan Y+Y_increment Posisi pixel ditentukan dengan pembulatan nilai koordinat tersebut. Ulangi langkah 6 dan 7 untuk posisi selanjutnya sampai X = X1, Y = Y1

•Hasil dari fungsi : bilangan riil •Koordinat pixel : integer •Harus dibulatkan ke dalam integer terdekat

Contoh Diketahui 2 buah titik A(10,10) dan titik B(17,16), bila titik A sebagai titik awal dan titik B sebagai titik akhir maka buatlah garis yang menghubungkan titik tersebut dengan menggunakan algoritma DDA.

Jawab Titik awal = A(10,10) Titik akhir = B(17,16) Dx= X1-X0 = 17 –10 = 7 Dy= Y1-Y0 = 16 –10 = 6 Absolut(Dx) = 7 Absolut(Dy) = 6 Absolut (Dx) > absolute (Dy) maka steps = Absolut(Dx) = 7 X_increment= =7/7 = 1 Y_increment= = 6/7 = 0,86

X1 = X + X_increment= 10 + 1 =11 Y1 = Y + Y_increment= 10 + 0,857 = 10,857 =11 K X Y X_inc Y_in - - - 10 10 1 11 10,86 11 11 2 12 11,71 12 12 3 13 12,57 13 13 4 14 13,43 14 13 5 15 14,29 15 14 6 16 15,14 16 15 7 17 16 17 16

Contoh Diketahui 2 buah titik A(10,10) dan titik B(16,17), bila titik A sebagai titik awal dan titik B sebagai titik akhir maka buatlah garis yang menghubungkan titik tersebut dengan menggunakan algoritma DDA.

Jawab Titik awal = A(10,10) Titik akhir = B(16,17) Dx= X1-X0 = 16–10 = 6 Dy= Y1-Y0 = 17 –10 = 7 Absolut(Dx) = 6 Absolut(Dy) = 7 Absolut (Dy) > absolute (Dx) maka steps = Absolut(Dy) = 7 X_increment= 6/7 = 0,86 Y_increment= 7/7 = 1

Y1 = Y + Y_increment= 10 + 1 =11 X1 = X + X_increment= 10 + 0,857 = 10,857 =11 K X Y X_inc Y_in - - - 10 10 1 10,86 11 10 11 2 11,71 12 11 12 3 12,57 13 13 13 4 13,43 14 13 14 5 14,29 15 14 15 6 15,14 16 15 16 7 16 17 16 17

Kelemahan Hanya dapat digunakan untuk nilai x1<x2 dan y1<y2 (kuadran I) Menggunakan pembagian serta pembulatan sehingga kurang akurat

Membuat titik #include<GL/glut.h> #include<stdlib.h> #include<math.h> void setPixel(int px, int py) { glBegin(GL_POINTS); glVertex2i(px, py); glEnd(); } void display() glClear(GL_COLOR_BUFFER_BIT); glColor3f(1.0,0.0,0.0); glPointSize(4.0); // Draws points (100,100) and (200,200). setPixel(100, 100); setPixel(200, 200); glFlush();

void init(void) { //set display-window background color to white glClearColor(1.0,1.0,1.0,0.0); //set projection paramaters glMatrixMode(GL_PROJECTION); gluOrtho2D(0.0,300.0,0.0,300.0); } main(int argc, char**argv) //initialize GLUT glutInit(&argc,argv); //initialize display mode glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB); //set display-window width & height glutInitWindowSize(500,500); //set display-window upper-left position glutInitWindowPosition(0,0); //create display-window with a title glutCreateWindow("Digital Differential Analyzer Algorithm: Programmed by Salha"); //initialze OpenGL init(); //call graphics to be displayed on the window glutDisplayFunc(display); //display everything and wait glutMainLoop();

Latihan 1 Modifikasilah program titik di atas sesuai dengan algoritma DDA sehingga program bisa menggambar beberapa titik membentuk garis dari suatu koordinat awal dan akhir. Untuk membulatkan gunakan fungsi berikut int round (float a) { return int (a+0.5); }

Latihan 2 Modifikasilah program di atas sesuai dengan algoritma Naive sehingga program bisa menggambar beberapa titik membentuk garis dari suatu koordinat awal dan akhir. Untuk membulatkan gunakan fungsi berikut