160 likes | 411 Views
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
E N D
Grafika Komputer(TIZ10) Algoritma Menggambar Garis Disusun oleh Teady Matius Prodi Teknik Informatika – Universitas Bunda Mulia
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
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 Pixel[x,y] = hitam 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 Pixel[x,y] = hitam 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 Jika sebaliknya maka 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
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.