Issue No.
: Date:
Rev No.: Nil Rev. Date: Nil
DA6210-Computer Graphics Lab Clause: Nil Page: 1
Manual
DIT UNIVERSITY DEHRADUN
DEPARTMENT OF COMPUTER SCIENCE & ENGINEERING
Lab Manual for the Academic Year 2018-19
Subject : Computer Graphics
Subject code : DA6210
Course coordinator : Kushal Gupta
HOD : Dr. Vishal Bharti
Prepared by: Reviewed by: Approved by:
Kushal Gupta
Issue No.: Date:
Rev No.: Nil Rev. Date: Nil
DA6210-Computer Graphics Lab Clause: Nil Page: 2
Manual
Table of Contents
S. No Content Page No.
1 System Requirements 3
2 Lab Objectives 4
Experiment Manual
Experiment Title of experiment
Page No.
No.
Introduction to Graphics functions and construction of
1 smileys 5
2 Line Drawing: General Approach 9
3 Line Drawing: DDA Algorithm 12
4 Line Drawing: Bresenham’s Algorithm 15
5 Circle Drawing: Bresenham’s Algorithm 18
2-D Transformations: Translation and Scaling using a
6 HUT 20
7 2-D Transformations: Rotation 22
8 Polygon Filling: Flood Fill Algorithm 24
9 Polygon Filling: Boundary Fill Algorithm 26
10 Line Clipping: Cohen Sutherland Algorithm 28
Prepared by: Reviewed by: Approved by:
Kushal Gupta
Issue No.: Date:
Rev No.: Nil Rev. Date: Nil
DA6210-Computer Graphics Lab Clause: Nil Page: 3
Manual
System Requirements
1. Intel based desktop PC of 2GHz or faster processor with at least 256 MB RAM
and 256 MB free disk space.
2. C or C++ compiler.
Prepared by: Reviewed by: Approved by:
Kushal Gupta
Issue No.: Date:
Rev No.: Nil Rev. Date: Nil
DA6210-Computer Graphics Lab Clause: Nil Page: 4
Manual
Lab Objectives
1. To provide an understanding of basic computer graphics with different color
model like RGB, CMYK etc.
2. To provide an understanding to draw basic objects like line, polygon, curve etc.
and different transformation of objects.
3. To provide an understanding for object clipping, windowing, real object
projection, world view etc.
Prepared by: Reviewed by: Approved by:
Kushal Gupta
Issue No.: Date:
Rev No.: Nil Rev. Date: Nil
DA6210-Computer Graphics Lab Clause: Nil Page: 5
Manual
Practical 1
Objective
Introduction of basic graphics functions in C language.
1. getmaxx():
It returns the maximum x co-ordinate value(screen-relative) for the current graphics
driver and mode.
2. arc(int x, int y, int start_angle, int end_angle, int radius):
It draws a circular arc in the current drawing color with the specified center, start and
end angle and radius.
3. setcolor ( int color):
It sets the current drawing color to specified color (which can range from 0 to
getmaxcolor ).
4. ellipse(int x, int y, int start_angle, int end_angle, int x_radius, int
y_radius) :
Draws elliptical arc in the current drawing color having radius(x,y) and specified radius.
5. line(int x1, int y1, int x2, int y2):
Draws a line from (x1,y1) to (x2,y2) using the current color, line style, and thickness.
6. setcolor(int color) :
Sets the current drawing color to specified color (which can range from 0 to getmaxcolor
).
7. circle(int x, int y, int radius):
Draws a circle in current drawing color having center (x,) and specified radius.
8. setfillstle(int pattern, int color):
Sets the mentioned fill style and fill color.
9. floodfill(int x, int y, int border):
Fills the region with the current drawing color and pattern in which the point (x,y)
enclosed with the mentioned border color.
Prepared by: Reviewed by: Approved by:
Kushal Gupta
Issue No.: Date:
Rev No.: Nil Rev. Date: Nil
DA6210-Computer Graphics Lab Clause: Nil Page: 6
Manual
10. closegraph(void):
It deallocates all memory allocated by the graphics system.It then restores the screen to
the mode it was before calling initgraph.
Construction of smileys using graphics in C language.
Source Code
#include<conio.h>
#include<stdio.h>
#include<graphics.h>
int main()
{
int gd=DETECT,gm,X,Y;
initgraph(&gd,&gm,"");
X=getmaxx();
Y=getmaxy();
printf("%d %d",X,Y);
setcolor(WHITE);
//Quadrant Lines
line(X/2,0,X/2,Y);
line(0,Y/2,X,Y/2);
//Quadrant 1 Smiley
setcolor(YELLOW);
circle(3*X/4,Y/4,X/6); //Main Circle
line((3*X/4),(Y/4)-10,(3*X/4),(Y/4)+10); //Nose
circle((3*X/4)-50,(Y/4)-50,10); //Eye
circle((3*X/4)+50,(Y/4)-50,10); //Eye
Prepared by: Reviewed by: Approved by:
Kushal Gupta
Issue No.: Date:
Rev No.: Nil Rev. Date: Nil
DA6210-Computer Graphics Lab Clause: Nil Page: 7
Manual
ellipse((3*X/4),(Y/4+60),0,360,50,25); //Mouth
setfillstyle(SOLID_FILL,WHITE);
floodfill((3*X/4)-50,(Y/4)-50,YELLOW);//Eye Color
floodfill((3*X/4)+50,(Y/4)-50,YELLOW);//Eye Color
setfillstyle(SLASH_FILL,MAGENTA);
floodfill((3*X/4),(Y/4+60),YELLOW);//Mouth Color
//Quadrant 2 Smiley
setcolor(YELLOW);
circle(X/4,Y/4,X/6); //Main Circle
line(X/4,(Y/4)-10,X/4,(Y/4)+10); //Nose
circle((X/4)-50,(Y/4)-50,10); //Eye
circle((X/4)+50,(Y/4)-50,10); //Eye
arc(X/4,Y/4,232,307,60);//Mouth
ellipse((X/4),(Y/4),215,325,46,80); //Mouth
setfillstyle(XHATCH_FILL,WHITE);
floodfill((X/4)-50,(Y/4)-50,YELLOW);//Eye Color
floodfill((X/4)+50,(Y/4)-50,YELLOW);//Eye Color
setfillstyle(HATCH_FILL,CYAN);
floodfill((X/4),(Y/4+60),YELLOW);//Mouth Color
//Quadrant 3 Smiley
setcolor(YELLOW);
circle(X/4,3*(Y/4),X/6); //Main Circle
line(X/4,3*(Y/4)-10,X/4,3*(Y/4)+10); //Nose
circle((X/4)-50,3*(Y/4)-50,10); //Eye
circle((X/4)+50,3*(Y/4)-50,10); //Eye
line((X/4)-40,3*(Y/4)+40,(X/4)+40,3*(Y/4)+40);//Mouth
ellipse((X/4)+20,3*(Y/4)+40,180,360,20,30);//Mouth
setfillstyle(WIDE_DOT_FILL,WHITE);
floodfill((X/4)-50,3*(Y/4)-50,YELLOW);//Eye Color
floodfill((X/4)+50,3*(Y/4)-50,YELLOW);//Eye Color
setfillstyle(INTERLEAVE_FILL,GREEN);
floodfill((X/4)+20,3*(Y/4)+45,YELLOW);//Mouth Color
//Quadrant 4 Smiley
Prepared by: Reviewed by: Approved by:
Kushal Gupta
Issue No.: Date:
Rev No.: Nil Rev. Date: Nil
DA6210-Computer Graphics Lab Clause: Nil Page: 8
Manual
setcolor(YELLOW);
circle(3*(X/4),3*(Y/4),X/6); //Main Circle
line(3*(X/4),3*(Y/4)-10,3*(X/4),3*(Y/4)+10); //Nose
circle(3*(X/4)-50,3*(Y/4)-50,10); //Eye
circle(3*(X/4)+50,3*(Y/4)-50,10); //Eye
circle(3*(X/4),3*(Y/4)+50,20);//Mouth
setfillstyle(LINE_FILL,WHITE);
floodfill(3*(X/4)-50,3*(Y/4)-50,YELLOW);//Eye Color
floodfill(3*(X/4)+50,3*(Y/4)-50,YELLOW);//Eye Color
setfillstyle(LTSLASH_FILL,LIGHTBLUE);
floodfill(3*(X/4),3*(Y/4)+50,YELLOW);//Mouth Color
getch();
closegraph();
return 0;
}
Output
Prepared by: Reviewed by: Approved by:
Kushal Gupta
Issue No.: Date:
Rev No.: Nil Rev. Date: Nil
DA6210-Computer Graphics Lab Clause: Nil Page: 9
Manual
Practical 2
Objective
Construction of a line using the equation y=mx+c.
Source Code
#include<conio.h>
#include<stdio.h>
#include<graphics.h>
int max(int a,int b){if(a>b){return a;}else{return b;}}
int min(int a,int b){if(a<b){return a;}else{return b;}}
int main()
{
int x1,y1,x2,y2,x,y,i;
float m,c;
int gdriver=DETECT,gmode;
initgraph(&gdriver,&gmode,"");
printf("Program to construct a line using equation y=mx+c.\n");
printf("---------------------------------------------------------\n");
printf("Enter the coordinates of the the line.\n");
printf("X1 : ");
scanf("%d",&x1);
printf("Y1 : ");
scanf("%d",&y1);
printf("X2 : ");
scanf("%d",&x2);
printf("Y2 : ");
scanf("%d",&y2);
m=(float)(y2-y1)/(x2-x1);
c=(float)y1-(m*x1);
if(m>1)
{
for(i=min(y1,y2);i<=max(y1,y2);i++ )
Prepared by: Reviewed by: Approved by:
Kushal Gupta
Issue No.: Date:
Rev No.: Nil Rev. Date: Nil
DA6210-Computer Graphics Lab Clause: Nil Page: 10
Manual
{
x=(int)((i-c)/m) ;
putpixel(x,i,YELLOW);
}
}
else
{
for(i=min(x1,x2);i<=max(x1,x2);i++)
{
y=(int)((m*i)+c);
putpixel(i,y,CYAN);
}
}
line(x1+10,y1,x2+10,y2);
getch();
closegraph();
return 0;
}
Output
Prepared by: Reviewed by: Approved by:
Kushal Gupta
Issue No.: Date:
Rev No.: Nil Rev. Date: Nil
DA6210-Computer Graphics Lab Clause: Nil Page: 11
Manual
Prepared by: Reviewed by: Approved by:
Kushal Gupta
Issue No.: Date:
Rev No.: Nil Rev. Date: Nil
DA6210-Computer Graphics Lab Clause: Nil Page: 12
Manual
Practical 3
Objective
Construction of lines using Digital Differential Analyzer algorithm.
Source Code
#include<conio.h>
#include<stdio.h>
#include<graphics.h>
void lineDDA(float x1,float y1,float x2,float y2)
{
float i,m,dx,dy;
dx=x2-x1; dy=y2-y1;
m=dy/dx;
if(dx<0)
{
i=y1;
y1=y2;
y2=i;
i=x1;
x1=x2;x2=i;
dy=dy;
dx=-dx;
}
if(dx>0.0)
{
if(m<=1 && m>=-1)
{
for(i=x1;i<=x2;i++)
{
putpixel(i,(int)y1,RED);
y1=y1+m;
}
}
else
Prepared by: Reviewed by: Approved by:
Kushal Gupta
Issue No.: Date:
Rev No.: Nil Rev. Date: Nil
DA6210-Computer Graphics Lab Clause: Nil Page: 13
Manual
{
if(m<-1)
{
x1=x2;
i=y1;
y1=y2;
y2=i;
}
for(i=y1;i<=y2;i++)
{
putpixel((int)x1,i,BLUE);
x1=x1+(1/m);
}
}
}
}
int main()
{
int x1,y1,x2,y2,i;
int gdriver=DETECT,gmode;
initgraph(&gdriver,&gmode,"");
printf("Program to construct lines using digital differential analyzer algorithm.\n");
printf("---------------------------------------------------------\n");
for(i=0;i<4;i++)
{
printf("Enter the coordinates of a line \n");
scanf("%d %d %d %d",&x1,&y1,&x2,&y2);
line(x1+5,y1,x2+5,y2);
lineDDA(x1,y1,x2,y2);
}
getch();
closegraph();
return 0;
}
Prepared by: Reviewed by: Approved by:
Kushal Gupta
Issue No.: Date:
Rev No.: Nil Rev. Date: Nil
DA6210-Computer Graphics Lab Clause: Nil Page: 14
Manual
Output
Prepared by: Reviewed by: Approved by:
Kushal Gupta
Issue No.: Date:
Rev No.: Nil Rev. Date: Nil
DA6210-Computer Graphics Lab Clause: Nil Page: 15
Manual
Practical 4
Objective
Construction of a line using Bresenham’s algorithm.
Source Code
#include<graphics.h>
#include<conio.h>
#include<stdio.h>
void Draw_Line(int X1,int Y1,int X2,int Y2)
{
int X,Y,D,DX,DY,DE,DNE;
X=X1;
Y=Y1;
DY=Y2-Y1;
DX=X2-X1;
D=2*DY-DX;
DE=2*DY;
DNE=2*(DY-DX);
putpixel(X,Y,WHITE);
while(X<X2)
{
if(D<=0)
{
D=D+DE;
}
else
{
D=D+DNE;
Y=Y+1;
}
X=X+1;
putpixel(X,Y,WHITE);
}
}
Prepared by: Reviewed by: Approved by:
Kushal Gupta
Issue No.: Date:
Rev No.: Nil Rev. Date: Nil
DA6210-Computer Graphics Lab Clause: Nil Page: 16
Manual
int main()
{
int gdriver=DETECT,gmode,X,Y,X1,Y1,X2,Y2;
initgraph(&gdriver,&gmode,"");
printf("Program to construct a line using Bresenham's line drawing algorithm.\n");
printf("---------------------------------------------------------\n");
printf("Enter X1 : ");
scanf("%d",&X1);
printf("Enter Y1 : ");
scanf("%d",&Y1);
printf("Enter X2 : ");
scanf("%d",&X2);
printf("Enter Y2 : ");
scanf("%d",&Y2);
Draw_Line(X1,Y1,X2,Y2);
getch();
closegraph();
return 0;
}
Prepared by: Reviewed by: Approved by:
Kushal Gupta
Issue No.: Date:
Rev No.: Nil Rev. Date: Nil
DA6210-Computer Graphics Lab Clause: Nil Page: 17
Manual
Output
Prepared by: Reviewed by: Approved by:
Kushal Gupta
Issue No.: Date:
Rev No.: Nil Rev. Date: Nil
DA6210-Computer Graphics Lab Clause: Nil Page: 18
Manual
Practical 5
Objective
To Construct a circle using Bresenham's algorithm (Version-2).
Source Code
#include<conio.h>
#include<stdio.h>
#include<graphics.h>
void dcircle(int x,int y,int h,int k)
{
putpixel(x+h,y+k,1); putpixel (y+h,x+k,5); putpixel(-x+h,y+k,2); putpixel (-y+h,x+k,6);
putpixel(x+h,-y+k,3); putpixel (y+h,-x+k,7); putpixel(-x+h,-y+k,4); putpixel (-y+h,-x+k,8);
}
void main()
{ int d,de,dse,h,k,x,y,r,gdriver=DETECT,gmode;
initgraph(&gdriver,&gmode,"");
printf("Enter the radius\n"); scanf("%d",&r);
printf("Enter the co ordinates of center\n"); scanf("%d%d",&h,&k);
x=0; y=r; d=1-r; de=3; dse=5-(2*r);
dcircle(x,y,h,k);
while(y>x)
{ if(d<0)
{d=d+de;
de=de+2;
dse=dse+2;}
else
{d=d+dse;
de=de+2;
dse=dse+4;
y--;
}
x++;
dcircle(x,y,h,k);
}
settextstyle(3,0,3);
outtextxy(100,300,"Program Executed By: Gaurav Soni");
getch();
closegraph();
}
Prepared by: Reviewed by: Approved by:
Kushal Gupta
Issue No.: Date:
Rev No.: Nil Rev. Date: Nil
DA6210-Computer Graphics Lab Clause: Nil Page: 19
Manual
Output
Prepared by: Reviewed by: Approved by:
Kushal Gupta
Issue No.: Date:
Rev No.: Nil Rev. Date: Nil
DA6210-Computer Graphics Lab Clause: Nil Page: 20
Manual
Practical 6
Objective
To draw an image of a hut and perform scaling and translation on it.
Source Code
//#include<conio.h>
#include<graphics.h>
#include<stdio.h>
#include<math.h>
int main()
{
int i,tx,ty;
float sx,sy;
// Defining Hut Coordinates
int h[11][4]={
{100,50,50,200},
{100,50,150,200},
{100,50,250,50},
{250,50,250,200},
{50,200,150,200},
{50,200,50,400},
{150,200,250,200},
{150,200,150,400},
{250,200,250,400},
{50,400,150,400},
{150,400,250,400}
};
int gdriver=DETECT,gmode;
initgraph(&gdriver,&gmode,"");
printf("Program to implement translation and scaling on an image.\n\n");
printf("Enter Translation Factor (X & Y)\t: "); scanf("%d%d",&tx,&ty);
printf("Enter Scaling Factor (X & Y)\t\t: "); scanf("%f%f",&sx,&sy);
settextstyle(3,0,3);
outtextxy(100,420,"Program executed by Gaurav Soni");
Prepared by: Reviewed by: Approved by:
Kushal Gupta
Issue No.: Date:
Rev No.: Nil Rev. Date: Nil
DA6210-Computer Graphics Lab Clause: Nil Page: 21
Manual
for(i=0;i<11;i++)
{
setcolor(WHITE); // Drawing Hut
line(h[i][0],h[i][1],h[i][2],h[i][3]);
setcolor(YELLOW); // Hut Translation
line(h[i][0]+tx,h[i][1]+ty,h[i][2]+tx,h[i][3]+ty);
setcolor(GREEN); // Hut Scaling
line(h[i][0]*sx+75,h[i][1]*sy+240,h[i][2]*sx+75,h[i][3]*sy+240);
}
getch();
closegraph();
}
Output
Prepared by: Reviewed by: Approved by:
Kushal Gupta
Issue No.: Date:
Rev No.: Nil Rev. Date: Nil
DA6210-Computer Graphics Lab Clause: Nil Page: 22
Manual
Practical 7
Objective
To perform rotation of an image.
Source Code
#include<conio.h>
#include<graphics.h>
#include<stdio.h>
#include<math.h>
int main()
{
int i;float r;
// Defining Hut Coordinates
int h[4][13]={ {100,100,150,350,400,130,200,130,170,200,200,150,100},
{100,100,50 ,25 ,75 ,200,200,150,150,100,100,50 ,200},
{100,150,350,400,400,130,400,170,170,200,400,200,200},
{200, 50,25 ,75 ,175,150,175,150,200,200,75 ,100,200} };
int gdriver=DETECT,gmode;
initgraph(&gdriver,&gmode,"");
printf("Program to rotate an image.\n\n");
printf("Enter Rotation Angle : "); scanf("%f",&r);
settextstyle(3,0,3);
outtextxy(250,400,"Program executed by : Gaurav Soni");
r=(3.14159265/180.0)*r;
for(i=0;i<13;i++)
{
setcolor(WHITE); // Drawing Hut
line(h[0][i],h[1][i],h[2][i],h[3][i]);
// Hut Rotation
h[0][i]=h[0][i]* cos (r) -h[1][i]*sin(r) ;
h[1][i]=h[0][i]*sin(r) +h[1][i]*cos(r) ;
h[2][i]=h[2][i]* cos(r) -h[3][i]*sin(r) ;
h[3][i]=h[2][i]*sin(r) +h[3][i]*cos(r) ;
Prepared by: Reviewed by: Approved by:
Kushal Gupta
Issue No.: Date:
Rev No.: Nil Rev. Date: Nil
DA6210-Computer Graphics Lab Clause: Nil Page: 23
Manual
setcolor(YELLOW); // Drawing Rotated Hut
line(h[0][i],h[1][i],h[2][i],h[3][i]);
}
getch();
closegraph();
}
Output
Prepared by: Reviewed by: Approved by:
Kushal Gupta
Issue No.: Date:
Rev No.: Nil Rev. Date: Nil
DA6210-Computer Graphics Lab Clause: Nil Page: 24
Manual
Practical 8
Objective
To implement Boundary Filling algorithm.
Source Code
#include<conio.h>
#include<stdio.h>
#include<graphics.h>
void bound(int x,int y,int n,int o)
{
if(getpixel(x,y)!=o&&getpixel(x,y)!=n)
{
putpixel(x,y,n);
for(int i=0;i<1500;i++) // Providing Delay
{
for(int j=0;j<1500;j++)
{
}
}
bound(x+1,y,n,o); bound(x,y+1,n,o);
bound(x-1,y,n,o); bound(x,y-1,n,o);
}
}
int main()
{
int x,y,gd=DETECT,gm;
initgraph(&gd,&gm,"");
printf("Program to implement Boundary Filling algorithm.\n\n");
printf("Enter seed point [Range (150,150) -> (200,200)]\t: ");
settextstyle(3,0,3);
outtextxy(100,200,"Program executed by : Gaurav Soni");
scanf("%d %d",&x,&y);
Prepared by: Reviewed by: Approved by:
Kushal Gupta
Issue No.: Date:
Rev No.: Nil Rev. Date: Nil
DA6210-Computer Graphics Lab Clause: Nil Page: 25
Manual
setbkcolor(8);
setcolor(14); rectangle(150,150,200,200);
setcolor(3);line(155,155,155,175);
setcolor(2); line(175,155,175,175);
bound(x,y,1,14);
getch();
closegraph();
}
Output
Prepared by: Reviewed by: Approved by:
Kushal Gupta
Issue No.: Date:
Rev No.: Nil Rev. Date: Nil
DA6210-Computer Graphics Lab Clause: Nil Page: 26
Manual
Practical 9
Objective
To implement the Flood Fill algorithm.
Source Code
#include<stdio.h>
#include<conio.h>
#include<graphics.h>
void flood(int x,int y,int old)
{
if(getpixel(x,y)==old)
{
putpixel(x,y,YELLOW);
delay(9);
flood(x+1,y,old);
flood(x,y+1,old);
flood(x-1,y,old);
flood(x,y-1,old);
}
}
int main()
{
int x,y,gd=DETECT,gmode;
initgraph(&gd,&gmode,"");
printf("Program to implement Flood Filling algorithm.\n\n");
printf("Enter seed point [Range (100,100) -> (160,160)]\t: ");
scanf("%d %d",&x,&y);
settextstyle(3,0,3);
outtextxy(100,200,"Program executed by : Gaurav Soni");
setbkcolor(8);
setcolor(RED); rectangle(100,100,160,160);
setcolor(GREEN); line(115,115,115,155);
setcolor(BLUE); line(155,115,155,155);
setcolor(YELLOW); flood(x,y,0);
Prepared by: Reviewed by: Approved by:
Kushal Gupta
Issue No.: Date:
Rev No.: Nil Rev. Date: Nil
DA6210-Computer Graphics Lab Clause: Nil Page: 27
Manual
getch();
closegraph();
}
Output
Prepared by: Reviewed by: Approved by:
Kushal Gupta
Issue No.: Date:
Rev No.: Nil Rev. Date: Nil
DA6210-Computer Graphics Lab Manual Clause: Nil Page: 28
Practical 10
Objective
Line Clipping: Cohen Sutherland Algorithm.
Source Code
#include<stdio.h>
#include<conio.h>
#include<graphics.h>
void main()
int gd=DETECT, gm;
float i,xmax,ymax,xmin,ymin,x1,y1,x2,y2,m;
float start[4],end[4],code[4];
clrscr();
initgraph(&gd,&gm,"");
printf("Please enter the bottom left co-ordinate of viewport: ");
scanf("%f %f",&xmin,&ymin);
printf("Please enter the top right co-ordinate of viewport: ");
scanf("%f %f",&xmax,&ymax);
printf("Please enter the co-ordinates for starting point of line: ");
scanf("%f %f",&x1,&y1);
printf("Please enter the co-ordinates for ending point of line: ");
scanf("%f %f",&x2,&y2);
for(i=0;i <4;i++)
Prepared by: Reviewed by: Approved by:
Kushal Gupta
Issue No.: Date:
Rev No.: Nil Rev. Date: Nil
DA6210-Computer Graphics Lab Manual Clause: Nil Page: 29
start[i]=0;
end[i]=0;
m=(y2-y1)/(x2-x1);
if(x1 <xmin) start[0]=1;
if(x1 >xmax) start[1]=1;
if(y1 >ymax) start[2]=1;
if(y1 <ymin) start[3]=1;
if(x2 <xmin) end[0]=1;
if(x2 >xmax) end[1]=1;
if(y2 >ymax) end[2]=1;
if(y2 <ymin) end[3]=1;
for(i=0;i <4;i++)
code[i]=start[i]&&end[i];
if((code[0]==0)&&(code[1]==0)&&(code[2]==0)&&(code[3]==0))
if((start[0]==0)&&(start[1]==0)&&(start[2]==0)&&(start[3]==0)&&(end[0]==0)&&(end[1]==0)&&(end
[2]==0)&&(end[3]==0))
cleardevice();
printf("\n\t\tThe line is totally visible\n\t\tand not a clipping candidate");
Prepared by: Reviewed by: Approved by:
Kushal Gupta
Issue No.: Date:
Rev No.: Nil Rev. Date: Nil
DA6210-Computer Graphics Lab Manual Clause: Nil Page: 30
rectangle(xmin,ymin,xmax,ymax);
line(x1,y1,x2,y2);
getch();
else
cleardevice();
printf("\n\t\tLine is partially visible");
rectangle(xmin,ymin,xmax,ymax);
line(x1,y1,x2,y2);
getch();
if((start[2]==0)&&(start[3]==1))
x1=x1+(ymin-y1)/m;
y1=ymin;
if((end[2]==0)&&(end[3]==1))
x2=x2+(ymin-y2)/m;
y2=ymin;
if((start[2]==1)&&(start[3]==0))
x1=x1+(ymax-y1)/m;
Prepared by: Reviewed by: Approved by:
Kushal Gupta
Issue No.: Date:
Rev No.: Nil Rev. Date: Nil
DA6210-Computer Graphics Lab Manual Clause: Nil Page: 31
y1=ymax;
if((end[2]==1)&&(end[3]==0))
x2=x2+(ymax-y2)/m;
y2=ymax;
if((start[1]==0)&&(start[0]==1))
y1=y1+m*(xmin-x1);
x1=xmin;
if((end[1]==0)&&(end[0]==1))
y2=y2+m*(xmin-x2);
x2=xmin;
if((start[1]==1)&&(start[0]==0))
y1=y1+m*(xmax-x1);
x1=xmax;
if((end[1]==1)&&(end[0]==0))
y2=y2+m*(xmax-x2);
Prepared by: Reviewed by: Approved by:
Kushal Gupta
Issue No.: Date:
Rev No.: Nil Rev. Date: Nil
DA6210-Computer Graphics Lab Manual Clause: Nil Page: 32
x2=xmax;
clrscr();
cleardevice();
printf("\n\t\tAfter clippling:");
rectangle(xmin,ymin,xmax,ymax);
line(x1,y1,x2,y2);
getch();
else
clrscr();
cleardevice();
printf("\nLine is invisible");
rectangle(xmin,ymin,xmax,ymax);
getch();
closegraph();
Prepared by: Reviewed by: Approved by:
Kushal Gupta
Issue No.: Date:
Rev No.: Nil Rev. Date: Nil
DA6210-Computer Graphics Lab Manual Clause: Nil Page: 33
Output
Prepared by: Reviewed by: Approved by:
Kushal Gupta