Advertisement
d1i2p3a4k5

Breseham line drawing algorithm

Feb 26th, 2015
211
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.06 KB | None | 0 0
  1. #include<stdio.h>
  2. #include<conio.h>
  3. #include<graphics.h>
  4. #include<math.h>
  5. void main()
  6. {
  7.     int x1,y1,x2,y2,gd,gm,dx,dy;
  8.     float p0,p1,xinc,yinc;
  9.     detectgraph(&gd,&gm);
  10.     initgraph(&gd,&gm,"c:\\tc\\bgi");
  11.     printf("enter the coordinates");
  12.     scanf("%d%d%d%d",&x1,&y1,&x2,&y2);
  13.     putpixel(x1,y1,WHITE);
  14.     dx = x2-x1;
  15.     dy = y2-y1;
  16.     while(x1!=x2&&y1!=y2)
  17.     {
  18.  
  19.         if(abs(dx)>=abs(dy))
  20.         {
  21.              p0 = 2*abs(dy)-abs(dx);
  22.              p1=p0;
  23.             if(p1<0)
  24.             {
  25.                 xinc = dx/abs(dx);
  26.                 yinc = 0;
  27.                 p1=p0+2*abs(dy);
  28.             }
  29.             else
  30.             {
  31.                 xinc=dx/abs(dx);
  32.                 yinc=dy/abs(dy);
  33.                 p1=p0+2*abs(dy)-2*abs(dx);
  34.             }
  35.         }
  36.         if(abs(dy)>abs(dx))
  37.         {
  38.             p0=2*abs(dx)-abs(dy);
  39.             p1=p0;
  40.             if(p1<0)
  41.             {
  42.                 xinc=dx/abs(dx);
  43.                 yinc=0;
  44.                 p1=2*abs(dx);
  45.             }
  46.             else if(p1>0)
  47.             {
  48.                 xinc=dx/abs(dx);
  49.                 yinc=dy/abs(dy);
  50.                 p1=p0+2*abs(dx)-2*abs(dy);
  51.             }
  52.         }
  53.         x1=(int)(x1+xinc+0.5);
  54.         y1=(int)(y1+yinc+0.5);
  55.         putpixel(x1,y1,WHITE);
  56.         putpixel(x1,y1+1,WHITE);
  57.         putpixel(x1,y1-1,WHITE);
  58.         putpixel(x1,y1+2,WHITE);
  59.         putpixel(x1,y1-2,WHITE);
  60.     }
  61.     getch();
  62. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement