ComputerGraphics11-Algoritma Menggambar Garis

Download Report

Transcript ComputerGraphics11-Algoritma Menggambar Garis

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
y
m
x
atau
y1  y0
m
x1  x0
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
1.
2.
3.
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
4.
5.
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)
6.
Beri warna Piksel pada posisi (PosX, PosY)
PixelPosX, PosY] = hitam
7.
Tentukan nilai X dan Y berikutnya
X = X +Xinc
Y = Y + Yinc
8.
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 = 2y - x  untuk kemiringan ke arah sumbu x
P0 = 2x - y  untuk kemiringan ke arah sumbu y
• Untuk Pk+1 nilainya ditentukan berdasarkan Pk;
– Jika Pk < 0 maka
Pk+1 = Pk + 2y  untuk kemiringan ke arah sumbu x
Pk+1 = Pk + 2x  untuk kemiringan ke arah sumbu y
– Jika Pk  0 maka
Pk+1 = Pk + (2y - 2x)  untuk kemiringan ke arah sumbu x
Pk+1 = Pk + (2x - 2y)  untuk kemiringan ke arah sumbu y
Algoritma Bresenham Searah
Sumbu X
1.
Tentukan x dan y
2.
Tentukan nilai awal X dan Y dengan Xawal dan Yawal
x = abs(xakhir - xawal)
y = abs(yakhir - yawal)
X = Xawal
Y = Yawal
3.
Beri warna Piksel pada posisi (X,Y)
Pixel[x,y] = hitam
4.
Tentukan P0
P[0] = 2y - x
5.
Inisialisasi k dengan 0
k=0
6.
Tambahkan nilai koordinat dominan x
Inc(x)
7.
Tentukan nilai Pk+1 dan pertambahan Y berdasarkan nilai Pk
Jika P[k]<0 maka P[k+1] = P[k] + 2y
Jika sebaliknya maka
P[k+1] = P[k] + (2y - 2x)
inc(y)
8.
Beri warna Piksel pada posisi (X,Y) dan naikkan nilai k
Pixel[x,y] = hitam
Inc(k)
9.
Ulangi proses nomor 6, 7, 8 sampai nilai X >= Xakhir
Algoritma Bresenham Searah
Sumbu Y
1.
Tentukan x dan y
2.
Tentukan nilai awal X dan Y dengan Xawal dan Yawal
x = abs(xakhir - xawal)
y = abs(yakhir - yawal)
X = Xawal
Y = Yawal
3.
Beri warna Piksel pada posisi (X,Y)
Pixel[x,y] = hitam
4.
Tentukan P0, dengan cara:
P[0] = 2x - y
5.
Inisialisasi k dengan 0
6.
Tambahkan nilai koordinat dominan y
k=0
Inc(y)
7.
Tentukan nilai Pk+1 dan pertambahan x berdasarkan nilai Pk
Jika P[k]<0 maka P[k+1] = P[k] + 2x
Jika sebaliknya maka
P[k+1] = P[k] + (2x - 2y)
inc(x)
8.
Beri warna Piksel pada posisi (X,Y) dan naikkan nilai k
Pixel[x,y] = hitam
Inc(k)
9.
Ulangi proses nomor 6, 7, 8 sampai nilai Y >= Yakhir
Algoritma Bresenham Gabungan
1. Tentukan x dan y
x = abs(xakhir - xawal)
y = abs(yakhir - yawal)
2. Tentukan nilai awal X dan Y dengan Xawal dan Yawal
X = Xawal
Y = Yawal
3. Beri warna Piksel pada posisi (X,Y)
Pixel[x,y] = hitam
4. Tentukan P0
Jika x > y maka P[0] = 2y - x
jika sebaliknya maka P[0] = 2x - y
5. Inisialisasi k dengan 0
k=0
Algoritma Bresenham Gabungan
(lanjutan)
6.
7.
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]+ 2y
Jika sebaliknya maka
P[k+1] = P[k]+ (2y - 2x);
inc(y)
jika sebaliknya maka
Jika P[k]<0 maka P[k+1] = P[k]+ 2x
Jika sebaliknya maka
P[k+1] = P[k]+ (2x - 2y)
inc(x)
8.
Beri warna Piksel pada posisi (X,Y) dan naikkan nilai k
Pixel[x,y] = hitam
Inc(k)
9.
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
1. 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
2. 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
1. 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.
2. 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.