Advertisement
Guest User

bresenham.h

a guest
May 5th, 2013
104
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.53 KB | None | 0 0
  1. #ifndef BRESENHAM_H_INCLUDED
  2. #define BRESENHAM_H_INCLUDED
  3.  
  4. bool line(int y1, int x1, int y2, int x2, int z)
  5. {
  6.     bool fail = 0;
  7.     int d, dx, dy, ai, bi, xi, yi;
  8.     int x = x1, y = y1;
  9.     if (x1 < x2)
  10.     {
  11.         xi = 1;
  12.         dx = x2 - x1;
  13.     }
  14.     else
  15.     {
  16.         xi = -1;
  17.         dx = x1 - x2;
  18.     }
  19.     if (y1 < y2)
  20.     {
  21.         yi = 1;
  22.         dy = y2 - y1;
  23.     }
  24.     else
  25.     {
  26.         yi = -1;
  27.         dy = y1 - y2;
  28.     }
  29.     if (dx > dy)
  30.     {
  31.         ai = (dy - dx) * 2;
  32.         bi = dy * 2;
  33.         d = bi - dx;
  34.         while (x != x2)
  35.         {
  36.             if (d >= 0)
  37.             {
  38.                 x += xi;
  39.                 y += yi;
  40.                 d += ai;
  41.             }
  42.             else
  43.             {
  44.                 d += bi;
  45.                 x += xi;
  46.             }
  47.             if(map_g[y][x][z] == 2)
  48.             {
  49.                 fail = 1;
  50.             }
  51.         }
  52.     }
  53.     else
  54.     {
  55.         ai = ( dx - dy ) * 2;
  56.         bi = dx * 2;
  57.         d = bi - dy;
  58.         while (y != y2)
  59.         {
  60.             if (d >= 0)
  61.             {
  62.                 x += xi;
  63.                 y += yi;
  64.                 d += ai;
  65.             }
  66.             else
  67.             {
  68.                 d += bi;
  69.                 y += yi;
  70.             }
  71.             if(map_g[y][x][z] == 2)
  72.             {
  73.                 fail = 1;
  74.             }
  75.         }
  76.     }
  77.     if(fail == 1)
  78.     {
  79.         return false;
  80.     }
  81.     else
  82.     {
  83.         return true;
  84.     }
  85. }
  86.  
  87.  
  88. #endif // BRESENHAM_H_INCLUDED
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement