void Bresenham_Circle(int xc,int yc,int r,int color)
{
int x,y,d1,d2,direction;
x=0;
y=r;
d=2*(1-r);
while(y>=0)
{
SetPixel(xc+x,yc+y,color);
SetPixel(xc-x,yc+y,color);
SetPixel(xc-x,yc-y,color);
SetPixel(xc+x,yc-y,color);
if(d<0)
{
d1=2*(d+y)-1;
if(d1<=0)direction=1;
else direction=2;
}
else if(d>0)
{
d2=2*(d-x)-1;
if(d2<=0)direction=2;
else direction=3;
}
else direction=3;
switch (direction)
{
case 1:x++;d+=2*x+1;break;
case 2:x++;y--;d+=2*(x-y+1);break;
case 3:y--;d+=-2*y+1;break;
}
}
}
{
int x,y,d1,d2,direction;
x=0;
y=r;
d=2*(1-r);
while(y>=0)
{
SetPixel(xc+x,yc+y,color);
SetPixel(xc-x,yc+y,color);
SetPixel(xc-x,yc-y,color);
SetPixel(xc+x,yc-y,color);
if(d<0)
{
d1=2*(d+y)-1;
if(d1<=0)direction=1;
else direction=2;
}
else if(d>0)
{
d2=2*(d-x)-1;
if(d2<=0)direction=2;
else direction=3;
}
else direction=3;
switch (direction)
{
case 1:x++;d+=2*x+1;break;
case 2:x++;y--;d+=2*(x-y+1);break;
case 3:y--;d+=-2*y+1;break;
}
}
}