| DDA | Bresenham | Mari Cuba | Latihan |
|
Contoh dan Penyelesaian dengan algoritma Bresenham |
|
1. Inputkan 2 titik hujung garis lurus (X 0,Y 0)dan (X n,Y n). katakan titik tersebut ialah (2,2) dan (6,4)
|
|
|
|
|
|
2. Plotkan titik awal iaitu (X0,Y 0)
|
|
|
|
|
3. Kemudian kira pemalar-pemalar berikut :
|
|
|
|
|
|
4. Seterusnya cari nilai pemalar penentu berpandukan nilai pemalar diatas
|
|
|
|
|
|
5. Pada setiap kedudukan persampelan Xk(di sepanjang laluan garis lurus) bermula
daripada k=0, uji nilai pemalar
tertentu Pk+1 = Pk + 2 deltay Pk+1 = Pk + 2 deltay - 2 deltax |
|
|
|
|
|
|
|
|
|
|
6. Ulang langkah 5 sebanyak
|
|
|
| |
| Bahagian Pengaturcaraan | |
| Berikut adalah contoh keratan aturcara bagi membangunkan garisan menggunakan algoritma Bresenham | |
| Public void lineBresenham (int x0, int y0, int x1, int y1, Color color) { | |
| int pix = color.getRGB(); | |
| int dy = y1 - y0; | |
| int dx = x1 - x0; | |
| int stepx, stepy; | |
| if ( dy < 0 ) { dy = -dy; stepy = -1; } else { stepy = 1 } | |
|
if ( dx < 0 ) { dx = -dx; stepx = -1; } else { stepx = 1 } |
|
| dy <<= 1; // dy is now 2 * dy | |
| dx <<= 1; // dx is now 2 * dx | |
| raster.setPixel (pix, x0, y0 ); | |
| if ( dx > dy ) { | |
| int fraction = dy - ( dx >> 1); // same as 2 * dy - dy | |
| While ( x0 != x1 )< | |
|
if (fraction >= 0) { |
|
| y0 += stepy; | |
| fraction -= dx; // same as fraction -+ 2*dx | |
| } | |
| x0 += stepx; | |
| fraction += dy; // same as fraction -= 2*dy | |
| raster setPixel(pix, x0, y0); | |
| } | |
| } else { | |
| int fraction = dx - ( dy >> 1 ); | |
| while ( y0 != y1) { | |
| if ( fraction > = 0 ) { | |
| x0 += stepx; | |
| fraction -= dy; | |
| y0 +=stepy | |
| fraction += dx; | |
| raster setPixel(pix, x0, y0); | |
| } | |
| } | |
| } | |
| |
|