Complete Bbresenham Midpoint Ellipse Algotithm
# include<stdio.h>
# include<conio.h>
# include<math.h>
# include <graphics.h>
int xcentre, ycentre, rx, ry;
int p,px,py,x,y,rx2,ry2,tworx2,twory2;
void drawelipse();
void main()
{
int gd=3,gm=1;
clscr();
initgraph(&gd,&gm,””);
printf(“n Enter X center value: “);
scanf(“%d”,&xcentre);
printf(“n Enter Y center value: “);
scanf(“%d”,&ycentre);
printf(“n Enter X redius value: “);
scanf(“%d”,&rx);
printf(“n Enter Y redius value: “);
scanf(“%d”,&ry);
cleardevice();
ry2=ry*ry;
rx2=rx*rx;
twory2=2*ry2;
tworx2=2*rx2;
/* REGION first */
x=0;
y=ry;
drawelipse();
p=(ry2-rx2*ry+(0.25*rx2));
px=0;
py=tworx2*y;
while(px<py)
{
x++;
px=px+twory2;
if(p>=0)
{
y=y-1;
py=py-tworx2;
}
if(p<0)
p=p+ry2+px;
else
{
p=p+ry2+px-py;
drawelipse();
}
}
/*REGION second*/
p=(ry2*(x+0.5)*(x+0.5)+rx2*(y-1)*(y-1)-rx2*ry2);
while(y>0)
{
y=y-1:
py=py-tworx2;
if(p<=0)
{
x++;
px =px + twory2;
}
if(p >0)
p=p+rx2-py;
else
{
p=p+rx2-py+px;
drawelipse();
}
}
getch();
closegraph();
}
void drawelipse()
{
Putpixel (xcenter +x, ycenter +y, BROWN);
putpixel (xcenter +x, ycenter +y, BROWN);
putpixel (xcenter +x, ycenter +y, BROWN);
putpixel (xcenter +x, ycenter +y, BROWN);
}