Showing posts with label bresenham midpoint circle algorithm using c. Show all posts
Showing posts with label bresenham midpoint circle algorithm using c. Show all posts

Saturday, January 16, 2010

midpoint circle algorithm




Download this file  : circle.c




program:
#include"graphics.h"
#include"stdio.h"
#include"conio.h"
#include"dos.h"
int step=0,r;
void main()
{
int i,j,x,y,p,a,midx,midy;
int gd=DETECT,gm,xcenter,ycenter;
printf("Enter the radius  :");
scanf("%d",&r);
initgraph(&gd,&gm,"");
midx=getmaxx()/2;
midy=getmaxy()/2;
line(midx,0,midx,2*midy);
line(0,midy,2*midx,midy);
outtextxy(midx-10,midy+10,"0");
outtextxy(midx-20,10,"-y");
outtextxy(midx-20,2*midy-10,"+y");
outtextxy(10,midy-10,"-x");
outtextxy(2*midx-20,midy-10,"+x");
xcenter=midx;
ycenter=midy;
x=0;
y=r;
p=1-r;
midpoint(xcenter,ycenter,x,y,p);
getch();
closegraph();
restorecrtmode();

}
midpoint(int xcenter,int ycenter,int x,int y,int p)
{
while(x < y)
{
plotcircle(xcenter,ycenter,x,y);
if(p<0)
p=p+2*x+1;
else
{
p=p+2*(x-y)+1;
y=y-1;
}
x=x+1;
}
if(x==y)
plotcircle(xcenter,ycenter,x,y);
return;
}
plotcircle(int xcenter,int ycenter,int x,int y)
{
delay(50);
step++;
if(step==r/2)
{
outtextxy(xcenter+x,ycenter+y,"(+x,-y)");
outtextxy(xcenter-x-50,ycenter+y,"(-x,-y)");
outtextxy(xcenter+x,ycenter-y,"(+x,+y)");
outtextxy(xcenter-x-50,ycenter-y,"(-x,+y)");
outtextxy(xcenter+y,ycenter+x,"(+y,-x)");
outtextxy(xcenter-y-50,ycenter+x,"(-y,-x)");
outtextxy(xcenter+y,ycenter-x,"(+y,+x)");
outtextxy(xcenter-y-50,ycenter-x,"(-y,+x)");
}
putpixel(xcenter+x,ycenter+y,10);
putpixel(xcenter-x,ycenter+y,10);
putpixel(xcenter+x,ycenter-y,10);
putpixel(xcenter-x,ycenter-y,10);
putpixel(xcenter+y,ycenter+x,10);
putpixel(xcenter-y,ycenter+x,10);
putpixel(xcenter+y,ycenter-x,10);
putpixel(xcenter-y,ycenter-x,10);
putpixel(xcenter+x,ycenter-x,10);
return;
}




Download this file  : circle.c



output:


Enter the radius : 150









Download this file  : circle.c