

//Program to draw a circle using Bresenham’s circle algorithm
#include
#include
#include
#include
void cirbh(int,int,int);
void circlepp(int,int,int,int);
void main()
{
int gdriver=DETECT,gmode;
int x,y,r;
clrscr();
printf("\nEnter the coordinates of the centre : ");
scanf("%d %d",&x,&y);
printf("\nEnter the radius : ");
scanf("%d",&r);
initgraph(&gdriver,&gmode,"e:\\tc\\bgi");
cirbh(x,y,r);
getch();
}
void cirbh(int x,int y,int r)
{
int xa=0, ya=r;
int d=3-2*r;
circlepp(x,y,xa,ya);
while(xa<=ya)
{
circlepp(x,y,xa,ya);
if(d<0)
d+=4*xa+6;
else
{
d+=4*(xa-ya)+10;
ya--;
}
xa++;
}
}
void circlepp(int x,int y,int xa,int ya)
{
putpixel(x+xa,y+ya,WHITE);
putpixel(x-xa,y+ya,WHITE);
putpixel(x+xa,y-ya,WHITE);
putpixel(x-xa,y-ya,WHITE);
putpixel(x+ya,y+xa,WHITE);
putpixel(x-ya,y+xa,WHITE);
putpixel(x+ya,y-xa,WHITE);
putpixel(x-ya,y-xa,WHITE);
}
#include
#include
#include
#include
void cirbh(int,int,int);
void circlepp(int,int,int,int);
void main()
{
int gdriver=DETECT,gmode;
int x,y,r;
clrscr();
printf("\nEnter the coordinates of the centre : ");
scanf("%d %d",&x,&y);
printf("\nEnter the radius : ");
scanf("%d",&r);
initgraph(&gdriver,&gmode,"e:\\tc\\bgi");
cirbh(x,y,r);
getch();
}
void cirbh(int x,int y,int r)
{
int xa=0, ya=r;
int d=3-2*r;
circlepp(x,y,xa,ya);
while(xa<=ya)
{
circlepp(x,y,xa,ya);
if(d<0)
d+=4*xa+6;
else
{
d+=4*(xa-ya)+10;
ya--;
}
xa++;
}
}
void circlepp(int x,int y,int xa,int ya)
{
putpixel(x+xa,y+ya,WHITE);
putpixel(x-xa,y+ya,WHITE);
putpixel(x+xa,y-ya,WHITE);
putpixel(x-xa,y-ya,WHITE);
putpixel(x+ya,y+xa,WHITE);
putpixel(x-ya,y+xa,WHITE);
putpixel(x+ya,y-xa,WHITE);
putpixel(x-ya,y-xa,WHITE);
}


No comments:
Post a Comment