Advertisement
m4ly

[Grafika] ras2

Mar 28th, 2015
68
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 3.92 KB | None | 0 0
  1. /*
  2. Dawid Mocek
  3. */
  4. void my_line(View& view, const unsigned short& x1, const unsigned short& y1,
  5.         const unsigned short& x2, const unsigned short& y2)
  6. {
  7.     double y, x, xi, yi, antialias;
  8.     int i, down_color, up_color;
  9.  
  10.     //iteracja po y'ach
  11.     if (std::abs(y1 - y2) > std::abs(x1 - x2))
  12.     {
  13.         xi = (x2 - x1) / (double)(y2 - y1);//o ile przesuwac sie po osi x
  14.  
  15.         if (y2 > y1)
  16.         {
  17.             x = x1;
  18.             for (i = y1; i <= y2; i++)
  19.             {
  20.                 x += xi;
  21.                    
  22.                 //antyaliasing
  23.                 antialias = x - (int)(x);
  24.                 if (antialias < 0.25)
  25.                 {
  26.                     view(unsigned(x), i) = Pixel(0, 0, 255);
  27.                 }
  28.                 else if (antialias > 0.75)
  29.                 {
  30.                     view(unsigned(x) + 1, i) = Pixel(0, 0, 255);
  31.                 }
  32.                 else
  33.                 {
  34.                     down_color = (unsigned char)(antialias * 255);
  35.                     up_color = 255 - down_color;
  36.                     view(unsigned(x), i) = Pixel(down_color, down_color, 255);
  37.                     view(unsigned(x) + 1, i) = Pixel(up_color, up_color, 255);
  38.                 }
  39.             }
  40.         }
  41.         else
  42.         {
  43.             x = x2;
  44.             for (i = y2; i <= y1; i++)
  45.             {
  46.                 x += xi;
  47.                    
  48.                 //antyaliasing
  49.                 antialias = x - (int)(x);
  50.                 if (antialias < 0.25)
  51.                 {
  52.                     view(unsigned(x), i) = Pixel(0, 0, 255);
  53.                 }
  54.                 else if (antialias > 0.75)
  55.                 {
  56.                     view(unsigned(x) + 1, i) = Pixel(0, 0, 255);
  57.                 }
  58.                 else
  59.                 {
  60.                     down_color = (unsigned char)(antialias * 255);
  61.                     up_color = 255 - down_color;
  62.                     view(unsigned(x), i) = Pixel(down_color, down_color, 255);
  63.                     view(unsigned(x) + 1, i) = Pixel(up_color, up_color, 255);
  64.                 }
  65.                    
  66.             }
  67.  
  68.         }
  69.            
  70.     }
  71.     else//iteracja po x'ach
  72.     {
  73.         yi = (y2 - y1) / (double)(x2 - x1);
  74.  
  75.         if (x2 > x1)
  76.         {
  77.             y = y1;
  78.             for (i = x1; i <= x2; i++)
  79.             {
  80.                 y += yi;
  81.  
  82.                 //antyaliasing
  83.                 antialias = y - (int)(y);
  84.                 if (antialias < 0.25)
  85.                 {
  86.                     view(i, unsigned(y)) = Pixel(0, 0, 255);
  87.                 }
  88.                 else if (antialias > 0.75)
  89.                 {
  90.                     view(i, unsigned(y)+1) = Pixel(0, 0, 255);
  91.                 }
  92.                 else
  93.                 {
  94.                     down_color = (unsigned char)(antialias * 255);
  95.                     up_color = 255 - down_color;
  96.                     view(i, unsigned(y)) = Pixel(down_color, down_color, 255);
  97.                     view(i, unsigned(y)+1) = Pixel(up_color, up_color, 255);
  98.                 }
  99.             }
  100.         }
  101.         else
  102.         {
  103.             y = y2;
  104.             for (i = x2; i <= x1; i++)
  105.             {
  106.                 y += yi;
  107.                 //antyaliasing
  108.                 antialias = y - (int)(y);
  109.                 if (antialias < 0.25)
  110.                 {
  111.                     view(i, unsigned(y)) = Pixel(0, 0, 255);
  112.                 }
  113.                 else if (antialias > 0.75)
  114.                 {
  115.                     view(i, unsigned(y) + 1) = Pixel(0, 0, 255);
  116.                 }
  117.                 else
  118.                 {
  119.                     down_color = (unsigned char)(antialias * 255);
  120.                     up_color = 255 - down_color;
  121.                     view(i, unsigned(y)) = Pixel(down_color, down_color, 255);
  122.                     view(i, unsigned(y) + 1) = Pixel(up_color, up_color, 255);
  123.                 }
  124.             }
  125.         }
  126.            
  127.     }
  128. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement