Grafika Komputer (TIZ10) Algoritma Menggambar Garis Disusun oleh Teady Matius Prodi Teknik Informatika – Universitas Bunda Mulia
Segmen garis
Persamaan Dasar untuk Garis Y = m.x + b m kemiringan garis b besaran intersepsi terhadap y x adalah jarak pada sumbu x x = x1 – x0 y adalah jarak pada sumbu y y = y1 – y0 Kemiringan dapat dicari dengan atau
DDA DDA=Digital Differential Analyzer Pertambahan nilai koordinat x maupun koordinat y didapatkan dari konstanta pertambahan XInc dan YInc Xk+1 = Xk + XInc Yk+1 = Yk + YInc Nilai Xinc dan Yinc ditentukan dari konstanta step XInc = X / Step YInc = Y / Step Konstanta Step didapat dari nilai tertinggi antara y atau x Dari nilai X dan Y dicari nilai posisi X dan posisi Y yang didapatkan dari pembulatan X dan Y. Posisi X dan posisi Y ini yang akan menjadi koordinat Piksel yang dipilih untuk diberi warna. PosXk = Xk PosYk = Yk
Algoritma DDA Tentukan x dan y x = abs(xakhir-xawal) y = abs(yakhir-yawal) Tentukan Step yang didapat dari nilai tertinggi antara x dan y Tentukan nilai awal X dan Y dengan Xkawal dan Ykawal X = Xkawal Y = Yawal Tentukan nilai Xinc dan Yinc Xinc = x/step Yinc = y/step Tentukan PosX dan PosY dari pembulatan X dan Y PosX = Round(X) PosY = Round(Y) Beri warna Piksel pada posisi (PosX, PosY) PixelPosX, PosY] = hitam Tentukan nilai X dan Y berikutnya X = X +Xinc Y = Y + Yinc Ulangi proses nomor 5, 6, 7 sampai selama nilai Xk+1 Xakhir atau Yk+1 Yakhir
Contoh DDA untuk garis P0(5,5) s/d P1(9,15)
Bresenham Pada bresenham salah satu komponen koordinat x atau y akan bertambah secara tetap sedangkan komponen koordinat lainnya akan bertambah sesuai dengan kondisi yang ditentukan. Prinsip pada bresenham adalah memilih pertambahan koordinat yang paling dominan antara x dan y yang dindikasikan dengan arah kemiringan ke arah sumbu x atau ke arah sumbu y. Kemiringan dapat ditentukan dengan nilai m atau dapat juga dengan membandingankan x dengan y Jika nilai m > 1 (bisa juga dengan x < y) kemiringan ke arah sumbu y pertambahan tetap adalah pada koordinat y Untuk nilai m < 1 (bisa juga dengan x > y) kemiringan ke arah sumbu x pertambahan tetap adalah pada kordinat x
Bresenham (lanjutan) Pertambahan nilai koordinat untuk koordinat yang pertambahannya tidak tetap dapat ditentukan dengan nilai Parameter keputusan Pk, Dimana nilai P0 adalah P0 = 2y - x untuk kemiringan ke arah sumbu x P0 = 2x - y untuk kemiringan ke arah sumbu y Untuk Pk+1 nilainya ditentukan berdasarkan Pk; Jika Pk < 0 maka Pk+1 = Pk + 2y untuk kemiringan ke arah sumbu x Pk+1 = Pk + 2x untuk kemiringan ke arah sumbu y Jika Pk 0 maka Pk+1 = Pk + (2y - 2x) untuk kemiringan ke arah sumbu x Pk+1 = Pk + (2x - 2y) untuk kemiringan ke arah sumbu y
Algoritma Bresenham Searah Sumbu X Tentukan x dan y x = abs(xakhir - xawal) y = abs(yakhir - yawal) Tentukan nilai awal X dan Y dengan Xawal dan Yawal X = Xawal Y = Yawal Beri warna Piksel pada posisi (X,Y) Pixel[x,y] = hitam Tentukan P0 P[0] = 2y - x Inisialisasi k dengan 0 k = 0 Tambahkan nilai koordinat dominan x Inc(x) Tentukan nilai Pk+1 dan pertambahan Y berdasarkan nilai Pk Jika P[k]<0 maka P[k+1] = P[k] + 2y Jika sebaliknya maka P[k+1] = P[k] + (2y - 2x) inc(y) Beri warna Piksel pada posisi (X,Y) dan naikkan nilai k Inc(k) Ulangi proses nomor 6, 7, 8 sampai nilai X >= Xakhir
Algoritma Bresenham Searah Sumbu Y Tentukan x dan y x = abs(xakhir - xawal) y = abs(yakhir - yawal) Tentukan nilai awal X dan Y dengan Xawal dan Yawal X = Xawal Y = Yawal Beri warna Piksel pada posisi (X,Y) Pixel[x,y] = hitam Tentukan P0, dengan cara: P[0] = 2x - y Inisialisasi k dengan 0 k = 0 Tambahkan nilai koordinat dominan y Inc(y) Tentukan nilai Pk+1 dan pertambahan x berdasarkan nilai Pk Jika P[k]<0 maka P[k+1] = P[k] + 2x Jika sebaliknya maka P[k+1] = P[k] + (2x - 2y) inc(x) Beri warna Piksel pada posisi (X,Y) dan naikkan nilai k Inc(k) Ulangi proses nomor 6, 7, 8 sampai nilai Y >= Yakhir
Algoritma Bresenham Gabungan Tentukan x dan y x = abs(xakhir - xawal) y = abs(yakhir - yawal) Tentukan nilai awal X dan Y dengan Xawal dan Yawal X = Xawal Y = Yawal Beri warna Piksel pada posisi (X,Y) Pixel[x,y] = hitam Tentukan P0 Jika x > y maka P[0] = 2y - x jika sebaliknya maka P[0] = 2x - y Inisialisasi k dengan 0 k = 0
Algoritma Bresenham Gabungan (lanjutan) Tambahkan nilai koordinat dominan: Jika x > y maka Inc(x) jika sebaliknya maka Inc(y) Tentukan nilai Pk+1 dan pertambahan nilai koordinat non dominan berdasarkan Pk Jika x > y maka Jika P[k]<0 maka P[k+1] = P[k]+ 2y Jika sebaliknya maka P[k+1] = P[k]+ (2y - 2x); inc(y) jika sebaliknya maka Jika P[k]<0 maka P[k+1] = P[k]+ 2x P[k+1] = P[k]+ (2x - 2y) inc(x) Beri warna Piksel pada posisi (X,Y) dan naikkan nilai k Pixel[x,y] = hitam Inc(k) Ulangi proses nomor 6, 7, 8 selama nilai Xk+1 <= Xakhir atau Yk+1 <= Yakhir
Contoh Bresenham untuk garis P0(5,5) s/d P1(9,15)
Tugas Untuk 6PSI1 Diketahui sebuah garis dimuai dari titik P0(1,3) sampai P1(20,20) dengan menggunakan algoritma Bresenham, tentukan piksel-piksel yang harus diberi warna dan Gambarkan dalam sebuah grid Diketahui sebuah garis dimuai dari titik P0(3,1) sampai P1(20,20) dengan menggunakan algoritma Bresenham, tentukan piksel-piksel yang harus diberi warna dan Gambarkan dalam sebuah grid
Tugas untuk 6PSI2 Diketahui sebuah garis dimuai dari titik P0(7,5) sampai P1(20,20) dengan menggunakan algoritma Bresenham, tentukan piksel-piksel yang harus diberi warna dan Gambarkan dalam sebuah grid. Diketahui sebuah garis dimuai dari titik P0(7,20) sampai P1(20,5) dengan menggunakan algoritma Bresenham, tentukan piksel-piksel yang harus diberi warna dan Gambarkan dalam sebuah grid.