Professional Documents
Culture Documents
algorithm.
3 WAP to draw a circle using 12-September-
Bresenhams circle 2016
drawing algorithm.
4 WAP to draw a circle using 19-September-
Mid-point algorithm. 2016
CODING:
#include<iostream.h>
#include<conio.h>
#include<graphics.h>
void main()
intgd=DETECT,gmode;
initgraph(&gd,&gmode,"c:\\tc\\bgi");
int x1,x2,x3,x4,x5,x6,x7,y1,y2,y3,y5,y4,y6,y7;
cin>>x1>>y1>>x2>>y2>>x3>>y3>>x4>>y4;
line(x1,y1,x2,y2);
line(x2,y2,x3,y3);
line(x3,y3,x4,y4);
line(x4,y4,x1,y1);
cout<<"rectangle drawn";
getch();
}
OUTPUT:
EXPERIMENT 2
AIM: WAP to draw a triangle using line function.
CODING:
#include<iostream.h>
#include<conio.h>
#include<graphics.h>
void main()
intgd=DETECT,gmode;
initgraph(&gd,&gmode,"c:\\tc\\bgi");
int x1,y1,x2,y2,x3,y3;
cin>>x1>>y1>>x2>>y2>>x3>>y3;
line(x1,y1,x2,y2);
line(x2,y2,x3,y3);
line(x3,y3,x1,y1);
cout<<"triangle drawn";
getch();
}
OUTPUT:
EXPERIMENT 3
AIM: WAP to draw a line using DDA algorithm.
CODING:
#include<iostream.h>
#include<conio.h>
#include<graphics.h>
void main()
clrscr();
intgd=DETECT,gmode;
initgraph(&gd,&gmode,"c:\\tc\\bgi");
int x1,y1,x2,y2,step,dx,dy,xi,yi;
cin>>x1>>y1;
cin>>x2>>y2;
dx=x2-x1;
dy=y2-y1;
if(dx>=dy)
step=dx;
else
{
step=dy;
xi=dx/step;
yi=dx/step;
for(inti=0;i<step;i++)
putpixel(x1,y1,WHITE);
x1=x1+xi;
y1=y1+yi;
getch();
}
OUTPUT:
EXPERIMENT 4
AIM: WAP to draw a line using Bresenhams line drawing algorithm.
CODING:
#include<iostream.h>
#include<conio.h>
#include<graphics.h>
void main()
clrscr();
intgd=DETECT,gmode;
initgraph(&gd,&gmode,"c:\\tc\\bgi");
int x,y,x1,y1,x2,y2,p,dx,dy;
cin>>x1>>y1;
cin>>x2>>y2;
dx=x2-x1;
dy=y2-y1;
p=2*dy-dx;
x=x1;
y=y1;
while (x<=x2)
{
x++;
if(p<=0)
p=p+2*dy;
else
p=p+2*dy-2*dx;
y++;
putpixel(x,y,WHITE);
getch();
}
OUTPUT:
EXPERIMENT 5
AIM: WAP to draw a circle using Bresenhams circle drawing
algorithm.
CODING:
#include<iostream.h>
#include<conio.h>
#include<graphics.h>
voidcirclepoint(intxc,intyc,intx,int y)
putpixel(x+xc,y+yc,WHITE);
putpixel(y+xc,x+yc,WHITE);
putpixel(-y+xc,x+yc,WHITE);
putpixel(-x+xc,y+yc,WHITE);
putpixel(-x+xc,-y+yc,WHITE);
putpixel(-y+xc,-x+yc,WHITE);
putpixel(x+xc,-y+yc,WHITE);
putpixel(y+xc,-x+yc,WHITE);
void main()
clrscr();
intgd=DETECT,gmode;
initgraph(&gd,&gmode,"c:\\tc\\bgi");
intx,y,xc,yc,d,r;
cout<<"enter center coordinates";
cin>>xc>>yc;
cout<<"enter radius";
cin>>r;
x=0;
y=r;
d=3-2*r;
while (x<=y)
circlepoint(xc,yc,x,y);
if(d<=0)
d=d+4*x+6;
else
d=d+4*(x-y)+10;
y--;
x++;
getch();
}
OUTPUT:
EXPERIMENT 6
AIM: WAP to draw a circle using Mid-point algorithm.
CODING:
#include<iostream.h>
#include<conio.h>
#include<graphics.h>
voidcirclepoint(intxc,intyc,intx,int y)
putpixel(x+xc,y+yc,WHITE);
putpixel(y+xc,x+yc,WHITE);
putpixel(-y+yc,x+xc,WHITE);
putpixel(-x+xc,y+yc,WHITE);
putpixel(-x+xc,-y+yc,WHITE);
putpixel(-y+yc,-x+xc,WHITE);
putpixel(y+yc,-x+xc,WHITE);
putpixel(x+xc,-y+yc,WHITE);
void main()
clrscr();
intgd=DETECT,gmode;
initgraph(&gd,&gmode,"c:\\tc\\bgi");
intx,y,xc,yc,d,r;
cout<<"enter center coordinates";
cin>>xc>>yc;
cout<<"enter radius";
cin>>r;
x=0;
y=r;
d=1-r;
while (x<=y)
circlepoint(xc,yc,x,y);
if(d<=0)
d=d+3+2*x;
else
d=d+5+2*(x-y);
y--;
x++;
getch();
}
OUTPUT:
EXPERIMENT 7
AIM: WAP to Implement translation.
CODING:
#include<iostream.h>
#include<conio.h>
#include<graphics.h>
void main()
clrscr();
intgd=DETECT,gmode;
initgraph(&gd,&gmode,"c:\\tc\\bgi");
int tx,ty,x1,x2,y1,y2;
cin>>x1>>x2>>y1>>y2;
line(x1,y1,x2,y2);
cin>>tx>>ty;
x1=x1+tx;
x2=x2+tx;
y1=y1+ty;
y2=y2+ty;
line(x1,y1,x2,y2);
getch();
}
OUTPUT:
EXPERIMENT 8
AIM: WAP to Implement Boundry Filled Algorithm.
CODING:
#include<stdio.h>
#include<iostream.h>
#include<conio.h>
#include<graphics.h>
#include<dos.h>
#include<process.h>
voidright_fill(intx,int y)
if((getpixel(x,y)!=WHITE)&&(getpixel(x,y)!=YELLOW))
putpixel(x,y,YELLOW);
right_fill(++x,y);
x--;
right_fill(x,y-1);
right_fill(x,y+1);
delay(0.75);
voidleft_fill(intx,int y)
if((getpixel(x,y)!=WHITE)&&(getpixel(x,y)!=BLUE))
{
putpixel(x,y,BLUE);
left_fill(--x,y);
x++;
left_fill(x,y-1);
left_fill(x,y+1);
delay(0.75);
void main()
clrscr();
intgd=DETECT,gmode;
intxmax,ymax;
initgraph(&gd,&gmode,"c:\\tc\\bgi");
intx,y;
rectangle(200,200,100,100);
x=150;
y=150;
right_fill(x,y);
left_fill(x-1,y);
getch();
}
OUTPUT:
EXPERIMENT 9
AIM: WAP FOR COHEN-SUTHERLAND POLYGON CLIPPING
ALGORITHM
#include<iostream.h>
#include<conio.h>
#include<graphics.h>
int k;
float xmin,ymin,xmax,ymax,arr[20],m;
if(x2-x1)
m=(y2-y1)/(x2-x1);
else
m=100000;
arr[k]=x2;
arr[k+1]=y2;
k+=2;
arr[k]=xmin;
arr[k+1]=y1+m*(xmin-x1);
arr[k+2]=x2;
arr[k+3]=y2;
k+=4;
arr[k]=xmin;
arr[k+1]=y1+m*(xmin-x1);
k+=2;
if(y2-y1)
m=(x2-x1)/(y2-y1);
else
m=100000;
arr[k]=x2;
arr[k+1]=y2;
k+=2;
arr[k]=x1+m*(ymax-y1);
arr[k+1]=ymax;
arr[k+2]=x2;
arr[k+3]=y2;
k+=4;
arr[k]=x1+m*(ymax-y1);
arr[k+1]=ymax;
k+=2;
if(x2-x1)
m=(y2-y1)/(x2-x1);
else
m=100000;
arr[k]=x2;
arr[k+1]=y2;
k+=2;
}
arr[k]=xmax;
arr[k+1]=y1+m*(xmax-x1);
arr[k+2]=x2;
arr[k+3]=y2;
k+=4;
arr[k]=xmax;
arr[k+1]=y1+m*(xmax-x1);
k+=2;
if(y2-y1)
m=(x2-x1)/(y2-y1);
else
m=100000;
arr[k]=x2;
arr[k+1]=y2;
k+=2;
arr[k]=x1+m*(ymin-y1);
arr[k+1]=ymin;
arr[k+2]=x2;
arr[k+3]=y2;
k+=4;
arr[k]=x1+m*(ymin-y1);
arr[k+1]=ymin;
k+=2;
void main()
int gdriver=DETECT,gmode,n,poly[20];
float xi,yi,xf,yf,polyy[20];
clrscr();
cin>>xmin>>ymin;
cout<<"xmax,ymax :";
cin>>xmax>>ymax;
cin>>n;
cin>>polyy[i];
polyy[i]=polyy[0];
polyy[i+1]=polyy[1];
poly[i]=round(polyy[i]);
initgraph(&gdriver,&gmode,"C:\\TurboC3\\BGI");
setcolor(RED);
rectangle(xmin,ymax,xmax,ymin);
cout<<"\t\tUNCLIPPED POLYGON";
setcolor(WHITE);
fillpoly(n,poly);
getch();
cleardevice();
k=0;
clipl(polyy[i],polyy[i+1],polyy[i+2],polyy[i+3]);
n=k/2;
polyy[i]=arr[i];
polyy[i]=polyy[0];
polyy[i+1]=polyy[1];
k=0;
clipt(polyy[i],polyy[i+1],polyy[i+2],polyy[i+3]);
n=k/2;
polyy[i]=arr[i];
polyy[i]=polyy[0];
polyy[i+1]=polyy[1];
k=0;
clipr(polyy[i],polyy[i+1],polyy[i+2],polyy[i+3]);
n=k/2;
polyy[i]=arr[i];
polyy[i]=polyy[0];
polyy[i+1]=polyy[1];
k=0;
clipb(polyy[i],polyy[i+1],polyy[i+2],polyy[i+3]);
poly[i]=round(arr[i]);
if(k)
fillpoly(k/2,poly);
setcolor(RED);
rectangle(xmin,ymax,xmax,ymin);
cout<<"\tCLIPPED POLYGON";
getch();
closegraph();}
OUTPUT:
EXPERIMENT 10
AIM:WAP FOR COHEN-SUTHERLAND LINE CLIPPING ALGORITHM
#include<conio.h>
#include<iostream.h>
#include<graphics.h>
int code = 0;
return code;
void main()
initgraph(&gdriver,&gmode,"C:\\TurboC3\\BGI");
setcolor(BLUE);
cin>>xl>>yl>>xh>>yh;
rectangle(xl,yl,xh,yh);
int x1,y1,x2,y2;
cin>>x1>>y1>>x2>>y2;
line(x1,y1,x2,y2);
getch();
while(1){
float m =(float)(y2-y1)/(x2-x1);
accept = 1;
break;
break;
}else{
int x,y;
int temp;
temp = outcode2;
else
temp = outcode1;
x = x1+ (yh-y1)/m;
y = yh;
x = x1+ (yl-y1)/m;
y = yl;
x = xl;
y = y1+ m*(xl-x1);
x = xh;
y = y1+ m*(xh-x1);
//Check which point we had selected earlier as temp, and replace its
co-ordinates
if(temp == outcode1){
x1 = x;
y1 = y;
outcode1 = getcode(x1,y1);
}else{
x2 = x;
y2 = y;
outcode2 = getcode(x2,y2);
setcolor(WHITE);
cout<<"After clipping:";
if(accept)
line(x1,y1,x2,y2);
getch();
closegraph();
}
OUTPUT:
EXPERIMENT 11
AIM:WAP FOR DISPLAYING 3D OBJECTS IN 2D DISPLAY USING
PERPECTIVE TRANSFORMATION
#include<stdio.h>
#include<math.h>
#include<graphics.h>
#include<conio.h>
main()
int x1,y1,x2,y2,gd,gm;
int ymax,a[4][8];
float par[4][4],b[4][8];
int i,j,k,m,n,p;
detectgraph(&gd,&gm);
initgraph(&gd,&gm, "c:\\turboc3\\bgi");
ymax = getmaxy();
for(j=0;j<3;j++)
{
x1=(int) b[0][j]; y1=(int) b[1][j];
line( x1,ymax-y1,x2,ymax-y2);
setcolor(11);
for(j=4;j<7;j++)
setcolor(7);
for(i=0;i<4;i++)
getch(); getch();
OUTPUT: