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 kali dan hasilnya boleh dilihat seperti jadual berikut:

 

 


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);
          }
      }
}