Advertisement
Guest User

Untitled

a guest
Sep 21st, 2017
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.75 KB | None | 0 0
  1. void BresenhamAlgorithm::BresenhamLine(int x0, int y0, int x1, int y1)
  2. {
  3.     bool flag = true;
  4.  
  5.     int i = 0, s0 = sgn(x1 - x0), s1 = sgn(y1 - y0);
  6.  
  7.     int
  8.         x = x0, y = y0,
  9.         delta_x = abs(x1 - x0), delta_y = abs(y1 - y0),
  10.         e_mod = 0;
  11.  
  12.     if (delta_y > delta_x)
  13.     {
  14.         swap(delta_x, delta_y);
  15.     }
  16.     else
  17.     {
  18.         flag = false;
  19.     }
  20.  
  21.     e_mod = 2 * delta_y - delta_x;
  22.  
  23.     for (int i = 0; i <= delta_x; i++)
  24.     {
  25.         Tuple<int, int>^ temp_tuple = gcnew Tuple<int, int>(x, y);
  26.         points->Add(temp_tuple);
  27.  
  28.         delete temp_tuple;
  29.  
  30.         while (e_mod >= 0)
  31.         {
  32.             if (flag)
  33.             {
  34.                 x += s0;
  35.             }
  36.             else
  37.             {
  38.                 y += s1;
  39.             }
  40.  
  41.             e_mod -= 2 * delta_x;
  42.         }
  43.  
  44.         if (flag)
  45.         {
  46.             y += s1;
  47.         }
  48.         else
  49.         {
  50.             x += s0;
  51.         }
  52.  
  53.         e_mod += 2 * delta_y;
  54.     }
  55. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement