You are on page 1of 5

Q.5.

)Write a Program with Menu Option to Input the line Co-ordinates from the user
to Generate a line using Bressenham's method and DDA algorithm
/*Program For Circle Generation Using Bresenham's Algorithm */
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#include<graphics.h>
int xi,yi,di;
void mh()
/*To Move in Horizontal direction */
{
xi=xi+1;
di=di+(2*xi)+1;
}
void md()
/*To Move in Diagonal direction */
{
xi=xi+1;
yi=yi-1;
di=di+(2*xi)-(2*yi)+2;
}
void mv()
/*To Move in Vertical direction */
{
yi=yi-1;
di=di-(2*yi)+1;
}
void main()
{
int gd,gm,dx,dy,rad,limit,d,d1,xc,yc;
detectgraph(&gd,&gm);
initgraph(&gd,&gm,"c:\\turboc3\\bgi");
printf("\nEnter the Center Co-ordinates of circle Xc & Yc->");
scanf("%d %d",&xc,&yc); printf("\nEnter Radius Of Circle->");
scanf("%d",&rad);
xi=0;
yi=rad;
di=2*(1-rad);
limit=0;
while(yi>=limit)
{
/*Putpixel function to generate the circle in all quadrents */
putpixel(xc+xi,yc+yi,RED);
putpixel(xc+xi,yc-yi,RED);
putpixel(xc-xi,yc+yi,RED);
putpixel(xc-xi,yc-yi,RED);
delay(50);
if(di<0)
{
d=(2*di)+(2*yi)-1;

if(d<0) mh();
else md();
}
else if(di>0)
{
d1=(2*di)-(2*xi)-1;
if(d1<=0) md();
else mv();
}
else if(di==0) md();
}
circle(xc,yc,rad);
getch();
closegraph();
}

Output:

#include <stdio.h>
#include <dos.h>
#include <graphics.h>
void circleBres(int, int, int);
void drawCircle(int, int, int, int);
void main()
{
int xc, yc, r;
int gd = DETECT, gm;
initgraph(&gd, &gm, "");
printf("Enter center coordinates of circle: ");
scanf("%d %d", &xc, &yc);
printf("Enter radius of circle: ");
scanf("%d", &r);
circleBres(xc, yc, r);
getch();
}

void circleBres(int xc, int yc, int r)


{
int x = 0, y = r;
int d = 3 - 2 * r;
while (x < y)
{
drawCircle(xc, yc, x, y);
x++;
if (d < 0)
d = d + 4 * x + 6;
else
{
y--;
d = d + 4 * (x - y) + 10;
}
drawCircle(xc, yc, x, y);
delay(50);
}
}
void drawCircle(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);
}

You might also like