Tuesday, November 6, 2007

Bresenham's Circle Drawing

Program : Bresenham's Circle Drawing



#include<stdio.h>

#include<conio.h>

#include<graphics.h>


void main()

{

int gdriver=DETECT,gmode,errorcode;

int x=0,y=0;

int d,t,r;

int xc,yc,xc1,yc1;

clrscr();

initgraph(&gdriver,&gmode,"c:\\TurboC3");

printf("\nEnter the co-ordinates of the centre of the circle(xc,yc): \n");

scanf("%d%d",&xc,&yc);

printf("\nEnter the radius of the circle ,r:");

scanf("%d",&r);

x=0;y=r;

d=3-(2*r);

circleplot(xc,yc,x,y);

cirbres(xc,yc,x,y,d);

getch();

}


cirbres(int xc,int yc,int x,int y,int d)

{

int t;

while(x<=y)

{

x++;

if(d<0)

d=d+(4*x)+6;

else

{

t=4*(x-y);

d=d+t+10;

y--;

}

circleplot(xc,yc,x,y);

}

return(0);

}

circleplot(int xa,int ya,int x,int y)

{

putpixel((xa+x),(ya+y),12);

putpixel((xa-x),(ya+y),12);

putpixel((xa+x),(ya-y),12);

putpixel((xa-x),(ya-y),12);

putpixel((xa+y),(ya+x),12);

putpixel((xa-y),(ya+x),12);

putpixel((xa+y),(ya-x),12);

putpixel((xa-y),(ya-x),12);

return(0);

}


0 comments: