0% found this document useful (0 votes)
46 views21 pages

Cs2405 Computer Graphics Laboratory L T

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

Cs2405 Computer Graphics Laboratory L T

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

CS2405 COMPUTER GRAPHICS LABORATORY L T P C

1. Implementation of Bresenhams Algorithm – Line, Circle, Ellipse.


2. Implementation of Line, Circle and ellipse Attributes.
3. Two Dimensional transformations - Translation, Rotation, Scaling, Reflection, Shear.
4. Composite 2D Transformations.
5. Cohen Sutherland 2D line clipping and Windowing
6. Sutherland – Hodgeman Polygon clipping Algorithm.
7. Three dimensional transformations - Translation, Rotation, Scaling.
8. Composite 3D transformations.
9. Drawing three dimensional objects and Scenes.
10. Generating Fractal images.
1. Implementation of Bresenhams Algorithm – Line, Circle, Ellipse.
1. A. Line Algorithm
#include<stdio.h>
#include<conio.h>
#include<graphics.h>
void main()
{
int dx,dy,x,y,p,x1,x2,y1,y2;
int gd,gm;
clrscr();
printf("\n Enter the coordinates of first point:");
scanf("%d %d",&x1,&y1);
printf("\n Enter the coordinates of second point:");
scanf("%d %d",&x2,&y2);
dx=x2-x1;
dy=y2-y1;
p=2*(dy)-(dx);
x=x1;
y=y1;
detectgraph(&gd,&gm);
initgraph(&gd,&gm," ");
putpixel(x,y,WHITE);
while(x<=x2)
{
if(p<0)
{
x=x+1;
y=y;
p=p+2*dy;
}
else
{
x=x+1;
y=y+1;
p=p+2*(dy-dx);
}
putpixel(x,y,WHITE);
}
getch();
closegraph();
}
1. B. Circle Algorithm:

#include<stdio.h>

#include<conio.h>

#include<graphics.h>

void main()

int gd=DETECT,gm;

int r,x,y,p,xc=320,yc=240;

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

printf("\n Enter the 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();

}
1. C. Ellipse Algorithm

#include<stdio.h>

#include<conio.h>

#include<graphics.h>

#include<math.h>

void main()

long d1,d2;

int i,gd=DETECT,gm,x,y;

long rx,ry,rxsq,rysq,tworxsq,tworysq,dx,dy;

printf("\nEnter x,y Radius:");

scanf("%d %d",&rx,&ry);

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

rxsq=rx*rx;

rysq=ry*ry;

tworxsq=2*rxsq;

tworysq=2*rysq;

x=0;

y=ry;

d1=rysq-rxsq*ry+(0.25*rxsq);

dx=tworysq*x;

dy=tworxsq*y;

do

putpixel(200+x,200+y,15);

putpixel(200-x,200-y,15);

putpixel(200+x,200-y,15);

putpixel(200-x,200+y,15);
if(d1<0)

x=x+1;

y=y;

dx=dx+tworysq;

d1=d1+dx+rysq;

else

x=x+1;

y=y-1;

dx=dx+tworysq;

dy=dy-tworxsq;

d1=d1+dx-dy+rysq;

while(dx<dy);

d2=rysq*(x+0.5)*(x+.5)+rxsq*(y-1)*(y-1)-rxsq*rysq;

do

putpixel(200+x,200+y,15);

putpixel(200-x,200-y,15);

putpixel(200+x,200-y,15);

putpixel(200-x,200+y,15);

if(d2>0)

x=x;
y=y-1;

dy=dy-tworxsq;

d2=d2-dy+rxsq;

else

x=x+1;

y=y-1;

dy=dy-tworxsq;

dx=dx+tworysq;

d2=d2+dx-dy+rxsq;

}while(y>0);

getch();

closegraph();

}
2. Implementation of Line, Circle and ellipse Attributes.
#include<stdio.h>

#include<conio.h>

#include<graphics.h>

#include<string.h>

void main()

char ch='y';

int gd=DETECT,gm,x1,y1,x2,y2,rad,sa,ea,xrad,yrad,i;

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

while(ch=='y')

cleardevice();

setbkcolor(9);

outtextxy(100,130,"Enter Your Choice:");

outtextxy(100,150,"1.Line");

outtextxy(100,170,"2.Circle");

outtextxy(100,190,"3.Square");

outtextxy(100,210,"4.Arc");

outtextxy(100,230,"5.Ellipse");

outtextxy(100,250,"6.Rectangle");

outtextxy(100,270,"7.Exit");

ch=getch();

cleardevice();

switch(ch)

case 1:

line(100,200,300,400);
break;

case 2:

circle(200,200,100);

break;

case 3:

setfillstyle(5,4);

bar(100,300,200,400);

break;

case 4:

setfillstyle(5,4);

arc(200,200,100,300,100);

break;

case 5:

setfillstyle(5,4);

fillellipse(100,100,50,100);

break;

case 6:

settextstyle(DEFAULT_FONT,0,2);

outtextxy(120,140,"BIE");

line(100,100,100,300);

line(300,300,100,300);

line(100,100,300,100);

line(300,100,300,300);

break;

case 7:

closegraph();

return;

}
ch='y';

getch();

}
3. Two Dimensional transformations - Translation, Rotation, Scaling, Reflection, Shear.
#include<stdio.h>

#include<conio.h>

#include<graphics.h>

#include<math.h>

void translate();

void scale();

void rotate();

void main()

int ch,gd=DETECT,gm;

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

do{

setbkcolor(2);

setcolor(9);

rectangle(100,150,150,100);

printf("Menu:\n1.Translate \n2.Scale \n3.Rotate\n4. Exit\nUr Choice? \n");

scanf("%d",&ch);

cleardevice();

switch(ch)

case 1:

translate();

break;

case 2:

scale();

break;

case 3:
rotate();

break;

case 4:

break;

}while(ch!=4);

getch();

closegraph();

void translate()

int tx,ty;

setcolor(2);

printf("\nEnter tx & ty:");

scanf("%d %d",&tx,&ty);

cleardevice();

rectangle(100,150,150,100);

printf("\n After Translation");

rectangle(100+tx,150+ty,150+tx,100+ty);

void scale()

int sx,sy;

setcolor(2);

printf("\nEnter sx,sy:");

scanf("%d %d", &sx,&sy);


cleardevice();

rectangle(100,150,150,100);

printf("\nAfter Scaling:");

rectangle(100*sx,150*sy,150*sx,100*sy);

void rotate()

float theta;

int x1,x2,x3,x4,y1,y2,y3,y4;

int ax1,ax2,ax3,ax4,ay1,ay2,ay3,ay4,refx,refy;

printf("\nEnter the Angle for Rotation:");

scanf("%f",&theta);

theta=theta*(3.14/180);

cleardevice();

setcolor(2);

refx=100;refy=100;

x1=100;y1=100;

x2=150;

y2=100;

x3=150;

y3=150;

x4=100;

y4=150;

ax1=refy+(x1-refx)*cos(theta)-(y1-refy)*sin(theta);

ay1=refy+(x1-refx)*sin(theta)+(y1-refy)*cos(theta);

ax2=refy+(x2-refx)*cos(theta)-(y2-refy)*sin(theta);

ay2=refy+(x2-refx)*sin(theta)+(y2-refy)*cos(theta);
ax3=refy+(x3-refx)*cos(theta)-(y3-refy)*sin(theta);

ay3=refy+(x3-refx)*sin(theta)+(y3-refy)*cos(theta);

ax4=refy+(x4-refx)*cos(theta)-(y4-refy)*sin(theta);

ay4=refy+(x4-refx)*sin(theta)+(y4-refy)*cos(theta);

rectangle(100,150,150,100);

line(ax1,ay1,ax2,ay2);

line(ax2,ay2,ax3,ay3);

line(ax3,ay3,ax4,ay4);

line(ax4,ay4,ax1,ay1);

}
4. Composite 2D Transformations.
5. Cohen Sutherland 2D line clipping and Windowing
6. Sutherland – Hodgeman Polygon clipping Algorithm.
7. Three dimensional transformations - Translation, Rotation, Scaling.
8. Composite 3D transformations.
9. Drawing three dimensional objects and Scenes.
10. Generating Fractal images.

You might also like