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

DOC
COMPUTER GRAPHICS LAB MANUAL
DOCX
Computer graphics lab assignment
PDF
Computer graphics lab manual
DOCX
Computer Graphics Lab File C Programs
PDF
Computer graphics lab manual
PPT
Ellipses drawing algo.
PPTX
BRESENHAM’S LINE DRAWING ALGORITHM
PDF
2D Rotation- Transformation in Computer Graphics
COMPUTER GRAPHICS LAB MANUAL
Computer graphics lab assignment
Computer graphics lab manual
Computer Graphics Lab File C Programs
Computer graphics lab manual
Ellipses drawing algo.
BRESENHAM’S LINE DRAWING ALGORITHM
2D Rotation- Transformation in Computer Graphics

What's hot (20)

PDF
Computer graphics lab report with code in cpp
PPTX
Bresenham's line drawing algorithm
PPTX
Computer graphics presentation
PPTX
Bresenham's line drawing algorithm
PPT
Input devices in computer graphics
DOCX
Java practical
PPT
bresenham circles and polygons in computer graphics(Computer graphics tutorials)
PPTX
Mid point line Algorithm - Computer Graphics
PPTX
Computer graphics
PPTX
Bresenham circle
PDF
CG - Output Primitives
PDF
Python programming : Standard Input and Output
PPTX
Computer Graphics
PPTX
Algorithms - "Chapter 2 getting started"
DOCX
Cg my own programs
PPTX
Computer graphics - bresenham line drawing algorithm
PPTX
Computer Graphics - Bresenham's line drawing algorithm & Mid Point Circle alg...
PPTX
Applications of computer graphics
PPTX
Cohen-Sutherland Line Clipping Algorithm
PPTX
2D viewing & clipping
Computer graphics lab report with code in cpp
Bresenham's line drawing algorithm
Computer graphics presentation
Bresenham's line drawing algorithm
Input devices in computer graphics
Java practical
bresenham circles and polygons in computer graphics(Computer graphics tutorials)
Mid point line Algorithm - Computer Graphics
Computer graphics
Bresenham circle
CG - Output Primitives
Python programming : Standard Input and Output
Computer Graphics
Algorithms - "Chapter 2 getting started"
Cg my own programs
Computer graphics - bresenham line drawing algorithm
Computer Graphics - Bresenham's line drawing algorithm & Mid Point Circle alg...
Applications of computer graphics
Cohen-Sutherland Line Clipping Algorithm
2D viewing & clipping
Ad

Viewers also liked (20)

DOCX
Computer Graphics Practical
DOC
SE Computer, Programming Laboratory(210251) University of Pune
PDF
Computer Graphics Programes
PDF
Basics of Computer graphics lab
DOCX
Computer graphics file
DOCX
syed mohd naqi zaidi
PDF
Oracle Notes
PDF
Company Profile - Compressed
DOCX
Lab manual asp.net
PDF
Unit Testing on Android - Droidcon Berlin 2015
DOC
Cn lab manual
PPTX
Teks ekposisi
DOCX
Computer applications in civil engineering lab
DOCX
Mech nacp lab
DOC
Computer hardware and simulation lab manual
DOC
Softwareenggineering lab manual
DOCX
Oops lab manual
DOCX
Graphics User Interface Lab Manual
DOC
Java final lab
PDF
10CSL67 CG LAB PROGRAM 5
Computer Graphics Practical
SE Computer, Programming Laboratory(210251) University of Pune
Computer Graphics Programes
Basics of Computer graphics lab
Computer graphics file
syed mohd naqi zaidi
Oracle Notes
Company Profile - Compressed
Lab manual asp.net
Unit Testing on Android - Droidcon Berlin 2015
Cn lab manual
Teks ekposisi
Computer applications in civil engineering lab
Mech nacp lab
Computer hardware and simulation lab manual
Softwareenggineering lab manual
Oops lab manual
Graphics User Interface Lab Manual
Java final lab
10CSL67 CG LAB PROGRAM 5
Ad

Similar to Graphics practical lab manual (20)

DOCX
Computer graphics
DOCX
C graphics programs file
PDF
Srinivas Reddy Amedapu C and Data Structures JNTUH Hyderabad
PDF
Srinivas Reddy Amedapu, CPDS, CP Lab, JNTU Hyderabad
PDF
Zoro123456789123456789123456789123456789
 
PDF
labb123456789123456789123456789123456789
 
DOC
Computer graphics
DOC
Computer graphics
PDF
DSC program.pdf
PDF
C Programming lab
PDF
C and Data Structures Lab Solutions
PDF
C lab excellent
PDF
C and Data Structures
DOC
Lab manualsahu[et&amp;t]
DOCX
Graphic Design Lab File.docx
DOCX
C programs
PDF
C programs
PDF
C- Programming Assignment 4 solution
Computer graphics
C graphics programs file
Srinivas Reddy Amedapu C and Data Structures JNTUH Hyderabad
Srinivas Reddy Amedapu, CPDS, CP Lab, JNTU Hyderabad
Zoro123456789123456789123456789123456789
 
labb123456789123456789123456789123456789
 
Computer graphics
Computer graphics
DSC program.pdf
C Programming lab
C and Data Structures Lab Solutions
C lab excellent
C and Data Structures
Lab manualsahu[et&amp;t]
Graphic Design Lab File.docx
C programs
C programs
C- Programming Assignment 4 solution

More from Vivek Kumar Sinha (20)

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

Recently uploaded (20)

PPTX
Current and future trends in Computer Vision.pptx
PPTX
MET 305 2019 SCHEME MODULE 2 COMPLETE.pptx
PPTX
Artificial Intelligence
PPTX
Fundamentals of safety and accident prevention -final (1).pptx
PDF
A SYSTEMATIC REVIEW OF APPLICATIONS IN FRAUD DETECTION
PDF
Categorization of Factors Affecting Classification Algorithms Selection
PPT
Introduction, IoT Design Methodology, Case Study on IoT System for Weather Mo...
PDF
Level 2 – IBM Data and AI Fundamentals (1)_v1.1.PDF
PDF
III.4.1.2_The_Space_Environment.p pdffdf
PDF
null (2) bgfbg bfgb bfgb fbfg bfbgf b.pdf
PPTX
Infosys Presentation by1.Riyan Bagwan 2.Samadhan Naiknavare 3.Gaurav Shinde 4...
PDF
PREDICTION OF DIABETES FROM ELECTRONIC HEALTH RECORDS
PDF
BIO-INSPIRED HORMONAL MODULATION AND ADAPTIVE ORCHESTRATION IN S-AI-GPT
PPTX
additive manufacturing of ss316l using mig welding
PPT
Project quality management in manufacturing
PDF
keyrequirementskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk
PDF
R24 SURVEYING LAB MANUAL for civil enggi
PPT
Mechanical Engineering MATERIALS Selection
PDF
Enhancing Cyber Defense Against Zero-Day Attacks using Ensemble Neural Networks
PPTX
CYBER-CRIMES AND SECURITY A guide to understanding
Current and future trends in Computer Vision.pptx
MET 305 2019 SCHEME MODULE 2 COMPLETE.pptx
Artificial Intelligence
Fundamentals of safety and accident prevention -final (1).pptx
A SYSTEMATIC REVIEW OF APPLICATIONS IN FRAUD DETECTION
Categorization of Factors Affecting Classification Algorithms Selection
Introduction, IoT Design Methodology, Case Study on IoT System for Weather Mo...
Level 2 – IBM Data and AI Fundamentals (1)_v1.1.PDF
III.4.1.2_The_Space_Environment.p pdffdf
null (2) bgfbg bfgb bfgb fbfg bfbgf b.pdf
Infosys Presentation by1.Riyan Bagwan 2.Samadhan Naiknavare 3.Gaurav Shinde 4...
PREDICTION OF DIABETES FROM ELECTRONIC HEALTH RECORDS
BIO-INSPIRED HORMONAL MODULATION AND ADAPTIVE ORCHESTRATION IN S-AI-GPT
additive manufacturing of ss316l using mig welding
Project quality management in manufacturing
keyrequirementskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk
R24 SURVEYING LAB MANUAL for civil enggi
Mechanical Engineering MATERIALS Selection
Enhancing Cyber Defense Against Zero-Day Attacks using Ensemble Neural Networks
CYBER-CRIMES AND SECURITY A guide to understanding

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(); }