0% found this document useful (0 votes)
56 views20 pages

P F C G: Ractical Ile of Omputer Raphics

The document contains summaries of 9 programs to perform various computer graphics tasks using different algorithms: 1. A program to draw a line using DDA line drawing algorithm in 3 sentences. 2. A program to draw a line using Bresenham's line drawing algorithm in 4 sentences. 3. A program using the midpoint circle drawing algorithm to draw a circle in 6 sentences. 4. A program to draw an ellipse using the midpoint ellipse drawing algorithm in 2 sentences. 5. A program to fill a circle using the boundary fill algorithm in 3 sentences.

Uploaded by

Wasim Jafar
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
56 views20 pages

P F C G: Ractical Ile of Omputer Raphics

The document contains summaries of 9 programs to perform various computer graphics tasks using different algorithms: 1. A program to draw a line using DDA line drawing algorithm in 3 sentences. 2. A program to draw a line using Bresenham's line drawing algorithm in 4 sentences. 3. A program using the midpoint circle drawing algorithm to draw a circle in 6 sentences. 4. A program to draw an ellipse using the midpoint ellipse drawing algorithm in 2 sentences. 5. A program to fill a circle using the boundary fill algorithm in 3 sentences.

Uploaded by

Wasim Jafar
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 20

PRACTICAL FILE OF COMPUTER GRAPHICS

SUBMITTED TO SUBMITTED BY

Mr. Sanjay Kataria Wasim Jafar


Asst. Professor 2K17/EC/195
CSE Deptt.
PRACTICAL NO. 1
Write a program to draw a line using DDA’s line drawing algorithm

Algorithm:

 Start.
 Declare variables x,y,x1,y1,x2,y2,k,dx,dy,s,xi,yi and also declare gdriver=DETECT,gmode.
 Initialize the graphic mode with the path location in TC folder.
 Input the two line end-points and store the left end-points in (x1,y1).
 Load (x1,y1) into the frame buffer; that is, plot the first point. Put x=x1,y=y1.
 Calculate dx=x2-x1 and dy=y2-y1.
 If abs(dx) > abs(dy), do s=abs(dx).
Otherwise s= abs(dy).
 Then xi=dx/s and yi=dy/s.
 Start from k=0 and continuing till k<s,the points will be
o x=x+xi.
o y=y+yi.
 Place pixels using putpixel at points (x,y) in specified colour.
 Close Graph.
 Stop.

Code:

#include<stdio.h>

#include<conio.h>

#include<graphics.h>

#include<dos.h>

voidlineDDA(int,int,int,int);

void main()

int x1,y1,xn,yn;

intgd=DETECT,gm;

initgraph(&gd,&gm,"");

printf("enter the starting coordinates of the line:");

scanf("%d%d",&x1,&y1);

printf("enter the ending coordinates of the line:");

scanf("%d%d",&xn,&yn);
lineDDA(x1,y1,xn,yn);

getch();

voidlineDDA(int x1,int y1,int xn,intyn)

intdx,dy,m,i;

m=(yn-y1)/(xn-x1);

for(i=x1;i<=xn;i++)

if(m<=1)

dx=1;

dy=(m*dx);

else

dy=1;

dx=(dy/m);

x1=x1+dx;

y1=y1+dy;

putpixel(x1,y1,RED);

delay(20);

OUTPUT
PROGRAM NO.3
Write a program to draw a line using Bresenham’s line drawing algorithm

Algorithm:

 Start.
 Declare variables x,y,x1,y1,x2,y2,p,dx,dy and also declare gdriver=DETECT,gmode.
 Initialize the graphic mode with the path location in TC folder.
 Input the two line end-points and store the left end-points in (x1,y1).
 Load (x1,y1) into the frame buffer; that is, plot the first point put x=x1,y=y1.
 Calculate dx=x2-x1 and dy=y2-y1,and obtain the initial value of decision parameter p as:
 p=(2dy-dx).
 Starting from first point (x,y) perform the following test:
 Repeat step 9 while(x<=x2).
 If p<0,next point is (x+1,y) and p=(p+2dy).
 Otherwise, the next point to plot is (x+1,y+1) and p=(p+2dy-2dx).
 Place pixels using putpixel at points (x,y) in specified colour.
 Close Graph.
 Stop

Code:

#include<conio.h>

#include<stdio.h>

#include<graphics.h>

#include<dos.h>

voidlineBres(int,int,int,int);

void main()

int x1,y1,xn,yn;

intgd=DETECT,gm;

initgraph(&gd,&gm,"");

printf("Enter the starting coordinate at line:");

scanf("%d%d", &x1, &y1);

printf("Enter the ending coordinate at line:");

scanf("%d%d", &xn, &yn);


lineBres(x1,y1,xn,yn);

getch();

voidlineBres(int x1,int y1,int xn,intyn)

int dx = xn-x1,dy=yn-y1;

int di = 2*dy-dx;

int ds = 2*dy,dt = 2*(dy-dx);

putpixel(x1,y1,RED);

while(x1<xn)

x1++;

if(di<0)

di=di+ds;

else

y1++;

di=di+dt;

putpixel(x1,y1,RED);

delay(20);

}
PRACTICAL NO. 7
Write a program to draw a circle using midpoint circle drawing algorithm

Algorithm:

1. Input radius r and circle centre (xc, yc), then set the coordinates for the first point on the circumference of a
circle centred on the origin as:

(x0, y0) (0,r)

2. Calculate the initial value of the decision parameter as:

5
p r
0
4

3. Starting with k = 0 at each position xk, perform the following test. If pk < 0, the next point along the circle
centred on (0, 0) is (xk+1, yk) and:

pk 1 p 2xk 1 1

Otherwise the next point along the circle is (xk+1, yk-1) and:

p p 2x 2y
k 1 k 1 k
1
1
k
4. Determine symmetry points in the other seven octants
5. Move each calculated pixel position (x,y)onto the circular path centred at (xc, yc)to plot
the coordinate values:
6. Repeat steps 3 to 5 until x >= y

x x x y y y
c c

#include<stdio.h>
#include<conio.h>
#include<graphics.h>
#include<dos.h>
voidcirclemidpoint(int,int,int);
voiddrawcircle(int,int,int,int);
void main()
{
intxc,yc,r;
intgd=DETECT,gm;
initgraph(&gd,&gm,"");
printf("Enter center coordinates of the circle: ");
scanf("%d%d",&xc,&yc);
printf("Enter radius of the circle: ");
scanf("%d",&r);
circlemidpoint(xc,yc,r);
getch();
}
voidcirclemidpoint(intxc,intyc,int r)
{
int x=0,y=r;
int p=1-r;
while(x<y)
{
drawcircle(xc,yc,x,y);
x++;
if(p<0)
{
p=p+2*x+1;
}
else
{
y--;
p=p+2*(x-y)+1;
}
drawcircle(xc,yc,x,y);
delay(50);
}
}
voiddrawcircle(intxc,intyc,intx,int y)
{
putpixel(xc+x,yc+y,RED);
putpixel(xc-x,yc+y,BLUE);
putpixel(xc+x,yc-y,GREEN);
putpixel(xc-x,yc-y,RED);
putpixel(xc+y,yc+xGREEN);
putpixel(xc-y,yc+x,YELLOW);
putpixel(xc+y,yc-x, YELLOW);
putpixel(xc-y,yc-x, YELLOW);
}

OUTPUT
P RACTICAL N O. 7
Write a program to draw a ellipse using midpoint ellipse drawing algorithm
#include <graphics.h>
#include <conio.h>
void main()
{
clrscr();
int gd = DETECT, gm;

int x = 350, y = 150;

int start_angle = 0;
int end_angle = 360;

int x_rad = 100;


int y_rad = 50;

initgraph(&gd, &gm, "C://TC//BGI");

ellipse(x, y, start_angle,
end_angle, x_rad, y_rad);

getch();

}
P RACTICAL N O. 9
Write a program to fill a circle using Boundary Fill Algorithm

#include<graphics.h>

#include<math.h>

#include<conio.h>

voiddcircle(inth,intk,int r);

voiddpixel(intx,inty,inth,int k);

voidcfill(intx,int y, intfcolor, intbcolor);

void main()

intgd=DETECT,gm;

initgraph(&gd,&gm,"");

setbkcolor(YELLOW);

dcircle(30,30,27);

cfill(30,30,BLUE,RED);

getch();

closegraph();

voiddcircle(inth,intk,int r)

inty,i;

for(i=0;i<=r;i++)

y=sqrt((r*r-(i)*(i)));

dpixel(i,y,h,k);
}

voiddpixel(intx,inty,inth,int k)

putpixel(x+h,y+k,RED);

putpixel(y+h,x+k,RED);

putpixel(-y+h,x+k,RED);

putpixel(-x+h,y+k,RED);

putpixel(-x+h,-y+k,RED);

putpixel(-y+h,-x+k,RED);

putpixel(y+h,-x+k,RED);

putpixel(x+h,-y+k,RED);

voidcfill(intx,int y, intfcolor, intbcolor)

int current;

current=getpixel(x,y);

if(current!=bcolor&& current!=fcolor)

putpixel(x,y,fcolor);

cfill(x+1,y,BLUE,RED);

cfill(x-1,y,BLUE,RED);

cfill(x,y+1,BLUE,RED);

cfill(x,y-1,BLUE,RED);

}
}
OUTPUT
P RACTICAL N O. 10
Write a program to fill a circle using Flood Fill Algorithm

#include<graphics.h>

#include<math.h>

#include<conio.h>

voiddcircle(inth,intk,int r);

voiddpixel(intx,inty,inth,int k);

voidffill(intx,int y, intfcolor, intbcolor);

void main()

intgd=DETECT,gm;

initgraph(&gd,&gm,"");

setbkcolor(YELLOW);

dcircle(30,30,27);

ffill(30,30,YELLOW,BLACK);

getch();

closegraph();

voiddcircle(inth,intk,int r)

inty,i;

for(i=0;i<=r;i++)

y=sqrt((r*r-(i)*(i)));

dpixel(i,y,h,k);

voiddpixel(intx,inty,inth,int k)

putpixel(x+h,y+k,RED);

putpixel(y+h,x+k,RED);
putpixel(-y+h,x+k,RED);

putpixel(-x+h,y+k,RED);

putpixel(-x+h,-y+k,RED);

putpixel(-y+h,-x+k,RED);

putpixel(y+h,-x+k,RED);

putpixel(x+h,-y+k,RED);

voidffill(intx,int y, intfcolor, intbcolor)

if(getpixel(x,y)==bcolor)

putpixel(x,y,fcolor);

ffill(x+1,y,YELLOW,BLACK);

ffill(x-1,y,YELLOW,BLACK);

ffill(x,y+1,YELLOW,BLACK);

ffill(x,y-1,YELLOW,BLACK);

}
OUTPUT

You might also like