SlideShare a Scribd company logo
Shri Rawatpura Sarkar Institute of Technology-II, New Raipur
CSE/6th
/CG Lab/PreparedbyToranLal Sahu
CHHATTISGARH SWAMI VIVEKANAND TECHNICAL UNIVERSITY,
BHILAI (C.G.)
Semester – VI Branch – Computer Science And
Engineering
Subject: Computer Graphics Lab Code – 322622 (22)
Total Practical Periods – 40
Total Marks in end semester examination – 40
List of Experiments:
1. Write a program to draw the line using DDA algorithm.
2. Write a program to draw the line using Bresenham’s algorithm.
3. Write a program to draw circle using Bresenham’s algorithm.
4. Write a program to draw circle using mid-point algorithm.
5. Write a program to demonstrate draw ellipse using midpoint algorithm.
6. Write a program Rotation of Triangle.
7. Write a program Translation of Line.
8. Write a program to perform scaling of line.
9. Write a program shearing of Rectangle.
10. Write a program to implement boundary –fill algorithm.
11. Write a program to implement flood –fill algorithm.
12. Write a program to implement Bezier curve using four control points.
13. Write a program to implement CohenSutherland line clipping algorithm.
14. Write a program to implement Liang Barsky line clipping algorithm.
15. Write a program to implement face of a cartoon.
Book Reference:-
1. Computer Graphics & Multimedia- G. S. Baluja -Dhanpat Rai & CO.
2. Computer Graphics Donald Hearn & M Pauline Baker-Pearson Pvt.Ltd
Shri Rawatpura Sarkar Institute of Technology-II, New Raipur
CSE/6th
/CG Lab/PreparedbyToranLal Sahu
EXPERIMENT-1
1. Write a program to draw the line using DDA algorithm.
Digital Differential Analyzer (DDA) is used for linear interpolation of variables over an
interval between start and end point of a line. Simplest implementation the DDA
algorithm interpolates values in interval [(xstart, ystart), (xend, yend)] by computing for
each xi the equations xi = xi−1+1, yi = yi−1 + Δy/Δx,
Where Δx = xend − xstart and Δy = yend − ystart.
CODING:
#include <graphics.h>/* include the necessary header files*/
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
void draw(int xa,int ya,int xb,int yb);
void main()
{
int xa,ya,xb,yb;
clrscr();
printf("Line DDA algorithm");
printf("n Enter the value of xa, ya:");
scanf("%d%d",&xa,&ya);
printf("n Enter the value of xb, yb:");
scanf("%d%d",&xb,&yb);
draw(xa,ya,xb,yb);
}
void draw(int xa,int ya,int xb,int yb)
{
int xin,yin,x,y,dx,dy,steps,k; /* request auto detection */
int gdriver=DETECT,gmode,errorcode; /* initialize graphics and local variables */
initgraph(&gdriver,&gmode, "c:tcbgi") /* read result of initialization */
errorcode=graphresult(); /* an error occurred */
if (errorcode!=grOk)
{
printf("Graphics error: %sn", grapherrormsg(errorcode));
printf("Press any key to halt:");
getch();
exit(1);
}
dx=xb-xa;
dy=yb-ya;
if(abs(dx)>abs(dy)) /* if the condition is satisfied */
{ /* calculate the value of the condition variable*/
steps=abs(dx);
}
else
{
steps=abs(dy);
}
Shri Rawatpura Sarkar Institute of Technology-II, New Raipur
CSE/6th
/CG Lab/PreparedbyToranLal Sahu
xin=dx/steps;
yin=dy/steps;
x=xa;
y=ya;
putpixel(x,y,1); /* draw the first pixel for the line*/
for(k=1;k<=steps;k++) /* for each value of the condition variable, */
{
x=x+xin; /* calculate the values of (x,y) and draw the pixel*/
y=y+yin;
putpixel(x,y,1);
} /* clean up */
getch();
closegraph();
}
Shri Rawatpura Sarkar Institute of Technology-II, New Raipur
CSE/6th
/CG Lab/PreparedbyToranLal Sahu
EXPERIMENT-2
2. Write a program to draw the line using Bresenham’s algorithm.
The Bresenham line algorithm is an algorithm which determines which points in an n-
dimensional raster should be plotted in order to form a close approximation to a straight
line between two given points. The endpoints of the line are the pixels at (x0, y0) and (x1,
y1), where the first coordinate of the pair is the column and the second is the row.
CODING:
#include <graphics.h>/* include the necessary header files*/
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
void draw(int xa, int ya, int xb, int yb);
void main()
{
int xa, ya, xb, yb;
clrscr();
printf("Bresenhnams algorithm"); /* get the coordinates of the line*/
printf("n Enter the value of xa, ya:");
scanf("%d%d",&xa,&ya);
printf("n Enter the value of xb, yb:");
scanf("%d%d",&xb,&yb);
draw(xa,ya,xb,yb);
}
void draw(int xa, int ya, int xb, int yb)
{
int x,y,dx,dy,xend,p; /* request auto detection */
int gdriver=DETECT,gmode,errorcode; /* initialize graphics and local variables */
initgraph(&gdriver,&gmode,"c:tcbgi"); /* read result of initialization */
errorcode=graphresult(); /* an error occurred */
if(errorcode!=grOk)
{
printf("Graphics error: %sn", grapherrormsg(errorcode));
printf("Press any key to halt:");
getch();
exit(1);
}
dx=xb-xa;
dy=yb-ya;
p=2*dy-dx; /* calculate the value of the condition variable*/
if(xa>xb) /* depending on the position of the coordinates*/
{
x=xb; /* assign the values for (x,y)*/
y=yb;
xend=xa;
}
Shri Rawatpura Sarkar Institute of Technology-II, New Raipur
CSE/6th
/CG Lab/PreparedbyToranLal Sahu
else if(xb>xa)
{
x=xa;
y=ya;
xend=xb;
}
putpixel(x,y,1); /* draw the pixel on the screen*/
while(x<xend) /* depending on the control condition draw the pixels*/
{
x=x+1;
if(p<0)
{
p=p+2*dy;
}
else
{
y=y+1;
p=p+2*dy;
}
putpixel(x,y,1);
} /* clean up */
getch();
closegraph();
}
Shri Rawatpura Sarkar Institute of Technology-II, New Raipur
CSE/6th
/CG Lab/PreparedbyToranLal Sahu
EXPERIMENT-3
3. Write a program to draw circle using mid-point algorithm.
The MidPoint Circle Algorithm is an algorithm used to determine the points needed for
drawing a circle. The algorithm is a variant of Bresenham's line algorithm, and is thus
sometimes known as Bresenham's circle algorithm. Which starts accordingly with the
circle equation x2 + y2 = r2. And with the center of the circle is located at (0, 0)
CODING:
#include<stdio.h>/* include the necessary header files*/
#include<conio.h>
#include<math.h>
#include<graphics.h>
main()
{
int gd=DETECT,gin;
int xcenter,ycenter,radius;
int p,x,y,twox,twoy; /*request auto detect*/
initgraph(&gd,&gin,"C:tcbgi");
x=0;
printf("nEnter the radius value:"); /* get the value of the radius and center values*/
scanf("%d",&radius);
printf("Enter the center values:");
scanf("%d %d",&xcenter,&ycenter);
plotpoints(xcenter,ycenter,x,y); /* call the plotpoints function*/
y=radius;
p=1-radius;
twox=2*x;
twoy=2*y;
printf("nptxtyt2xt2yn");
printf("n%dt%dt%dt%dt%dn",p,x,y,twox,twoy);
while(x<y) /* in the conditional loop compute the value of the x and y values*/
{
if(p<0)
x=x+1;
else
{
x=x+1;
y=y-1;
}
if(p<0)
p=p+2*x+1;
else
p=p+2*(x-y)+1;
twox=2*x;
twoy=2*y;
printf("n%dt%dt%dt%dt%dn",p,x,y,twox,twoy);
plotpoints(xcenter,ycenter,x,y);
Shri Rawatpura Sarkar Institute of Technology-II, New Raipur
CSE/6th
/CG Lab/PreparedbyToranLal Sahu
}
getch();
return 0;
}
int plotpoints(int xcenter, int ycenter,int x,int y) /* plot the points of the circle as per
the procedure*/
{
putpixel(xcenter+x,ycenter+y,1);
putpixel(xcenter-x,ycenter+y,1);
putpixel(xcenter+x,ycenter-y,1);
putpixel(xcenter-x,ycenter-y,1);
putpixel(xcenter+y,ycenter+x,1);
putpixel(xcenter-y,ycenter+x,1);
putpixel(xcenter+y,ycenter-x,1);
putpixel(xcenter-y,ycenter-x,1);
}
Shri Rawatpura Sarkar Institute of Technology-II, New Raipur
CSE/6th
/CG Lab/PreparedbyToranLal Sahu
EXPERIMENT-4
4. Write a program to draw ellipse using mid-point algorithm.
The Midpoint Ellipse Algorithm is a method for drawing ellipses in computer graphics
this method is modified from Bresenham’s which starts accordingly with the ellipse
equation b2x2 + a2y2 – a2b2 = 0 where a is the horizontal radius and b is the vertical
radius
CODING:
#include<stdio.h>/* include the necessary header files*/
#include<conio.h>
#include<graphics.h>
include<math.h>
#include<stdlib.h>
void plotpoints(int,int,int,int);
void main()
{
int gd=DETECT,gm;
int xcenter,ycenter,rx,ry;
int p,x,y,px,py,rx1,ry1,rx2,ry2;
initgraph(&gd,&gm,"C:TCBGI"); /* request auto detect*/
printf("n Enter the radius :"); /* get the radius and the center values*/
scanf("%d %d",&rx,&ry);
printf("n Enter the xcenter and ycenter values :");
scanf("%d %d",&xcenter,&ycenter);
ry1=ry*ry;
rx1=rx*rx;
ry2=2*ry1;
rx2=2*rx1;
/* Region 1 */
x=0;
y=ry;
plotpoints(xcenter,ycenter,x,y); /* for the first region calculate the condition
parameter*/
p=(ry1-rx1*ry+(0.25*rx1));
px=0;
py=rx2*y;
printf("nxtytptpxtpyn");
printf("n%dt%dt%dt%dt%d",x,y,p,px,py);
while(px<py) /* if this condition is true, compute values of x and y*/
{
x=x+1;
px=px+ry2;
if(p>=0)
{
y=y-1;
py=py-rx2;
p=p+ry1+px-py;
Shri Rawatpura Sarkar Institute of Technology-II, New Raipur
CSE/6th
/CG Lab/PreparedbyToranLal Sahu
}
else
p=p+ry1+px;
plotpoints(xcenter,ycenter,x,y); /* call the plotpoints function*/
printf("n%dt%dt%dt%dt%d",x,y,p,px,py);
}
/* Region 2 */
printf("n%dt%dt%dt%dt%d",x,y,p,px,py);
printf("nnRegion 2n");
printf("nxtytptpxtpyn"); /* for region 2 recalculate the condition variables*/
p=(ry1*(x+0.5)*(x+0.5)+rx1*(y-1)*(y-1)-rx1*ry1);
while(y>0)
{
y=y-1;
py=py-rx2;
if(p<=0)
{
x=x+1;
px=px+ry2;
}
if(p>0)
p=p+rx1-py;
else
p=p+rx1-py+px;
plotpoints(xcenter,ycenter,x,y); /* draw the pixels for region 2*/
printf("n%dt%dt%dt%dt%d",x,y,p,px,py);
}
getch();
closegraph();
}
void plotpoints(int xcenter,int ycenter,int x,int y) /* plot the points of the circle as per
the procedure*/
{
putpixel(xcenter+x,ycenter+y,6);
putpixel(xcenter-x,ycenter+y,6);
putpixel(xcenter+x,ycenter-y,6);
putpixel(xcenter-x,ycenter-y,6);
}
Shri Rawatpura Sarkar Institute of Technology-II, New Raipur
CSE/6th
/CG Lab/PreparedbyToranLal Sahu
EXPERIMENT-5
5. Write a program Rotation of Triangle.
A transformation is any operation on a point in space (x, y) that maps the point's
coordinates into a new set of coordinates (x1, y1).The Two Dimensional transformations
has five operations such as Translation, Rotation, Reflection, Scaling and Shearing.
CODING:
#include<graphics.h>
#include<stdlib.h>
#include<stdio.h>
#include<conio.h>
int x1,x2,x3,y1,y2,y3,t,tx,sx,sy,shx,shy,ch;
float rx1,rx2,rx3,ry1,ry2,ry3;
float ang,theta;
int main(void)
{
int gdriver = DETECT, gmode, errorcode;
initgraph(&gdriver, &gmode,"C:TCBGI"); /* request for auto detection*/
errorcode = graphresult();
if(errorcode != grOk) /* if error occours*/
{
printf("Graphics error: %sn", grapherrormsg(errorcode));
printf("Press any key to halt:");
getch();
exit(1);
}
else
{
do{
printf("n1.Translationn2.Reflectionn3.Rotationn4.Scalingn5.Shearingn");
printf("nEnter Your choice"); /* get the choice from the user*/
scanf("%d",&ch);
switch(ch)
{
printf("n Enter all coordinates values :");
scanf("%d %d %d %d %d %d",&x1,&y1,&x2,&y2,&x3,&y3);
printf("n Before Rotation "); /* get the original coordinates*/
line(x1,y1,x2,y2);
line(rx2,ry2,rx3,ry3);
line(rx3,ry3,rx1,ry1);
}
getch();
closegraph(); /* close the graph*/
return 0;
}
Shri Rawatpura Sarkar Institute of Technology-II, New Raipur
CSE/6th
/CG Lab/PreparedbyToranLal Sahu
EXPERIMENT-6
6.Write a program to implement boundary –fill algorithm
include<graphics.h>
#include<dos.h>
void fill_right(int x,int y);
void fill_left(int x,int y);
void main()
{
int gd=DETECT,gm,x,y,n,i;
clrscr();
initgraph(&gd,&gm,"c:turboc3bgi");
printf("*** Boundary Fill algorithm ***");
line (50,50,200,50);
line (200,50,200,300);
line (200,300,50,300);
line (50,300,50,50);
x=100; y=100;
fill_right(x,y);
fill_left(x-1,y);
getch();
}
void fill_right(int x,int y)
{
{
if((getpixel(x,y) != WHITE)&&(getpixel(x,y) != RED)
{
putpixel(x,y,RED);
Shri Rawatpura Sarkar Institute of Technology-II, New Raipur
CSE/6th
/CG Lab/PreparedbyToranLal Sahu
fill_right(++x,y); x=x-1;
fill_right(x,y-1);
fill_right(x,y+1);
}
delay(1);
}
void fill_left(int x,int y)
{
if((getpixel(x,y) != WHITE)&&(getpixel(x,y) != RED))
{
putpixel(x,y,RED);
fill_left(--x,y); x=x+1;
fill_left(x,y-1);
fill_left(x,y+1);
}
delay(1);
}
Shri Rawatpura Sarkar Institute of Technology-II, New Raipur
CSE/6th
/CG Lab/PreparedbyToranLal Sahu
EXPERIMENT-7
7. Write a program to implement boundary –fill algorithm.
#include<stdio.h>
#include<conio.h>
#include<graphics.h>
void boundfill(int xc,int yc,int r,int b)
{
int cur;
cur=getpixel(xc,yc);
if(cur!=b && cur!=r)
{
putpixel(xc,yc,r);
delay(1);
boundfill(xc+1,yc,r,b);
boundfill(xc-1,yc,r,b);
boundfill(xc,yc+1,r,b);
boundfill(xc,yc-1,r,b);
}
}
void main()
{
int gd=DETECT,gm;
initgraph(&gd,&gm,"..bgi");
rectangle(100,100,300,300);
boundfill(105,105,4,WHITE);
getch();
Shri Rawatpura Sarkar Institute of Technology-II, New Raipur
CSE/6th
/CG Lab/PreparedbyToranLal Sahu
closegraph();
}
getch();
}
Shri Rawatpura Sarkar Institute of Technology-II, New Raipur
CSE/6th
/CG Lab/PreparedbyToranLal Sahu
EXPERIMENT-8
8. Write a program to implement Bezier curve using four control points.
#include <stdio.h>
#include <stdlib.h>
#include <graphics.h>
#include <math.h>
void bezier (int x[4], int y[4])
{
int gd = DETECT, gm; int i;
double t;
initgraph (&gd, &gm, "..bgi");
for (t = 0.0; t < 1.0; t += 0.0005)
{
double xt = pow (1-t, 3) * x[0] + 3 * t * pow (1-t, 2) * x[1] + 3 * pow (t, 2) * (1-t) * x[2]
+ pow (t, 3) * x[3];
double yt = pow (1-t, 3) * y[0] + 3 * t * pow (1-t, 2) * y[1] + 3 * pow (t, 2) * (1-t)
* y[2] + pow (t, 3) * y[3];
putpixel (xt, yt, WHITE);
}
for (i=0; i<4; i++)
putpixel (x[i], y[i], YELLOW);
getch();
closegraph();
return;
}
void main()
{
int x[4], y[4]; int i;
printf ("Enter the x- and y-coordinates of the four control points.n");
Shri Rawatpura Sarkar Institute of Technology-II, New Raipur
CSE/6th
/CG Lab/PreparedbyToranLal Sahu
for (i=0; i<4; i++) scanf ("%d%d", &x[i], &y[i]); bezier (x, y);
}
closegraph();
}
getch();
}
Shri Rawatpura Sarkar Institute of Technology-II, New Raipur
CSE/6th
/CG Lab/PreparedbyToranLal Sahu
EXPERIMENT-9
9. Write a program to implement CohenSutherland line clipping algorithm.
#include<stdio.h>
#include<conio.h>
#include<graphics.h>
#include<math.h>
void clip(float,float,float);
int i,j=0,n;
int rx1,rx2,ry1,ry2;
float x1[8],y1[8];
void main()
{
int gd=DETECT,gm;
int i,n;
float x[8],y[8],m;
clrscr();
initgraph(&gd,&gm,"");
printf("coordinates for rectangle : ");
scanf("%d%d%d%d",&rx1,&ry1,&rx2,&ry2);
printf("no. of sides for polygon : ");
scanf("%d",&n);
printf("coordinates : ");
for(i=0;i<n;i++)
{
scanf("%f%f",&x[i],&y[i]);
}
Shri Rawatpura Sarkar Institute of Technology-II, New Raipur
CSE/6th
/CG Lab/PreparedbyToranLal Sahu
cleardevice();
outtextxy(10,10,"Before clipping");
outtextxy(10,470,"Press any key....");
rectangle(rx1,ry1,rx2,ry2);
for(i=0;i<n-1;i++)
line(x[i],y[i],x[i+1],y[i+1]);
line(x[i],y[i],x[0],y[0]);
getch();
cleardevice();
for(i=0;i<n-1;i++)
{
m=(y[i+1]-y[i])/(x[i+1]-x[i]);
clip(x[i],y[i],m);
}
clip(x[0],y[0],m);
outtextxy(10,10,"After clipping");
outtextxy(10,470,"Press any key....");
rectangle(rx1,ry1,rx2,ry2);
for(i=0;i<j-1;i++)
line(x1[i],y1[i],x1[i+1],y1[i+1]);
getch();
}
void clip(float e,float f,float m)
{
while(e<rx1 e>rx2 f<ry1 f>ry2)
Shri Rawatpura Sarkar Institute of Technology-II, New Raipur
CSE/6th
/CG Lab/PreparedbyToranLal Sahu
{
if(e<rx1)
{
f+=m*(rx1-e);
e=rx1;
}
else if(e>rx2)
{
f+=m*(rx2-e);
e=rx1;
}
if(f<ry1)
{
e+=(ry1-f)/m;
f=ry1;
}
else if(f>ry2)
{
e+=(ry2-f)/m;
f=ry2;
}
x1[j]=e;
y1[j]=f;
j++;
}
}
Shri Rawatpura Sarkar Institute of Technology-II, New Raipur
CSE/6th
/CG Lab/PreparedbyToranLal Sahu
EXPERIMENT-10
10. Write a program to implement Liang Barsky line clipping algorithm.
#include<stdio.h>
#include<conio.h>
#include<graphics.h>
#include<math.h>
Void main
{
float x1,y1,x2,y2,xmin,xmax,ymin,ymax,dx,dy;
float p[4],q[4],r[4];
float max,min,u1,u2;
float xi,xii,yi,yii;
int gd,gm,i;
gd=DETECT;
initgraph(&gd,&gm,"c:tcbgi");
clrscr();
printf("n enter the line co-ordinates");
printf("n enter 1st x=");
scanf("%f",&x1);
printf("t 1st y=");
scanf("%f",&y1);
printf("n enter 2nd x=");
scanf("%f",&x2);
printf("t 2nd y=");
scanf("%f",&y2);
printf("n enter window boundry");
printf("n xmin=");
scanf("%f",&xmin);
Shri Rawatpura Sarkar Institute of Technology-II, New Raipur
CSE/6th
/CG Lab/PreparedbyToranLal Sahu
printf("n ymin=");
scanf("%f",&ymin);
printf("n xmax=");
scanf("%f",&xmax);
printf("n ymax=");
scanf("%f",&ymax)
dx=x2-x1;
dy=y2-y1;
cleardevice();
line(x1,y1,x2,y2);
rectangle(xmin,ymin,xmax,ymax);
p[0]=-dx;
q[0]=x1-xmin;
p[1]=dx;
q[1]=xmax-x1;
p[2]=-dy;
p[2]=-dy;
q[2]=y1-ymin;
p[3]=dy;
q[3]=ymax-y1;
for(i=0;i<4;i++)
{
if(p[i]==0 && q[i]<0)
{
printf("Line is outside the boundry,it is not a clipping candidaten");
getch();
exit(0);
}
Shri Rawatpura Sarkar Institute of Technology-II, New Raipur
CSE/6th
/CG Lab/PreparedbyToranLal Sahu
}
for(i=0;i<4;i++)
{
r[i]=q[i]/p[i];
printf("n r[%d]=%f",i,r[i]);
}
max=0;min=1;
for(i=0;i<4;i++)
if(p[i]<0)
{
if(r[i]>max)
max=r[i];
}
else
{
if(r[i]<min)
min=r[i];
}
u1=max;
u2=min;
printf("n u1=%f",u1);
printf("n u2=%f",u2);
if(u1>u2)
{
printf("n line is completely outside");
getch();
exit(0);
Shri Rawatpura Sarkar Institute of Technology-II, New Raipur
CSE/6th
/CG Lab/PreparedbyToranLal Sahu
}
xi=x1+(u1*dx);
yi=y1+(u1*dy);
xii=x1+(u2*dx);
yii=y1+(u2*dy);
rectangle (xmin, ymin, xmax, ymax);
sector(5);
line(xi,yi,xii,yii);
getch();
closegraph();
}
Shri Rawatpura Sarkar Institute of Technology-II, New Raipur
CSE/6th
/CG Lab/PreparedbyToranLal Sahu
EXPERIMENT-11
11. Write a program to implement face of a cartoon.
# include <graphics.h>
# include<conio.h>
#include <stdlib.h>
main()
{
int gd= DETECT, gm,area, temp1, temp2, left=25, top=75;
void*p;
initgraph(&gd, &gm,”C:TCBGI”);
Setcolor(YELLOW);
Circle(50, 100,25);
Sefillstyle(SOLID__FILL,YELLOW);
floodfill(50,100, YELLOW);
Setcolor(BLACK);
Sefillstyle(SOLID__FILL,BLACK);
fillellipse(44, 85, 2, 6);
fillellipse(56, 85, 2, 6);
ellipse(50, 100, 205, 335, 20,9);
ellipse(50, 100, 205, 335, 20,10);
ellipse(50, 100, 205, 335, 20,11);
area= imagesize(left, top, left+ 50, top+50);
p= malloc(area);
setcolor(WHITE);
settextstyle(SANS_SERIF_FONT, HORIZ_DIR,2);
outtextxy(155, 451, “Smiling Face Animation”);
setcolor(BLUE);
rectangle(0,0 , 639,449);
while(!kbhit())
{
Temp1= 1+ randam(588);
{
Temp1= 1+ randam(380);
{
Getimage(left, top, left+ 50, top+ 50);
putimage(left, top, p, XOR_PUT);
putimage(temp1, temp2, p, XOR_PUT);
delay(100);
left= temp1;
top = temp2;
Shri Rawatpura Sarkar Institute of Technology-II, New Raipur
CSE/6th
/CG Lab/PreparedbyToranLal Sahu
}
getch();
closegraph();
return();
}

More Related Content

What's hot (20)

PPTX
Dda algorithm
Mani Kanth
 
PPTX
Overview of the graphics system
Kamal Acharya
 
PPTX
Anti aliasing Computer Graphics
University of Potsdam
 
PPT
fractals
Yogesh jatin Gupta
 
PPT
Two dimensional viewing
Mohd Arif
 
DOCX
Computer graphics lab assignment
Abdullah Al Shiam
 
PPTX
Hashing
Amar Jukuntla
 
PDF
Computer graphics lab report with code in cpp
Alamgir Hossain
 
PPTX
Character Attribute in computer graphics
HariTharshiniBscIT1
 
PDF
4. THREE DIMENSIONAL DISPLAY METHODS
SanthiNivas
 
PPTX
sutherland- Hodgeman Polygon clipping
Arvind Kumar
 
PPT
Character generation
Ankit Garg
 
PPTX
Raster Scan display
Lokesh Singrol
 
PPTX
Spline representations
Nikhil krishnan
 
PPT
UML Architecture and Views
Kumar
 
PPT
Circle drawing algo.
Mohd Arif
 
PPTX
Data types
Zahid Hussain
 
PPT
computer graphics
Megabi Mamo
 
PDF
Computer graphics curves and surfaces (1)
RohitK71
 
Dda algorithm
Mani Kanth
 
Overview of the graphics system
Kamal Acharya
 
Anti aliasing Computer Graphics
University of Potsdam
 
Two dimensional viewing
Mohd Arif
 
Computer graphics lab assignment
Abdullah Al Shiam
 
Hashing
Amar Jukuntla
 
Computer graphics lab report with code in cpp
Alamgir Hossain
 
Character Attribute in computer graphics
HariTharshiniBscIT1
 
4. THREE DIMENSIONAL DISPLAY METHODS
SanthiNivas
 
sutherland- Hodgeman Polygon clipping
Arvind Kumar
 
Character generation
Ankit Garg
 
Raster Scan display
Lokesh Singrol
 
Spline representations
Nikhil krishnan
 
UML Architecture and Views
Kumar
 
Circle drawing algo.
Mohd Arif
 
Data types
Zahid Hussain
 
computer graphics
Megabi Mamo
 
Computer graphics curves and surfaces (1)
RohitK71
 

Viewers also liked (20)

DOCX
Computer Graphics Practical
Neha Sharma
 
DOCX
Computer Graphics Lab File C Programs
Kandarp Tiwari
 
DOC
SE Computer, Programming Laboratory(210251) University of Pune
Bhavesh Shah
 
PDF
Computer graphics lab manual
Ankit Kumar
 
PDF
Computer Graphics Programes
Abhishek Sharma
 
PDF
Basics of Computer graphics lab
Priya Goyal
 
DOCX
Computer graphics file
aman1001
 
DOCX
syed mohd naqi zaidi
Syed Mohd Naqi Zaidi
 
PDF
Oracle Notes
Abhishek Sharma
 
PDF
Company Profile - Compressed
Solly Moeng - APR
 
DOCX
Lab manual asp.net
Vivek Kumar Sinha
 
PDF
Unit Testing on Android - Droidcon Berlin 2015
Buşra Deniz, CSM
 
DOC
Cn lab manual
Vivek Kumar Sinha
 
PPTX
Teks ekposisi
BERBUDIANTO
 
DOCX
Computer applications in civil engineering lab
Vivek Kumar Sinha
 
DOCX
Mech nacp lab
Vivek Kumar Sinha
 
DOC
Computer hardware and simulation lab manual
Vivek Kumar Sinha
 
DOC
Softwareenggineering lab manual
Vivek Kumar Sinha
 
DOCX
Oops lab manual
Vivek Kumar Sinha
 
DOCX
Graphics User Interface Lab Manual
Vivek Kumar Sinha
 
Computer Graphics Practical
Neha Sharma
 
Computer Graphics Lab File C Programs
Kandarp Tiwari
 
SE Computer, Programming Laboratory(210251) University of Pune
Bhavesh Shah
 
Computer graphics lab manual
Ankit Kumar
 
Computer Graphics Programes
Abhishek Sharma
 
Basics of Computer graphics lab
Priya Goyal
 
Computer graphics file
aman1001
 
syed mohd naqi zaidi
Syed Mohd Naqi Zaidi
 
Oracle Notes
Abhishek Sharma
 
Company Profile - Compressed
Solly Moeng - APR
 
Lab manual asp.net
Vivek Kumar Sinha
 
Unit Testing on Android - Droidcon Berlin 2015
Buşra Deniz, CSM
 
Cn lab manual
Vivek Kumar Sinha
 
Teks ekposisi
BERBUDIANTO
 
Computer applications in civil engineering lab
Vivek Kumar Sinha
 
Mech nacp lab
Vivek Kumar Sinha
 
Computer hardware and simulation lab manual
Vivek Kumar Sinha
 
Softwareenggineering lab manual
Vivek Kumar Sinha
 
Oops lab manual
Vivek Kumar Sinha
 
Graphics User Interface Lab Manual
Vivek Kumar Sinha
 
Ad

Similar to Graphics practical lab manual (20)

DOCX
Computer graphics
AAlha PaiKra
 
DOC
Computer graphics
Prianka Padmanaban
 
DOC
Computer graphics
Prianka Padmanaban
 
DOCX
Computer graphics File for Engineers
varun arora
 
PDF
CD504 CGM_Lab Manual_004e08d3838702ed11fc6d03cc82f7be.pdf
RajJain516913
 
DOCX
Cg my own programs
Amit Kapoor
 
DOCX
C graphics programs file
shubham kanojia
 
PPT
Cs580
Chellamuthu K
 
PDF
Computer graphics lab manual
Uma mohan
 
DOC
Computer Aided Manufacturing Design
V Tripathi
 
PPT
1 linedrawing
SakshiNailwal
 
PPTX
Chapter 3 Output Primitives
PrathimaBaliga
 
PPTX
Output primitives in Computer Graphics
Kamal Acharya
 
PDF
Graphics 2 Output Primitives Slide.pdf
IsabelleAlemu
 
PDF
Notes_456_Lines_Drawing2_4 (1).pdf
PranavRawat14
 
DOCX
Computer graphics
amitsarda3
 
PPTX
Chapter 3 - Part 1 [Autosaved].pptx
Kokebe2
 
PPT
02 - raster topic in computer graphics.ppt
rishittiwari00426
 
Computer graphics
AAlha PaiKra
 
Computer graphics
Prianka Padmanaban
 
Computer graphics
Prianka Padmanaban
 
Computer graphics File for Engineers
varun arora
 
CD504 CGM_Lab Manual_004e08d3838702ed11fc6d03cc82f7be.pdf
RajJain516913
 
Cg my own programs
Amit Kapoor
 
C graphics programs file
shubham kanojia
 
Computer graphics lab manual
Uma mohan
 
Computer Aided Manufacturing Design
V Tripathi
 
1 linedrawing
SakshiNailwal
 
Chapter 3 Output Primitives
PrathimaBaliga
 
Output primitives in Computer Graphics
Kamal Acharya
 
Graphics 2 Output Primitives Slide.pdf
IsabelleAlemu
 
Notes_456_Lines_Drawing2_4 (1).pdf
PranavRawat14
 
Computer graphics
amitsarda3
 
Chapter 3 - Part 1 [Autosaved].pptx
Kokebe2
 
02 - raster topic in computer graphics.ppt
rishittiwari00426
 
Ad

More from Vivek Kumar Sinha (20)

DOCX
Software engg unit 4
Vivek Kumar Sinha
 
DOCX
Software engg unit 3
Vivek Kumar Sinha
 
DOCX
Software engg unit 2
Vivek Kumar Sinha
 
DOCX
Software engg unit 1
Vivek Kumar Sinha
 
DOCX
Data structure
Vivek Kumar Sinha
 
PPTX
Mathematics basics
Vivek Kumar Sinha
 
PDF
E commerce 5_units_notes
Vivek Kumar Sinha
 
DOCX
Subject distribution
Vivek Kumar Sinha
 
DOCX
Revision report final
Vivek Kumar Sinha
 
DOC
Lession plan mis
Vivek Kumar Sinha
 
DOC
Lession plan dmw
Vivek Kumar Sinha
 
DOC
Faculty planning
Vivek Kumar Sinha
 
PPT
Final presentation on computer network
Vivek Kumar Sinha
 
DOCX
Np syllabus summary
Vivek Kumar Sinha
 
PPT
Internet of things
Vivek Kumar Sinha
 
PPT
Induction program 2017
Vivek Kumar Sinha
 
PDF
E magzine et&amp;t
Vivek Kumar Sinha
 
DOC
Mechanical engineering department (1)
Vivek Kumar Sinha
 
Software engg unit 4
Vivek Kumar Sinha
 
Software engg unit 3
Vivek Kumar Sinha
 
Software engg unit 2
Vivek Kumar Sinha
 
Software engg unit 1
Vivek Kumar Sinha
 
Data structure
Vivek Kumar Sinha
 
Mathematics basics
Vivek Kumar Sinha
 
E commerce 5_units_notes
Vivek Kumar Sinha
 
Subject distribution
Vivek Kumar Sinha
 
Revision report final
Vivek Kumar Sinha
 
Lession plan mis
Vivek Kumar Sinha
 
Lession plan dmw
Vivek Kumar Sinha
 
Faculty planning
Vivek Kumar Sinha
 
Final presentation on computer network
Vivek Kumar Sinha
 
Np syllabus summary
Vivek Kumar Sinha
 
Internet of things
Vivek Kumar Sinha
 
Induction program 2017
Vivek Kumar Sinha
 
E magzine et&amp;t
Vivek Kumar Sinha
 
Mechanical engineering department (1)
Vivek Kumar Sinha
 

Recently uploaded (20)

PPT
دراسة حاله لقرية تقع في جنوب غرب السودان
محمد قصص فتوتة
 
PDF
Clustering Algorithms - Kmeans,Min ALgorithm
Sharmila Chidaravalli
 
PDF
Tesia Dobrydnia - An Avid Hiker And Backpacker
Tesia Dobrydnia
 
PDF
NFPA 10 - Estandar para extintores de incendios portatiles (ed.22 ENG).pdf
Oscar Orozco
 
PDF
Module - 4 Machine Learning -22ISE62.pdf
Dr. Shivashankar
 
PPTX
FSE_LLM4SE1_A Tool for In-depth Analysis of Code Execution Reasoning of Large...
cl144
 
PDF
Generative AI & Scientific Research : Catalyst for Innovation, Ethics & Impact
AlqualsaDIResearchGr
 
DOCX
Engineering Geology Field Report to Malekhu .docx
justprashant567
 
PDF
How to Buy Verified CashApp Accounts IN 2025
Buy Verified CashApp Accounts
 
PDF
LLC CM NCP1399 SIMPLIS MODEL MANUAL.PDF
ssuser1be9ce
 
PPTX
Comparison of Flexible and Rigid Pavements in Bangladesh
Arifur Rahman
 
PDF
PROGRAMMING REQUESTS/RESPONSES WITH GREATFREE IN THE CLOUD ENVIRONMENT
samueljackson3773
 
PDF
Python Mini Project: Command-Line Quiz Game for School/College Students
MPREETHI7
 
PPTX
Artificial Intelligence jejeiejj3iriejrjifirirjdjeie
VikingsGaming2
 
PDF
تقرير عن التحليل الديناميكي لتدفق الهواء حول جناح.pdf
محمد قصص فتوتة
 
PDF
Authentication Devices in Fog-mobile Edge Computing Environments through a Wi...
ijujournal
 
PPTX
Unit_I Functional Units, Instruction Sets.pptx
logaprakash9
 
PPTX
Kel.3_A_Review_on_Internet_of_Things_for_Defense_v3.pptx
Endang Saefullah
 
PPTX
Bharatiya Antariksh Hackathon 2025 Idea Submission PPT.pptx
AsadShad4
 
PDF
bs-en-12390-3 testing hardened concrete.pdf
ADVANCEDCONSTRUCTION
 
دراسة حاله لقرية تقع في جنوب غرب السودان
محمد قصص فتوتة
 
Clustering Algorithms - Kmeans,Min ALgorithm
Sharmila Chidaravalli
 
Tesia Dobrydnia - An Avid Hiker And Backpacker
Tesia Dobrydnia
 
NFPA 10 - Estandar para extintores de incendios portatiles (ed.22 ENG).pdf
Oscar Orozco
 
Module - 4 Machine Learning -22ISE62.pdf
Dr. Shivashankar
 
FSE_LLM4SE1_A Tool for In-depth Analysis of Code Execution Reasoning of Large...
cl144
 
Generative AI & Scientific Research : Catalyst for Innovation, Ethics & Impact
AlqualsaDIResearchGr
 
Engineering Geology Field Report to Malekhu .docx
justprashant567
 
How to Buy Verified CashApp Accounts IN 2025
Buy Verified CashApp Accounts
 
LLC CM NCP1399 SIMPLIS MODEL MANUAL.PDF
ssuser1be9ce
 
Comparison of Flexible and Rigid Pavements in Bangladesh
Arifur Rahman
 
PROGRAMMING REQUESTS/RESPONSES WITH GREATFREE IN THE CLOUD ENVIRONMENT
samueljackson3773
 
Python Mini Project: Command-Line Quiz Game for School/College Students
MPREETHI7
 
Artificial Intelligence jejeiejj3iriejrjifirirjdjeie
VikingsGaming2
 
تقرير عن التحليل الديناميكي لتدفق الهواء حول جناح.pdf
محمد قصص فتوتة
 
Authentication Devices in Fog-mobile Edge Computing Environments through a Wi...
ijujournal
 
Unit_I Functional Units, Instruction Sets.pptx
logaprakash9
 
Kel.3_A_Review_on_Internet_of_Things_for_Defense_v3.pptx
Endang Saefullah
 
Bharatiya Antariksh Hackathon 2025 Idea Submission PPT.pptx
AsadShad4
 
bs-en-12390-3 testing hardened concrete.pdf
ADVANCEDCONSTRUCTION
 

Graphics practical lab manual

  • 1. Shri Rawatpura Sarkar Institute of Technology-II, New Raipur CSE/6th /CG Lab/PreparedbyToranLal Sahu CHHATTISGARH SWAMI VIVEKANAND TECHNICAL UNIVERSITY, BHILAI (C.G.) Semester – VI Branch – Computer Science And Engineering Subject: Computer Graphics Lab Code – 322622 (22) Total Practical Periods – 40 Total Marks in end semester examination – 40 List of Experiments: 1. Write a program to draw the line using DDA algorithm. 2. Write a program to draw the line using Bresenham’s algorithm. 3. Write a program to draw circle using Bresenham’s algorithm. 4. Write a program to draw circle using mid-point algorithm. 5. Write a program to demonstrate draw ellipse using midpoint algorithm. 6. Write a program Rotation of Triangle. 7. Write a program Translation of Line. 8. Write a program to perform scaling of line. 9. Write a program shearing of Rectangle. 10. Write a program to implement boundary –fill algorithm. 11. Write a program to implement flood –fill algorithm. 12. Write a program to implement Bezier curve using four control points. 13. Write a program to implement CohenSutherland line clipping algorithm. 14. Write a program to implement Liang Barsky line clipping algorithm. 15. Write a program to implement face of a cartoon. Book Reference:- 1. Computer Graphics & Multimedia- G. S. Baluja -Dhanpat Rai & CO. 2. Computer Graphics Donald Hearn & M Pauline Baker-Pearson Pvt.Ltd
  • 2. Shri Rawatpura Sarkar Institute of Technology-II, New Raipur CSE/6th /CG Lab/PreparedbyToranLal Sahu EXPERIMENT-1 1. Write a program to draw the line using DDA algorithm. Digital Differential Analyzer (DDA) is used for linear interpolation of variables over an interval between start and end point of a line. Simplest implementation the DDA algorithm interpolates values in interval [(xstart, ystart), (xend, yend)] by computing for each xi the equations xi = xi−1+1, yi = yi−1 + Δy/Δx, Where Δx = xend − xstart and Δy = yend − ystart. CODING: #include <graphics.h>/* include the necessary header files*/ #include <stdlib.h> #include <stdio.h> #include <conio.h> void draw(int xa,int ya,int xb,int yb); void main() { int xa,ya,xb,yb; clrscr(); printf("Line DDA algorithm"); printf("n Enter the value of xa, ya:"); scanf("%d%d",&xa,&ya); printf("n Enter the value of xb, yb:"); scanf("%d%d",&xb,&yb); draw(xa,ya,xb,yb); } void draw(int xa,int ya,int xb,int yb) { int xin,yin,x,y,dx,dy,steps,k; /* request auto detection */ int gdriver=DETECT,gmode,errorcode; /* initialize graphics and local variables */ initgraph(&gdriver,&gmode, "c:tcbgi") /* read result of initialization */ errorcode=graphresult(); /* an error occurred */ if (errorcode!=grOk) { printf("Graphics error: %sn", grapherrormsg(errorcode)); printf("Press any key to halt:"); getch(); exit(1); } dx=xb-xa; dy=yb-ya; if(abs(dx)>abs(dy)) /* if the condition is satisfied */ { /* calculate the value of the condition variable*/ steps=abs(dx); } else { steps=abs(dy); }
  • 3. Shri Rawatpura Sarkar Institute of Technology-II, New Raipur CSE/6th /CG Lab/PreparedbyToranLal Sahu xin=dx/steps; yin=dy/steps; x=xa; y=ya; putpixel(x,y,1); /* draw the first pixel for the line*/ for(k=1;k<=steps;k++) /* for each value of the condition variable, */ { x=x+xin; /* calculate the values of (x,y) and draw the pixel*/ y=y+yin; putpixel(x,y,1); } /* clean up */ getch(); closegraph(); }
  • 4. Shri Rawatpura Sarkar Institute of Technology-II, New Raipur CSE/6th /CG Lab/PreparedbyToranLal Sahu EXPERIMENT-2 2. Write a program to draw the line using Bresenham’s algorithm. The Bresenham line algorithm is an algorithm which determines which points in an n- dimensional raster should be plotted in order to form a close approximation to a straight line between two given points. The endpoints of the line are the pixels at (x0, y0) and (x1, y1), where the first coordinate of the pair is the column and the second is the row. CODING: #include <graphics.h>/* include the necessary header files*/ #include <stdlib.h> #include <stdio.h> #include <conio.h> void draw(int xa, int ya, int xb, int yb); void main() { int xa, ya, xb, yb; clrscr(); printf("Bresenhnams algorithm"); /* get the coordinates of the line*/ printf("n Enter the value of xa, ya:"); scanf("%d%d",&xa,&ya); printf("n Enter the value of xb, yb:"); scanf("%d%d",&xb,&yb); draw(xa,ya,xb,yb); } void draw(int xa, int ya, int xb, int yb) { int x,y,dx,dy,xend,p; /* request auto detection */ int gdriver=DETECT,gmode,errorcode; /* initialize graphics and local variables */ initgraph(&gdriver,&gmode,"c:tcbgi"); /* read result of initialization */ errorcode=graphresult(); /* an error occurred */ if(errorcode!=grOk) { printf("Graphics error: %sn", grapherrormsg(errorcode)); printf("Press any key to halt:"); getch(); exit(1); } dx=xb-xa; dy=yb-ya; p=2*dy-dx; /* calculate the value of the condition variable*/ if(xa>xb) /* depending on the position of the coordinates*/ { x=xb; /* assign the values for (x,y)*/ y=yb; xend=xa; }
  • 5. Shri Rawatpura Sarkar Institute of Technology-II, New Raipur CSE/6th /CG Lab/PreparedbyToranLal Sahu else if(xb>xa) { x=xa; y=ya; xend=xb; } putpixel(x,y,1); /* draw the pixel on the screen*/ while(x<xend) /* depending on the control condition draw the pixels*/ { x=x+1; if(p<0) { p=p+2*dy; } else { y=y+1; p=p+2*dy; } putpixel(x,y,1); } /* clean up */ getch(); closegraph(); }
  • 6. Shri Rawatpura Sarkar Institute of Technology-II, New Raipur CSE/6th /CG Lab/PreparedbyToranLal Sahu EXPERIMENT-3 3. Write a program to draw circle using mid-point algorithm. The MidPoint Circle Algorithm is an algorithm used to determine the points needed for drawing a circle. The algorithm is a variant of Bresenham's line algorithm, and is thus sometimes known as Bresenham's circle algorithm. Which starts accordingly with the circle equation x2 + y2 = r2. And with the center of the circle is located at (0, 0) CODING: #include<stdio.h>/* include the necessary header files*/ #include<conio.h> #include<math.h> #include<graphics.h> main() { int gd=DETECT,gin; int xcenter,ycenter,radius; int p,x,y,twox,twoy; /*request auto detect*/ initgraph(&gd,&gin,"C:tcbgi"); x=0; printf("nEnter the radius value:"); /* get the value of the radius and center values*/ scanf("%d",&radius); printf("Enter the center values:"); scanf("%d %d",&xcenter,&ycenter); plotpoints(xcenter,ycenter,x,y); /* call the plotpoints function*/ y=radius; p=1-radius; twox=2*x; twoy=2*y; printf("nptxtyt2xt2yn"); printf("n%dt%dt%dt%dt%dn",p,x,y,twox,twoy); while(x<y) /* in the conditional loop compute the value of the x and y values*/ { if(p<0) x=x+1; else { x=x+1; y=y-1; } if(p<0) p=p+2*x+1; else p=p+2*(x-y)+1; twox=2*x; twoy=2*y; printf("n%dt%dt%dt%dt%dn",p,x,y,twox,twoy); plotpoints(xcenter,ycenter,x,y);
  • 7. Shri Rawatpura Sarkar Institute of Technology-II, New Raipur CSE/6th /CG Lab/PreparedbyToranLal Sahu } getch(); return 0; } int plotpoints(int xcenter, int ycenter,int x,int y) /* plot the points of the circle as per the procedure*/ { putpixel(xcenter+x,ycenter+y,1); putpixel(xcenter-x,ycenter+y,1); putpixel(xcenter+x,ycenter-y,1); putpixel(xcenter-x,ycenter-y,1); putpixel(xcenter+y,ycenter+x,1); putpixel(xcenter-y,ycenter+x,1); putpixel(xcenter+y,ycenter-x,1); putpixel(xcenter-y,ycenter-x,1); }
  • 8. Shri Rawatpura Sarkar Institute of Technology-II, New Raipur CSE/6th /CG Lab/PreparedbyToranLal Sahu EXPERIMENT-4 4. Write a program to draw ellipse using mid-point algorithm. The Midpoint Ellipse Algorithm is a method for drawing ellipses in computer graphics this method is modified from Bresenham’s which starts accordingly with the ellipse equation b2x2 + a2y2 – a2b2 = 0 where a is the horizontal radius and b is the vertical radius CODING: #include<stdio.h>/* include the necessary header files*/ #include<conio.h> #include<graphics.h> include<math.h> #include<stdlib.h> void plotpoints(int,int,int,int); void main() { int gd=DETECT,gm; int xcenter,ycenter,rx,ry; int p,x,y,px,py,rx1,ry1,rx2,ry2; initgraph(&gd,&gm,"C:TCBGI"); /* request auto detect*/ printf("n Enter the radius :"); /* get the radius and the center values*/ scanf("%d %d",&rx,&ry); printf("n Enter the xcenter and ycenter values :"); scanf("%d %d",&xcenter,&ycenter); ry1=ry*ry; rx1=rx*rx; ry2=2*ry1; rx2=2*rx1; /* Region 1 */ x=0; y=ry; plotpoints(xcenter,ycenter,x,y); /* for the first region calculate the condition parameter*/ p=(ry1-rx1*ry+(0.25*rx1)); px=0; py=rx2*y; printf("nxtytptpxtpyn"); printf("n%dt%dt%dt%dt%d",x,y,p,px,py); while(px<py) /* if this condition is true, compute values of x and y*/ { x=x+1; px=px+ry2; if(p>=0) { y=y-1; py=py-rx2; p=p+ry1+px-py;
  • 9. Shri Rawatpura Sarkar Institute of Technology-II, New Raipur CSE/6th /CG Lab/PreparedbyToranLal Sahu } else p=p+ry1+px; plotpoints(xcenter,ycenter,x,y); /* call the plotpoints function*/ printf("n%dt%dt%dt%dt%d",x,y,p,px,py); } /* Region 2 */ printf("n%dt%dt%dt%dt%d",x,y,p,px,py); printf("nnRegion 2n"); printf("nxtytptpxtpyn"); /* for region 2 recalculate the condition variables*/ p=(ry1*(x+0.5)*(x+0.5)+rx1*(y-1)*(y-1)-rx1*ry1); while(y>0) { y=y-1; py=py-rx2; if(p<=0) { x=x+1; px=px+ry2; } if(p>0) p=p+rx1-py; else p=p+rx1-py+px; plotpoints(xcenter,ycenter,x,y); /* draw the pixels for region 2*/ printf("n%dt%dt%dt%dt%d",x,y,p,px,py); } getch(); closegraph(); } void plotpoints(int xcenter,int ycenter,int x,int y) /* plot the points of the circle as per the procedure*/ { putpixel(xcenter+x,ycenter+y,6); putpixel(xcenter-x,ycenter+y,6); putpixel(xcenter+x,ycenter-y,6); putpixel(xcenter-x,ycenter-y,6); }
  • 10. Shri Rawatpura Sarkar Institute of Technology-II, New Raipur CSE/6th /CG Lab/PreparedbyToranLal Sahu EXPERIMENT-5 5. Write a program Rotation of Triangle. A transformation is any operation on a point in space (x, y) that maps the point's coordinates into a new set of coordinates (x1, y1).The Two Dimensional transformations has five operations such as Translation, Rotation, Reflection, Scaling and Shearing. CODING: #include<graphics.h> #include<stdlib.h> #include<stdio.h> #include<conio.h> int x1,x2,x3,y1,y2,y3,t,tx,sx,sy,shx,shy,ch; float rx1,rx2,rx3,ry1,ry2,ry3; float ang,theta; int main(void) { int gdriver = DETECT, gmode, errorcode; initgraph(&gdriver, &gmode,"C:TCBGI"); /* request for auto detection*/ errorcode = graphresult(); if(errorcode != grOk) /* if error occours*/ { printf("Graphics error: %sn", grapherrormsg(errorcode)); printf("Press any key to halt:"); getch(); exit(1); } else { do{ printf("n1.Translationn2.Reflectionn3.Rotationn4.Scalingn5.Shearingn"); printf("nEnter Your choice"); /* get the choice from the user*/ scanf("%d",&ch); switch(ch) { printf("n Enter all coordinates values :"); scanf("%d %d %d %d %d %d",&x1,&y1,&x2,&y2,&x3,&y3); printf("n Before Rotation "); /* get the original coordinates*/ line(x1,y1,x2,y2); line(rx2,ry2,rx3,ry3); line(rx3,ry3,rx1,ry1); } getch(); closegraph(); /* close the graph*/ return 0; }
  • 11. Shri Rawatpura Sarkar Institute of Technology-II, New Raipur CSE/6th /CG Lab/PreparedbyToranLal Sahu EXPERIMENT-6 6.Write a program to implement boundary –fill algorithm include<graphics.h> #include<dos.h> void fill_right(int x,int y); void fill_left(int x,int y); void main() { int gd=DETECT,gm,x,y,n,i; clrscr(); initgraph(&gd,&gm,"c:turboc3bgi"); printf("*** Boundary Fill algorithm ***"); line (50,50,200,50); line (200,50,200,300); line (200,300,50,300); line (50,300,50,50); x=100; y=100; fill_right(x,y); fill_left(x-1,y); getch(); } void fill_right(int x,int y) { { if((getpixel(x,y) != WHITE)&&(getpixel(x,y) != RED) { putpixel(x,y,RED);
  • 12. Shri Rawatpura Sarkar Institute of Technology-II, New Raipur CSE/6th /CG Lab/PreparedbyToranLal Sahu fill_right(++x,y); x=x-1; fill_right(x,y-1); fill_right(x,y+1); } delay(1); } void fill_left(int x,int y) { if((getpixel(x,y) != WHITE)&&(getpixel(x,y) != RED)) { putpixel(x,y,RED); fill_left(--x,y); x=x+1; fill_left(x,y-1); fill_left(x,y+1); } delay(1); }
  • 13. Shri Rawatpura Sarkar Institute of Technology-II, New Raipur CSE/6th /CG Lab/PreparedbyToranLal Sahu EXPERIMENT-7 7. Write a program to implement boundary –fill algorithm. #include<stdio.h> #include<conio.h> #include<graphics.h> void boundfill(int xc,int yc,int r,int b) { int cur; cur=getpixel(xc,yc); if(cur!=b && cur!=r) { putpixel(xc,yc,r); delay(1); boundfill(xc+1,yc,r,b); boundfill(xc-1,yc,r,b); boundfill(xc,yc+1,r,b); boundfill(xc,yc-1,r,b); } } void main() { int gd=DETECT,gm; initgraph(&gd,&gm,"..bgi"); rectangle(100,100,300,300); boundfill(105,105,4,WHITE); getch();
  • 14. Shri Rawatpura Sarkar Institute of Technology-II, New Raipur CSE/6th /CG Lab/PreparedbyToranLal Sahu closegraph(); } getch(); }
  • 15. Shri Rawatpura Sarkar Institute of Technology-II, New Raipur CSE/6th /CG Lab/PreparedbyToranLal Sahu EXPERIMENT-8 8. Write a program to implement Bezier curve using four control points. #include <stdio.h> #include <stdlib.h> #include <graphics.h> #include <math.h> void bezier (int x[4], int y[4]) { int gd = DETECT, gm; int i; double t; initgraph (&gd, &gm, "..bgi"); for (t = 0.0; t < 1.0; t += 0.0005) { double xt = pow (1-t, 3) * x[0] + 3 * t * pow (1-t, 2) * x[1] + 3 * pow (t, 2) * (1-t) * x[2] + pow (t, 3) * x[3]; double yt = pow (1-t, 3) * y[0] + 3 * t * pow (1-t, 2) * y[1] + 3 * pow (t, 2) * (1-t) * y[2] + pow (t, 3) * y[3]; putpixel (xt, yt, WHITE); } for (i=0; i<4; i++) putpixel (x[i], y[i], YELLOW); getch(); closegraph(); return; } void main() { int x[4], y[4]; int i; printf ("Enter the x- and y-coordinates of the four control points.n");
  • 16. Shri Rawatpura Sarkar Institute of Technology-II, New Raipur CSE/6th /CG Lab/PreparedbyToranLal Sahu for (i=0; i<4; i++) scanf ("%d%d", &x[i], &y[i]); bezier (x, y); } closegraph(); } getch(); }
  • 17. Shri Rawatpura Sarkar Institute of Technology-II, New Raipur CSE/6th /CG Lab/PreparedbyToranLal Sahu EXPERIMENT-9 9. Write a program to implement CohenSutherland line clipping algorithm. #include<stdio.h> #include<conio.h> #include<graphics.h> #include<math.h> void clip(float,float,float); int i,j=0,n; int rx1,rx2,ry1,ry2; float x1[8],y1[8]; void main() { int gd=DETECT,gm; int i,n; float x[8],y[8],m; clrscr(); initgraph(&gd,&gm,""); printf("coordinates for rectangle : "); scanf("%d%d%d%d",&rx1,&ry1,&rx2,&ry2); printf("no. of sides for polygon : "); scanf("%d",&n); printf("coordinates : "); for(i=0;i<n;i++) { scanf("%f%f",&x[i],&y[i]); }
  • 18. Shri Rawatpura Sarkar Institute of Technology-II, New Raipur CSE/6th /CG Lab/PreparedbyToranLal Sahu cleardevice(); outtextxy(10,10,"Before clipping"); outtextxy(10,470,"Press any key...."); rectangle(rx1,ry1,rx2,ry2); for(i=0;i<n-1;i++) line(x[i],y[i],x[i+1],y[i+1]); line(x[i],y[i],x[0],y[0]); getch(); cleardevice(); for(i=0;i<n-1;i++) { m=(y[i+1]-y[i])/(x[i+1]-x[i]); clip(x[i],y[i],m); } clip(x[0],y[0],m); outtextxy(10,10,"After clipping"); outtextxy(10,470,"Press any key...."); rectangle(rx1,ry1,rx2,ry2); for(i=0;i<j-1;i++) line(x1[i],y1[i],x1[i+1],y1[i+1]); getch(); } void clip(float e,float f,float m) { while(e<rx1 e>rx2 f<ry1 f>ry2)
  • 19. Shri Rawatpura Sarkar Institute of Technology-II, New Raipur CSE/6th /CG Lab/PreparedbyToranLal Sahu { if(e<rx1) { f+=m*(rx1-e); e=rx1; } else if(e>rx2) { f+=m*(rx2-e); e=rx1; } if(f<ry1) { e+=(ry1-f)/m; f=ry1; } else if(f>ry2) { e+=(ry2-f)/m; f=ry2; } x1[j]=e; y1[j]=f; j++; } }
  • 20. Shri Rawatpura Sarkar Institute of Technology-II, New Raipur CSE/6th /CG Lab/PreparedbyToranLal Sahu EXPERIMENT-10 10. Write a program to implement Liang Barsky line clipping algorithm. #include<stdio.h> #include<conio.h> #include<graphics.h> #include<math.h> Void main { float x1,y1,x2,y2,xmin,xmax,ymin,ymax,dx,dy; float p[4],q[4],r[4]; float max,min,u1,u2; float xi,xii,yi,yii; int gd,gm,i; gd=DETECT; initgraph(&gd,&gm,"c:tcbgi"); clrscr(); printf("n enter the line co-ordinates"); printf("n enter 1st x="); scanf("%f",&x1); printf("t 1st y="); scanf("%f",&y1); printf("n enter 2nd x="); scanf("%f",&x2); printf("t 2nd y="); scanf("%f",&y2); printf("n enter window boundry"); printf("n xmin="); scanf("%f",&xmin);
  • 21. Shri Rawatpura Sarkar Institute of Technology-II, New Raipur CSE/6th /CG Lab/PreparedbyToranLal Sahu printf("n ymin="); scanf("%f",&ymin); printf("n xmax="); scanf("%f",&xmax); printf("n ymax="); scanf("%f",&ymax) dx=x2-x1; dy=y2-y1; cleardevice(); line(x1,y1,x2,y2); rectangle(xmin,ymin,xmax,ymax); p[0]=-dx; q[0]=x1-xmin; p[1]=dx; q[1]=xmax-x1; p[2]=-dy; p[2]=-dy; q[2]=y1-ymin; p[3]=dy; q[3]=ymax-y1; for(i=0;i<4;i++) { if(p[i]==0 && q[i]<0) { printf("Line is outside the boundry,it is not a clipping candidaten"); getch(); exit(0); }
  • 22. Shri Rawatpura Sarkar Institute of Technology-II, New Raipur CSE/6th /CG Lab/PreparedbyToranLal Sahu } for(i=0;i<4;i++) { r[i]=q[i]/p[i]; printf("n r[%d]=%f",i,r[i]); } max=0;min=1; for(i=0;i<4;i++) if(p[i]<0) { if(r[i]>max) max=r[i]; } else { if(r[i]<min) min=r[i]; } u1=max; u2=min; printf("n u1=%f",u1); printf("n u2=%f",u2); if(u1>u2) { printf("n line is completely outside"); getch(); exit(0);
  • 23. Shri Rawatpura Sarkar Institute of Technology-II, New Raipur CSE/6th /CG Lab/PreparedbyToranLal Sahu } xi=x1+(u1*dx); yi=y1+(u1*dy); xii=x1+(u2*dx); yii=y1+(u2*dy); rectangle (xmin, ymin, xmax, ymax); sector(5); line(xi,yi,xii,yii); getch(); closegraph(); }
  • 24. Shri Rawatpura Sarkar Institute of Technology-II, New Raipur CSE/6th /CG Lab/PreparedbyToranLal Sahu EXPERIMENT-11 11. Write a program to implement face of a cartoon. # include <graphics.h> # include<conio.h> #include <stdlib.h> main() { int gd= DETECT, gm,area, temp1, temp2, left=25, top=75; void*p; initgraph(&gd, &gm,”C:TCBGI”); Setcolor(YELLOW); Circle(50, 100,25); Sefillstyle(SOLID__FILL,YELLOW); floodfill(50,100, YELLOW); Setcolor(BLACK); Sefillstyle(SOLID__FILL,BLACK); fillellipse(44, 85, 2, 6); fillellipse(56, 85, 2, 6); ellipse(50, 100, 205, 335, 20,9); ellipse(50, 100, 205, 335, 20,10); ellipse(50, 100, 205, 335, 20,11); area= imagesize(left, top, left+ 50, top+50); p= malloc(area); setcolor(WHITE); settextstyle(SANS_SERIF_FONT, HORIZ_DIR,2); outtextxy(155, 451, “Smiling Face Animation”); setcolor(BLUE); rectangle(0,0 , 639,449); while(!kbhit()) { Temp1= 1+ randam(588); { Temp1= 1+ randam(380); { Getimage(left, top, left+ 50, top+ 50); putimage(left, top, p, XOR_PUT); putimage(temp1, temp2, p, XOR_PUT); delay(100); left= temp1; top = temp2;
  • 25. Shri Rawatpura Sarkar Institute of Technology-II, New Raipur CSE/6th /CG Lab/PreparedbyToranLal Sahu } getch(); closegraph(); return(); }