#include<graphics.h>
#include<stdio.h>
#include<conio.h>
#define ROUND(a) ((int) (a+0.5))
void main()
{
int gd=DETECT,gm,errorcode,round(float);
float p,x,y,xc,yc,rx,ry,ry2,rx2;
initgraph(&gd,&gm,"c:\\tc\\bgi");
printf("Enter the value for xc,yc,rx and ry\n");
scanf("%f %f %f %f",&xc,&yc,&rx,&ry);
ry2=ry*ry;
rx2=rx*rx;
//region 1
x=0;
y=ry;
putpixel(xc+x,yc+y,1);
putpixel(xc-x,yc+y,1);
putpixel(xc+x,yc-y,1);
putpixel(xc-x,yc-y,1);
p=ROUND((ry2-rx2*ry+(0.25*rx2)));
while((2*ry2*x)<(2*rx2*y))
{
if(p<0)
{
x++;
p=p+(2*ry2*x)+(2*ry2)+ry2;
}
else
{
x++;
y--;
p=p+(2*ry2*x)+(2*ry2)-(2*rx2*y)-(2*rx2)+(ry2);
}
putpixel(xc+x,yc+y,1);
putpixel(xc-x,yc+y,1);
putpixel(xc+x,yc-y,1);
putpixel(xc-x,yc-y,1);
}
//region2
p=ROUND(ry2*(x+0.5)*(x+0.5)+rx2*(y-1)*(y-1)-rx2*ry2);
while(y>0)
{
if(p<0)
{
x++;
y--;
p=p+(2*ry2*x)+(2*ry2)-(2*rx2*y)-(2*rx2)+(rx2);
}
else
{
y--;
p=p-(2*rx2*y)-(2*rx2)+rx2;
}
//putpixel(xc,yc,6);
putpixel(xc+x,yc+y,1);
putpixel(xc-x,yc+y,1);
putpixel(xc+x,yc-y,1);
putpixel(xc-x,yc-y,1);
}
outtextxy(xc,yc,"(xc,yc)");
getch();
}
#include<stdio.h>
#include<conio.h>
#define ROUND(a) ((int) (a+0.5))
void main()
{
int gd=DETECT,gm,errorcode,round(float);
float p,x,y,xc,yc,rx,ry,ry2,rx2;
initgraph(&gd,&gm,"c:\\tc\\bgi");
printf("Enter the value for xc,yc,rx and ry\n");
scanf("%f %f %f %f",&xc,&yc,&rx,&ry);
ry2=ry*ry;
rx2=rx*rx;
//region 1
x=0;
y=ry;
putpixel(xc+x,yc+y,1);
putpixel(xc-x,yc+y,1);
putpixel(xc+x,yc-y,1);
putpixel(xc-x,yc-y,1);
p=ROUND((ry2-rx2*ry+(0.25*rx2)));
while((2*ry2*x)<(2*rx2*y))
{
if(p<0)
{
x++;
p=p+(2*ry2*x)+(2*ry2)+ry2;
}
else
{
x++;
y--;
p=p+(2*ry2*x)+(2*ry2)-(2*rx2*y)-(2*rx2)+(ry2);
}
putpixel(xc+x,yc+y,1);
putpixel(xc-x,yc+y,1);
putpixel(xc+x,yc-y,1);
putpixel(xc-x,yc-y,1);
}
//region2
p=ROUND(ry2*(x+0.5)*(x+0.5)+rx2*(y-1)*(y-1)-rx2*ry2);
while(y>0)
{
if(p<0)
{
x++;
y--;
p=p+(2*ry2*x)+(2*ry2)-(2*rx2*y)-(2*rx2)+(rx2);
}
else
{
y--;
p=p-(2*rx2*y)-(2*rx2)+rx2;
}
//putpixel(xc,yc,6);
putpixel(xc+x,yc+y,1);
putpixel(xc-x,yc+y,1);
putpixel(xc+x,yc-y,1);
putpixel(xc-x,yc-y,1);
}
outtextxy(xc,yc,"(xc,yc)");
getch();
}