| DDA | Bresenham | Mari Cuba | Latihan |
| Contoh dan penyelesaian penentuan titik dengan Algoritma DDA | |
|
1. Inputkan 2 titik iaitu (2,6) dan (10,2). Mula-mula cari nilai kecerunan garis tersebut.
| |
|
| |
|
2. Kemudian, lihat sama ada garis tersebut x1 < x 2 yang dilukis dari kiri ke kanan atau x1 > x 2 yang di lukis dari kana ke kiri. Nilai kecerunan tadi juga di rujuk.
| |
|
| |
|
Berdasarkan titik yang diberi, kiraanya adalah seperti berikut :
| |
|
| |
| sebagai contoh : | |
| |
| |
| |
| |
| |
| |
| |
| |
|
Langkah seperti gambarajah di atas diulang sebanyak
| |
![]() | |
| Bahagian Pengaturcaraan | |
| Berikut adalah contoh keratan aturcara bagi membangunkan garisan menggunakan algoritma Bresenham | |
| Public void lineDDA(int x0, int y0, int x1, int y1, Color color) | |
| int pix = color.getRGB(); | |
| int dy = y1 - y0; | |
| int dx = x1 - x0; | |
| float t = (float) 0.5; // offset for rounding | |
| raster.setPixel(pix,x0,y0); | |
|
if ( Math.abs(dx) > Math.abs(dy) { //slope < 1 |
|
| float m (float) dy/(float) dx; // compute slope | |
| t += y0; | |
| dx = (dx < 0) ? -1 : 1; | |
| m += dx; | |
| while (x0 != x1) { | |
| x0 += dx; // step to next x value | |
|
t += m; // add slope to y value |
|
| raster.setPixel (pix, x0, (int) t ); | |
| } | |
| } else { // slope >=1 | |
| float m = (float) dx / (float) dy; // compute slope | |
| t +=x0; | |
| dy =(dy < 0) ? -1 : 1; | |
| m += dy; | |
| while (y0 != y1) { | |
| y0 += dy; // step to next y value | |
| t += m; // add slope to x value | |
| raster setPixel(pix, (int) t, y0); | |
| } | |
| } | |
| } |
| |
|