#include<iostream>
#include<stdlib.h>
#include<graphics.h>
using namespace std;
float dda(float x1, float y1, float x2, float y2)
{
float dx,dy,x,y,length,h,my,mx,ix,iy;
float signdx, signdy;
int i;
dx = x2-x1;
dy = y2-y1;
if(dx>0)
signdx = 1;
else if(dx == 0)
signdx = 0;
else
signdx = -1;
if(dy>0)
signdy = 1;
else if(dy == 0)
signdy = 0;
else
signdy = -1;
if(dx<dy)
length=dy;
else
length=dx;
ix = dx/length;
iy = dy/length;
x = x1+(0.5*signdx);
y = y1+(0.5*signdy);
putpixel(x,y,RED);
for(i=0;i<=length;i++)
{
x = x+ix;
y = y+iy;
putpixel(x,y,RED);
delay(35);
}
}
int Circle(int xc, int yc, int x, int y)
{
putpixel(xc+x,yc+y,RED);
putpixel(xc-x,yc+y,RED);
putpixel(xc+x,yc-y,RED);
putpixel(xc-x,yc-y,RED);
putpixel(xc+y,yc-x,RED);
putpixel(xc-y,yc+x,RED);
putpixel(xc+y,yc+x,RED);
putpixel(xc-y,yc-x,RED);
}
int circle_bres(int xc, int yc, int r)
{
int x = 0;
int y = r;
int d = 3-2*r;
Circle(xc,yc,x,y);
do
{
if(d<0)
d+= 4*x + 6;
else
{
d += 4*(x-y)+10;
y--;
}
x++;
Circle(xc,yc,x,y);
}while(x<=y);
}
int main()
{
int gd=DETECT,gm;
int x,y,r;
cout<<"\n Enter the centre point of circle: ";
cin>>x>>y;
cout<<"\n Enter the radius of the circle: ";
cin>>r;
initgraph(&gd,&gm,NULL);
circle_bres(x,y,r*2);
circle_bres(x,y,r);
dda(x,y-r*2,x-1.73*r,y+r);
dda(x-1.73*r,y+r,x+1.73*r,y+r);
dda(x,y-r*2,x+1.73*r,y+r);
delay(1000);
closegraph();
return 0; }
