Advertisement
Guest User

Super linia

a guest
Dec 1st, 2015
85
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.12 KB | None | 0 0
  1. void my_line(int x0, int y0, int x1, int y1) {
  2.     int linecolor = makecol(255, 255, 255);
  3.  
  4.     if(x1 == x0) {
  5.         for(int y = min(y0, y1); y <= max(y0,y1); ++y) {
  6.             putpixel(screen, x0, y, linecolor);
  7.         };
  8.         return;
  9.     };
  10.  
  11.     if(y1 == y0) {
  12.         for(int x = min(x0, x1); x <= max(x0,x1); ++x) {
  13.             putpixel(screen, x, y0, linecolor);
  14.         };
  15.         return;
  16.     }
  17.  
  18.     double m = (y1 - y0) / (double) (x1 - x0);
  19.     cout << "Wspolczynnik nachylenia m = " << m << endl;
  20.  
  21.     if(abs(m) <= 1) {
  22.         int x = x0;
  23.         double y = y0;
  24.         while( min(x0, x1) <= x && x <= max(x0, x1)) {
  25.             putpixel(screen, x, floor(y), linecolor);
  26.             x = (x0 <= x1) ? x + 1 : x - 1;
  27.             y = (x0 <= x1) ? y + m : y - m;
  28.         };
  29.     } else {
  30.         double x = x0;
  31.         int y = y0;
  32.         m = (x1 - x0) / (double) (y1 - y0);
  33.         while( min(y0, y1) <= y && y <= max(y0, y1)) {
  34.             putpixel(screen, floor(x), y, linecolor);
  35.             y = (y0 <= y1) ? y + 1 : y - 1;
  36.             x = (y0 <= y1) ? x + m : x - m;
  37.         };
  38.     }
  39. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement