Amazon banner

Thursday 16 August 2012

C PROGRAM TO DRAW CIRCLE IN FIRST QUADRANT IN CLOCKWISE DIRECTION USING BRESENHAM'S CIRCLE DRAWING ALGORITHM


/* C PROGRAM TO DRAW CIRCLE IN FIRST QUADRANT IN CLOCKWISE DIRECTION USING BRESENHAM'S CIRCLE DRAWING ALGORITHM*/

/* AUTHOR : DEEPAK MAHAKALE 3RD YEAR IT SRCOEM, NAGPUR*/
#include<stdio.h>
#include<conio.h>
#include<graphics.h>
#include<dos.h>
void main()
{
   // Request auto detection
   int gdriver = DETECT, gmode;
   int xi=0,yi,di,limit=0,r,d1,d2,xc,yc;
   clrscr();

   // Initialize graphics mode
   initgraph(&gdriver, &gmode,"C:\TC\BGI");
   xc=getmaxx()/2;
   yc=getmaxy()/2;

   setcolor(2);
   setbkcolor(15);

   // Get radius value
   printf("\n\n\t Enter the radius :");
   scanf("%d",&r);

   line(0,yc,xc*2,yc);
   line(xc,0,xc,yc*2);

   yi=r;                   // Assign radius to yi

   di=2*(1-r);             // Value for delta
   putpixel(xc,yc,RED);
   while(yi>=limit)
     {
putpixel(xc+xi,yc-yi,RED);           // Putpixel
delay(50);
if(di<0)
{
  d1=(2*di)+(2*yi)-1;
  if(d1<=0)
  {
     xi=xi+1;
     di=di+2*xi+1;            //Mh value
  }
  else
  {
     xi=xi+1;
     yi=yi-1;
     di=di+2*xi-2*yi+2;       //Md value
  }
}
else
{
  if(di>0)
  {
     d2=2*di-2*xi-1;
     if(d2<=0)
     {
 xi=xi+1;
 yi=yi-1;
 di=di+2*xi-2*yi+2;    //Md value
     }
     else
     {
 yi=yi-1;
 di=di-2*yi+1;         // Mv value
     }
  }
  else
  {
     if(di==0)
     {
 xi=xi+1;
 yi=yi-1;
 di=di+2*xi-2*yi+2;    // Md value
     }
  }
}
     }    //While ends

     getch();
     closegraph();
     }



No comments:

Post a Comment