/* Bressenhams Circle Drawing Algorithm */ #include #include #include #include int xc,yc,r; void symm(int x,int y) { putpixel(x+xc,y+yc,WHITE); putpixel(-x+xc,-y+yc,WHITE); putpixel(x+xc,-y+yc,WHITE); putpixel(-x+xc,y+yc,WHITE); putpixel(y+xc,x+yc,WHITE); putpixel(-y+xc,-x+yc,WHITE); putpixel(-y+xc,x+yc,WHITE); putpixel(y+xc,-x+yc,WHITE); } void bhsmcircle(int xc,int yc,int r) { int x=0,y=r,dp; dp=3-2*r; while(x!=y) { if(dp<0) { dp+=4*x+6; symm(++x,y); } else { dp+=4*(x-y)+10; symm(++x,--y); } } } void main() { int gdriver = DETECT, gmode; initgraph(&gdriver, &gmode, ""); printf("Enter the centre co-ordinates: "); scanf("%d %d",&xc,&yc); printf("Enter the radius: "); scanf("%d",&r); bhsmcircle(xc,yc,r); getch(); }