0% found this document useful (0 votes)
55 views

Computer Graphics

This document contains the computer graphics lab manual for Allenhouse Institute of Technology for the academic year 201-1. It includes 14 experiments related to computer graphics topics like drawing lines and circles using different algorithms, implementing transformations like translation, scaling, and rotation on basic shapes, and creating more complex shapes. The experiments are listed with their aims and requirements. The document provides the code for each experiment along with sample outputs. It is signed by the faculty in-charge and head of the computer science and engineering department.

Uploaded by

Rahul Singh
Copyright
© © All Rights Reserved
Available Formats
Download as DOC, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
55 views

Computer Graphics

This document contains the computer graphics lab manual for Allenhouse Institute of Technology for the academic year 201-1. It includes 14 experiments related to computer graphics topics like drawing lines and circles using different algorithms, implementing transformations like translation, scaling, and rotation on basic shapes, and creating more complex shapes. The experiments are listed with their aims and requirements. The document provides the code for each experiment along with sample outputs. It is signed by the faculty in-charge and head of the computer science and engineering department.

Uploaded by

Rahul Singh
Copyright
© © All Rights Reserved
Available Formats
Download as DOC, PDF, TXT or read online on Scribd
You are on page 1/ 36

ALLENHOUSE INSTITUTE OF TECHNOLOGY

Department
Of
Computer Science & Engineering
Computer Graphics Lab Manual
For the Academic Year 201 -1
(In accordance with UPTU syllabus)

Faculty In-charge

Head of Department

Table of Content
S. No

List of Experiment

1.

Wap To Draw A Line Using Dda Algorithm.

2.

4.

Wap To Draw A Line Using Bresenhams


Algorithm.
Wap To Draw A Circle Using Bresenhams Circle
Algorithm.
Wap For Boundry Fill Algorithm.

5.

Wap For Flood Fil Algorithm.

6.

Wap To Draw Circle Using Mid Point


Algorithm.

7.

Wap Showing Translation Of A Triangle.

8.

Wap Showing Scaling Of A Triangle.

9.

Wap Showing Translation Of A Circle.

10.

Wap Showing Scaling Of Circle.

11.

Wap Showing Rotation Of A Line.

12.

Wap Showing Rotation Of A Triangle.

13.

Wap To Make A Hut,Kite And A Fish.

14.

Wap To Animating A Fish.

3.

Page No. Date

Signature

EXPERIMENT-1
AIM:- Write a Program to draw a line using DDA Algorithm.
Requirements

Computer with PENTIUM IV/ DUAL CORE PROCESSORS

TURBO C

PROGRAM:#include<stdio.h>
#include<conio.h>
#include<graphics.h>
void main()
{
int gdriver=DETECT,gmode;
initgraph(&gdriver,&gmode,"c:\tc\bgi");
int x,y,x1,x2,y1,y2,dx,dy,step,m, xinc,yinc;
x=x1;
y=y1;
printf("Enter Ist end point of line");
scanf("%d%d",&x1,&y1);
printf("Enter 2nd end point of ine");
scanf("%d%d",&x2,&y2);
dx=x2-x1; dy=y2-y1;
m=(y2-y1)\(x2-x1);
if(abs(dx)>abs(dy))
step=abs(dx);
else
step=abs(dy);
xinc=dx/float(steps);
yinc=dy/float(steps);
putpixel(x,y,2);

for(k=0;k<=step;k++)
{
x=x+xinc;
y=y+yinc;
putpixel(x,y,2);
}
getch();
closegraph();
}

OUTPUT:
Enter 1st end point of line: 100,200 Enter
2nd end point of line: 200,300

EXPERIMENT-2
AIM:- Write a Program to draw a line using Bresenhams Algorithm
Requirements

Computer with PENTIUM IV/ DUAL CORE PROCESSORS

TURBO C

PROGRAM:#include<stdio.h>
#include<conio.h>
#include<graphics.h> void main()
{
int x,y,x1,x2,y1,y2,dx,dy,p;
int gdriver=DETECT,gmode;
initgraph(&gdriver,&gmode,"c:\tc\bgi");
printf("Enter Ist end point of line");
scanf("%d%d",&x1,&y1);
printf("Enter 2nd end point of line");
scanf("%d%d",&x2,&y2);
x=x1;
y=y1;
putpixel(x,y,4);
dx=x2-x1;
dy=y2-y1;
p=2*dy-dx;
while(x<x2)
{
if(p<0)
{
x+=1;
p+=2*dy;
}
else
{

x+=1;
y+=1;
p+=2*dy-2*dx;
}
putpixel(x,y,4);
}
getch();
closegraph();
}

Output:Enter 1st end point of line: 100,200


Enter 2nd end point of line: 200,300

EXPERIMENT-3
AIM:- Write A Program For Bresenham Circle Algorithm
Requirements

Computer with PENTIUM IV/ DUAL CORE PROCESSORS

TURBO C

PROGRAM:#include<stdio.h>
#include<conio.h>
#include<graphics.h>
#include<math.h>
void main()
{
int gd=DETECT,gm;
int r,x,y,p,xc=320,yc=420;
initgraph(&gd,&gm,"C://tc//bgi");
cleardevice();
printf("enter radius");
scanf("%d",&r);
x=0;
y=r;
putpixel(xc+x,yc-y,1);
p=3-(2*r);
for(x=0;x<=y;x++)
{
if(p<0)
{
y=y;
p=(p+4*x)+6;
}

else
{
y=y-1;
p=p+((4*(x-y)+10));
}
putpixel(xc+x,yc-y,1);
putpixel(xc-x,yc-y,2);
putpixel(xc+x,yc+y,3);
putpixel(xc-x,yc+y,4);
putpixel(xc+y,yc-x,5);
putpixel(xc-y,yc-x,6);
putpixel(xc+y,yc+x,7);
putpixel(xc-y,yc+x,8);
}
getch();
closegraph();
}

OUTPUT:Ente r radius 100

EXPERIMENT-4
AIM:- Write A Program For Boundary Fill Algorithm
Requirements

Computer with PENTIUM IV/ DUAL CORE PROCESSORS

TURBO C

PROGRAM:#include<stdio.h>
#include<conio.h>
#include<graphics.h>
#include<dos.h>
void boundaryFill(int x,int y)
{
int interiorColor;
interiorColor=getpixel(x,y);
if((interiorColor !=WHITE)&&(interiorColor !=RED))
{
putpixel(x,y,RED);
boundaryFill(x+1,y);
boundaryFill(x,y+1);
boundaryFill(x-1,y);
boundaryFill(x,y-1);
}
delay(1);
}
void main()
{
void boundaryFill(int,int); int x,y,n,i;
int gd=DETECT,gm;

clrscr();
initgraph(&gd,&gm,"C:\\TC\\BGI");
line(50,50,100,50);
line(100,50,100,100);
line(100,100,50,100);
line(50,100,50,50);
x=78,y=78;
boundaryFill(x,y);
getch();
closegraph();
}

OUTPUT:-

EXPERIMENT-5
AIM:- Write A Program For Flood Fill Algorithm
Requirements

Computer with PENTIUM IV/ DUAL CORE PROCESSORS

TURBO C

PROGRAM:#include<stdio.h>
#include<conio.h>
#include<graphics.h>
#include<math.h>
void floodFill(int x,int y,int ncolor,int ocolor)
{
if(getpixel(x,y)==ocolor)
{
putpixel(x,y,ncolor);
floodFill(x+1,y,ncolor,ocolor);
floodFill(x-1,y,ncolor,ocolor);
floodFill(x,y+1,ncolor,ocolor);
floodFill(x,y-1,ncolor,ocolor);
}
delay(1);
}
void main()
{
int x,y,ncolor=BLUE,ocolor=WHITE;
int midx,midy;
int gd=DETECT,gm;
initgraph(&gd,&gm,"C://tc//bgi");

cleardevice();
printf("enter seed point:");
scanf("%d%d",&x,&y);
midx=getmaxx()/2;
midy=getmaxy()/2;
setbkcolor(RED);
setpalette(ocolor,GREEN);
fillellipse(midx,midy,50,25);
fillellipse(midx+100,midy+100,50,25);
floodFill(x,y,ncolor,ocolor);
getch();
closegraph();
}

OUTPUT:Enter seed point: 320 240

EXPERIMENT-6
AIM:- Write A Program For Mid-Point Circle Algorithm
Requirements

Computer with PENTIUM IV/ DUAL CORE PROCESSORS

TURBO C

PROGRAM:#include<stdio.h>
#include<conio.h>
#include<graphics.h>
#include<math.h>
void main()
{
int gd=DETECT,gm;
int r,x,y,p,xc=320,yc=420;
initgraph(&gd,&gm,"C://tc//bgi");
cleardevice();
printf("enter radius");
scanf("%d",&r);
x=0;
y=r;
putpixel(xc+x,yc-y,1);
p=1-r;
for(x=0;x<=y;x++)
{
if(p<0)
{
y=y;
p=(p+2*x)+3;
}
else

{
y=y-1;
p=p+((2*(x-y)+5));
}
putpixel(xc+x,yc-y,1);
putpixel(xc-x,yc-y,2);
putpixel(xc+x,yc+y,3);
putpixel(xc-x,yc+y,4);
putpixel(xc+y,yc-x,5);
putpixel(xc-y,yc-x,6);
putpixel(xc+y,yc+x,7);
putpixel(xc-y,yc+x,8);
}
getch();
closegraph();
}

OUTPUT:enter radius 200

EXPERIMENT-7
AIM:- Write A Program For Translation Of A Triangle
Requirements

Computer with PENTIUM IV/ DUAL CORE PROCESSORS

TURBO C

PROGRAM:#include<stdio.h>
#include<conio.h>
#include<graphics.h>
#include<math.h>
void main()
{
int x1,y1,x2,y2,x3,y3,tx,ty;
int gd=DETECT,gm;
initgraph(&gd,&gm,"C://tc//bgi");
printf("enter x1 and y1");
scanf("%d%d",&x1,&y1);
printf("enter x2 and y2");
scanf("%d%d",&x2,&y2);
printf("enter x3 and y3");
scanf("%d%d",&x3,&y3);
line(x1,y1,x2,y2);
line(x2,y2,x3,y3);
line(x1,y1,x3,y3);
printf("enter translation vector along x-axis");
scanf("%d",&tx);
printf("enter translation vector along y-axis");
scanf("%d",&ty);
line(x1+tx,y1+ty,x2+tx,y2+ty);

line(x2+tx,y2+ty,x3+tx,y3+ty);
line(x1+tx,y1+ty,x3+tx,y3+ty);
getch();
closegraph();
}

OUTPUT:enter x1 and y1

100
250
enter x2and y2
200
250
enter x3 and y3
150
150
enter translation vector along x-axis 100
enter translation vector along y-axis 100

EXPERIMENT-8
AIM:- Write A Program For Scaling of a Triangle
Requirements

Computer with PENTIUM IV/ DUAL CORE PROCESSORS

TURBO C

PROGRAM:#include<stdio.h>
#include<conio.h>
#include<graphics.h>
void main()
{
int c,x1,y1,x2,y2,x3,y3,sx,sy;
int gd=DETECT,gm;
initgraph(&gd,&gm," ");
printf("Enter coord of 1st pixel");
scanf("%d%d",&x1,&y1);
printf("Enter coordinate of 2nd pixel");
scanf("%d%d",&x2,&y2);
printf("Enter coordinate of 3rd pixel");
scanf("%d%d",&x3,&y3);
line(x1,y1,x2,y2);
line(x1,y1,x3,y3);
line(x3,y3,x2,y2);
printf("Enter the scaling vector along x-axis");
scanf("%d",&sx);
printf("Enter the scaling vector along y-axis");
scanf("%d",&sy);
i:
printf("Enter your choice \n Increment \n Decrement");

scanf("%d",&c);
switch(c)
{
case 1: line(x1*sx,y1*sy,x2*sx,y2*sy);
line(x1*sx,y1*sy,x3*sx,y3*sy);
line(x3*sx,y3*sy,x2*sx,y2*sy);
case 2: line(x1/sx,y1/sy,x2/sx,y2/sy);
line(x1/sx,y1/sy,x3/sx,y3/sy);
line(x3/sx,y3/sy,x2/sx,y2/sy);
break;
default:
printf("You have entered a wrong choice"); goto i;
}
getch();
closegraph();
}

OUTPUT:st
Enter coordinates of 1 pixel: 100 100
Enter coordinates of 2

nd

pixel: 50 150

Enter coordinates of third pixel: 150 150


Enter scaling vector(Sx,Sy):
Enter your choice

1. Increment
2. Decrement

EXPERIMENT-9
AIM:- Write A Program For Translation Of A Circle
PROGRAM:#include<graphics.h>
#include<stdio.h>
#include<conio.h>
void main()
{
int x,y,r,tx,ty ;
int gd=DETECT,gm;
initgraph(&gd,&gm,"c:\tc");
printf("enter center coordinates of circle");
scanf("%d%d",&x,&y);
printf("enter radius of circle");
scanf("%d",&r);
circle(x,y,r);
printf("enter translation vector along x-axis");
scanf ("%d",&tx);
printf("enter translation vector along y-axis");
scanf ("%d",&ty);
circle(x+tx,y+ty,r);
getch();
closegraph();
}

OUTPUT:Enter center coordinates of circle


300
300
Enter the radius of circle 30
Enter translation vector along x-axis 100
Enter translation vector along y-axis 100

EXPERIMENT-10
AIM:- Write a Program for scaling in a circle
PROGRAM:#include<stdio.h>
#include<conio.h>
#include<graphics.h>
void main()
{
int s,r,c,x,y;
int gd=DETECT,gm;
initgraph(&gd,&gm,"c:\tc");
printf("Enter centre coordinates of circle: ");
scanf("%d%d",&x,&y);
printf("Enter radius");
scanf("%d",&r);
circle(x,y,r);
printf("Enter the scaling vector: ");
scanf("%d",&s);
i:
printf("Enter your choice \n 1.Increment \n2. Decrement");
scanf("%d",&c);
switch(c)
{
case 1: circle(x,y,r*s);
break;
case 2: circle(x,y,r/s);
break;
default:
printf("You have entered a wrong choice"); goto i;
}
getch();
closegraph();
}

OUTPUT:Enter coordinates of circle: 300 300


Enter radius of circle: 100
Enter scaling vectors: 2
Enter your choice

1. Increment
2. Decrement

EXPERIMENT-11
AIM:- Program to implement rotation of line
PROGRAM:#include<stdio.h>
#include<conio.h>
#include<graphics.h>
#include<math.h>
void main()
{
int gdriver=DETECT,gmode;
float theta;
int x1,y1,x2,y2,x11,y11,x22,y22;
initgraph(&gdriver,&gmode,"c://tc//bgi");
printf("enter the coordinate of 1st point");
scanf("%d%d",&x1,&y1);
printf("enter the coordinate of 2nd point");
scanf("%d%d",&x2,&y2);
line(x1,y1,x2,y2); getch();
printf("enter the rotation angle");
scanf("%f",&theta);
theta=theta*3.14/180;
x11=(x1*cos(theta))-(y1*sin(theta));
y11=(x1*sin(theta))+(y1*cos(theta));
x22=(x2*cos(theta))-(y2*sin(theta));
y22=(x2*sin(theta))+(y2*cos (theta));
line(x11,y11,x22,y22);
getch();
closegraph();
}

OUTPUT:Enter the first co-ordinate


100
100
Enter the second co-ordinate
200
200
Enter the rotation angle 45

EXPERIMENT-12
AIM:- Program to implement rotation of triangle
PROGRAM:#include<stdio.h>
#include<conio.h>
#include<graphics.h>
#include<math.h>
void main()
{
int gd driver=DETECT,gmode;
float theta;
float x1,y1,x2,y2,x3,y3,x11,y11,x22,y22,x33,x44;
initgraph(&gdriver,&gmode,"c://tc//bgi");
printf("enter the 1st coordinate point of a triangle");
scanf("%d%d",&x1,&y1);
printf("enter the 2nd coordinate point of triangle");
scanf("%d%d",&x2,&y2);
printf("enter the 3rd coordinate point of triangle");
scanf("%d%d",&x3,&y3);
line(x1,y1,x2,y2);
line(x1,y1,x3,y3);
line(x3,y3,x2,y2); getch();
printf("enter the rotation angle");
scanf("%f",&theta);
theta=theta*3.14/180;
x11=(x1*cos(theta))-(y1*sin(theta));
y11=(x1*sin(theta))+(y1*cos(theta));
x22=(x2*cos(theta))-(y2*sin(theta));
y22=(x2*sin(theta))+(y2*cos (theta));
x33=(x3*cos(theta))-(y3*sin(theta));
y33=(x3*sin(theta))+(y3*cos (theta));

line(x11,y11,x22,y22);
line(x11,y11,x33,y33);
line(x33,y33,x22,y22);
getch();
closegraph();
}

OUTPUT:Enter the 1

st

co-ordinate point of triangle

50 100
Enter the 2

nd

co-ordinate point of triangle

100 150
Enter the 3

rd

co-ordinate point of triangle

200 150
Enter the rotation angle 45

EXPERIMENT-13
AIM:- Write a program to make a kite
PROGRAM:#include<stdio.h>
#include<conio.h>
#include<graphics.h>
void main()
{
int a,b,gd =DETECT,gm,i;
clrscr();
init graph(&gd,&gm,"c:\tc\bgi ");
line(100,100,50,180);
line(100,100,150,180);
line(50,180,100,250);
line(150,180,100,250);
line(100,100,100,250);
line(50,180,150,180);
line(100,250,70,300);
line(100,250,130,300);
line(70,300,130,300);
line(100,300,120,320);
line(120,320,80,340);
line(80,340,120,360);
line(120,360,80,380);
set color(4);
getch();
closegraph();
}

OUTPUT:-

EXPERIMENT-14
AIM:- Write a program to make a fish
PROGRAM:#include<stdio.h>
#include<conio.h>
#include<graphics.h>
void main()
{
int gd =DETECT,gm;
clrscr();
init graph(&gd,&gm,"c:\tc\bgi");
set color(6);
ellipse(200,200,0,360,50,30);
line(250,200,280,170);
line(280,170,280,230);
line(280,230,250,200);
circle(160,190,3);
getch();
closegraph();
}

OUTPUT:-

EXPERIMENT-15
AIM:- Write a program to make a hut
PROGRAM:#include<stdio.h>
#include<conio.h>
#include<graphics.h>
void main()
{
int gd =DETECT,gm;
clrscr();
init graph(&gd,&gm,"c:\tc\bgi");
set color(6); rectangle(50,180,150,300);
rectangle(150,180,320,300);
rectangle(80,250,120,300);
line(100,100,50,180,);
line(100,100,300,100);
line(100,100,300,100);
line(300,100,320,180);
getch();
closegraph();
}

OUTPUT:-

EXPERIMENT-16
AIM:- Animation Of Fish Program
PROGRAM:#include<stdio.h>
#include<conio.h>
#include<graphics.h>
void main()
{
int gd=DETECT,gm,i;
initgraph(&gd,&gm,"c:/tc/bgi");
clrscr();
setcolor(2);
for(i=500;i>=0;i--)
{
clearviewport();
ellipse(200+i,200,0,360,50,30);
line(250+i,200,280+i,170);
line(280+i,170,280+i,230);
line(280+i,230,250+i,200);
circle(160+i,190,3);
}
setcolor(1);
getch();
closegraph();
}

OUTPUT:-

You might also like