PROGRAM -1

/*Write a program to implement DDA Line Algorithm.*/

#include<stdio.h>

#include<conio.h>

#include<graphics.h>

void main()

{

int x,y,x1,x2,y1,y2,k,dx,dy,s,xi,yi;

int gd=DETECT,gm;

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

printf("Enter the First point");

scanf("%d%d",&x1,&y1);

printf("Enter Second point");

scanf("%d%d",&x2,&y2);

x=x1;

y=y1;

putpixel(x,y,7);

dx=x2-x1;

dy=y2-y1;

if((dx)>(dy))

s=(dx);

else

s=(dy);

xi=dx/s;

yi=dy/s;

x=x1;

y=y1;

putpixel(x,y,7);

for(k=0;k<30;k++)

{

x=x+xi;

y=y+yi;

putpixel(x,y,7);

}

getch();

closegraph();

}

Output:-

PROGRAM-2

/*/*Write a program to implement BRESENHAM Line Algorithm.*/

#include<stdio.h>

#include<conio.h>

#include<graphics.h>

void main()

{

int gd=DETECT,gm;

int dx,dy,p,end;

int x1,x2,x,y,y1,y2;

clrscr();

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

printf("enter the value of x1");

scanf("%d",&x1);

printf("enter the value of y1");

scanf("%d",&y1);

printf("enter the value of x2");

scanf("%d",&x2);

printf("enter the value of y2");

scanf("%d",&y2);

dx=abs(x1-x2);

dy=abs(y1-y2);

p=2*dy-dx;

if(x1>x2)

{

x=x2;

y=y2;

end=x1;

}

else

{

x=x1;

y=y1;

end=x2;

}

putpixel(x,y,RED);

while(x<end)

{

x=x+1;

if(p<0)

{

p=p+2*dy;

}

else

{

y=y+1;

p=p+2*(dy-dx);

}

putpixel(x,y,RED);

}

getch();

closegraph();

}

Output:

PROGRAM -3

/*/*Write a program to implement BRESENHAM Circle Algorithm.*/

#include<stdio.h>

#include<conio.h>

#include<graphics.h>

#include<math.h>

void main()

{

int gd=DETECT,gm;

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

initgraph(&gd,&gm,"C:\\TC\\BGI");

cleardevice();

printf("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,WHITE);

putpixel(xc-x,yc-y,WHITE);

putpixel(xc+x,yc+y,WHITE);

putpixel(xc-x,yc+y,WHITE);

putpixel(xc+y,yc-x,WHITE);

putpixel(xc-y,yc-x,WHITE);

putpixel(xc+y,yc+x,WHITE);

putpixel(xc-y,yc+x,WHITE);

}

getch();

closegraph();

}

Output:-

PROGRAM-4

/*Write a program to implement mid point circle algorithm.*/

#include<stdio.h>

#include<conio.h>

#include<graphics.h>

void Drawcircle(int,int,int);

void Cliplot(int,int,int,int);

int x,y,r,p;

void main()

{

int gd=DETECT,gm;

clrscr();

printf("enter the mid point & radius");

scanf("%d%d%d",&x,&y,&r);

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

Drawcircle(x,y,r);

getch();

closegraph();

}

void Drawcircle(int x1,int y1,int r)

{

int x=0,y=r,p=1-r;

Cliplot(x1,y1,x,y);

while(x<y)

{

x++;

if(p<0)

p+=2*x+1;

else

{

y--;

p+=2*(x-y)+1;

}

Cliplot(x1,y1,x,y);

}

}

void Cliplot(int xctr,int yctr,int x,int y)

{

putpixel(xctr+x,yctr+y,1);

putpixel(xctr-x,yctr+y,1);

putpixel(xctr+x,yctr-y,1);

putpixel(xctr-x,yctr-y,1);

putpixel(xctr+y,yctr+x,1);

putpixel(xctr-y,yctr+x,1);

putpixel(xctr+y,yctr-x,1);

putpixel(xctr-y,yctr-x,1);

}

Output:

EXPERIMENT- 5

/*Write a program for line clipping.*/

#include<stdio.h>

#include<graphics.h>

#include<conio.h>

typedef unsigned int outcode;

enum { TOP=0x1, BOTTOM=0x2, RIGHT=0x4, LEFT=0x8 };

void lineclip(x0,y0,x1,y1,xwmin,ywmin,xwmax,ywmax )

float x0,y0,x1,y1,xwmin,ywmin,xwmax,ywmax;

{

int gd,gm;

outcode code0,code1,codeout;

int accept = 0, done=0;

code0 = calcode(x0,y0,xwmin,ywmin,xwmax,ywmax);

code1 = calcode(x1,y1,xwmin,ywmin,xwmax,ywmax);

do{

if(!(code0 | code1))

{ accept =1 ; done =1; }

else

if(code0 & code1) done = 1;

else

{

float x,y;

codeout = code0 ? code0 : code1;

if(codeout & TOP)

{

x = x0 + (x1-x0)*(ywmax-y0)/(y1-y0);

y = ywmax;

}

else

if( codeout & BOTTOM)

{

x = x0 + (x1-x0)*(ywmin-y0)/(y1-y0);

y = ywmin;

}

else

if ( codeout & RIGHT)

{

y = y0+(y1-y0)*(xwmax-x0)/(x1-x0);

x = xwmax;

}

else

{

y = y0 + (y1-y0)*(xwmin-x0)/(x1-x0);

x = xwmin;

}

if( codeout == code0)

{

x0 = x; y0 = y;

code0=calcode(x0,y0,xwmin,ywmin,xwmax,ywmax);

}

else

{

x1 = x; y1 = y;

code1 = calcode(x1,y1,xwmin,ywmin,xwmax,ywmax);

}

}

} while( done == 0);

if(accept) line(x0,y0,x1,y1);

rectangle(xwmin,ywmin,xwmax,ywmax);

getch();

}

int calcode (x,y,xwmin,ywmin,xwmax,ywmax)

float x,y,xwmin,ywmin,xwmax,ywmax;

{

int code =0;

if(y> ywmax)

code |=TOP;

else if( y<ywmin)

code |= BOTTOM;

else if(x > xwmax)

code |= RIGHT;

else if ( x< xwmin)

code |= LEFT;

return(code);

}

main()

{

float x2,y2,x1,y1,xwmin,ywmin,xwmax,ywmax;

int gd=DETECT,gm;

clrscr();

initgraph(&gd,&gm,"e:\\tc\\bgi");

printf("\n\n\tEnter the co-ordinates of Line :");

printf("\n\n\tX1 Y1 : ");

scanf("%f %f",&x1,&y1);

printf("\n\n\tX2 Y2 : ");

scanf("%f %f",&x2,&y2);

printf("\n\tEnter the co_ordinates of window :\n ");

printf("\n\txwmin , ywmin : ");

scanf("%f %f",&xwmin,&ywmin);

printf("\n\txwmax , ywmax : ");

scanf("%f %f",&xwmax,&ywmax);

clrscr();

line(x1,y1,x2,y2);

rectangle(xwmin,ywmin,xwmax,ywmax);

getch();

clrscr();

lineclip(x1,y1,x2,y2,xwmin,ywmin,xwmax,ywmax );

getch();

closegraph();

}

OUTPUT:-

EXPERIMENT- 6

/* Write a program for polygon clipping.*/

#include <stdio.h>

#include <conio.h>

#include <graphics.h>

main()

{

int n,i,j,k,gd,gm,dy,dx;

int x,y,temp;

int a[20][2],xi[20];

float slope[20];

clrscr();

printf("\n\n\tEnter the no. of edges of polygon : ");

scanf("%d",&n);

printf("\n\n\tEnter the cordinates of polygon :\n\n\n ");

for(i=0;i<n;i++)

{

printf("\tX%d Y%d : ",i,i);

scanf("%d %d",&a[i][0],&a[i][1]);

}

a[n][0]=a[0][0];

a[n][1]=a[0][1];

detectgraph(&gd,&gm);

initgraph(&gd,&gm,"c:\\tc\\bgi");

/*- draw polygon -*/

for(i=0;i<n;i++)

{

line(a[i][0],a[i][1],a[i+1][0],a[i+1][1]);

}

getch();

for(i=0;i<n;i++)

{

dy=a[i+1][1]-a[i][1];

dx=a[i+1][0]-a[i][0];

if(dy==0) slope[i]=1.0;

if(dx==0) slope[i]=0.0;

if((dy!=0)&(dx!=0))

{

slope[i]=(float) dx/dy;

}

}

for(y=0;y< 480;y++)

{

k=0;

for(i=0;i<n;i++)

{

if( ((a[i][1]<=y)&(a[i+1][1]>y))||

((a[i][1]>y)&(a[i+1][1]<=y)))

{

xi[k]=(int)(a[i][0]+slope[i]*(y-a[i][1]));

k++;

}

}

for(j=0;j<k-1;j++)

for(i=0;i<k-1;i++)

{

if(xi[i]>xi[i+1])

{

temp=xi[i];

xi[i]=xi[i+1];

xi[i+1]=temp;

}

}

setcolor(35);

for(i=0;i<k;i+=2)

{

line(xi[i],y,xi[i+1]+1,y);

getch();

}

}}

OUTPUT:-

PROGRAM-7.

/*Write a program to implement polygon clipping. */

#include<stdio.h>

#include<conio.h>

#include<graphics.h>

void storepoints(int,int,int ,int ,int ,int, int[]);

void main()

{

int gd=DETECT,gm;

int x1,x2,y1,y2,xmax,ymax,xmin,ymin;

int a[10],b[10],xa,xb,ya,yb,flag=0;

float m;

int i;

clrscr();

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

printf("Enter the x and y coordinate");

scanf("%d%d%d%d",&x1,&x2,&y1,&y2);

printf("Enter the maximum value of x and y");

scanf("%d%d%d%d",&xmax,&ymax,&xmin,&ymin);

storepoints(x2,y2,ymin,ymax,xmin,xmax,b);

for(i=1;i<=4;i++)

{

if(a[i]*b[i]==0)

flag=1;

else flag=0;

}

if(flag==1)

{

m=(y2-y1)/(x2-x1);

xa=x1;

ya=y1;

}

if(a[1]==1)

{

ya=ymax;

xa=x1+((1/m)*(ya-y1));

}

else

{

if(a[2]==1)

{

ya=ymin;

xa=x1+((1/m)*(ya-y1));

}

}

if(a[3]==1)

{

xa=xmax;

ya=y1+(m*(xa-x1));

}

if(a[4]==1)

{

xa=xmin;

ya=y1+(m*(xa-x1));

}

else

if(b[1]==1)

{

yb=ymax;

xb=x2+((1/m)*(yb-y2));

}

else if(b[2]==1)

{

yb=ymin;

xb=x2+((1/m)*(yb-y2));

}

else if(b[3]==1)

{

xb=xmax;

yb=y2+((1/m)*(xb-x2));

}

else if(b[4]==1)

{

xb=xmin;

yb=y2+(m*(xb-x2));

}

rectangle(xmin,ymin,xmax,ymax);

line(x1,y1,x2,y2);

delay(5000);

line(xa,ya,xb,yb);

rectangle(xmin,ymin,xmax,ymax);

if(flag==0)

printf("No clipping");

getch();

closegraph();

}

void storepoints(int x1,int y1,int ymax,int xmax,int ymin,int xmin,int c[10])

{

if((y1-ymax)>0)

c[1]=1;

else

c[1]=0;

if((ymin-y1)>0)

c[2]=1;

else

c[2]=0;

if((x1-xmax)>0)

c[3]=1;

else

c[3]=0;

if((xmin-x1)>0)

c[4]=1;

else

c[4]=0;

}

Output:

EXPERIMENT:-8

/*WAP To rotate a triangle about the origin.*/

#include<iostream.h>

#include<conio.h>

#include<graphics.h>

#include<process.h>

#include<math.h>

voidmain()

{

clrscr();

intgraphdriver=DETECT,graphmode;

initgraph(&graphdriver,&graphmode,"...\\bgi");

intx,y,x1,a[3][3];

doubleb[3][3],c[3][3];

cout<"\nEnter Ist coordinates oftriangle:";

cin>a[0][0]>a[1][0];

cout<"\nEnter 2nd coordinates of triangle:";

cin>a[0][1]>a[1][1];

cout<"\nEnter 3rd coordinates oftriangle:";

cin>a[0][2]>a[1][2];

line(a[0][0],a[1][0],a[0][1],a[1][1]); line(a[0][1],a[1][1],a[0][2],a[1][2]); line(a[0][0],a[1][0],a[0][2],a[1][2]); getch();

cleardevice();

cout<"\nEnter angle of rotation:\n";

cin>x;

b[0][0]=b[1][1]=cos((x*3.14)/180); b[0][1]=-sin((x*3.14)/180); b[1][0]=sin((x*3.14)/180); b[2][2]=1; b[2][0]=b[2][1]=b[0][2]=b[1][2]= 0; for(inti=0;i<3;i++)

{

for(intj=0;j<3;j++)

{c[i][j]=0;

for(int k=0; k<3;k++)

{

c[i][j]+=a[i][k]*b[k][j];

} x1=(c[i][j]+0.5); a[i][j]=x1;

}

}

cout<"\n Triangle after rotation is:\n" ;

line(a[0][0],a[1][0],a[0][1],a[1][1]); line(a[0][1],a[1][1],a[0][2],a[1][2]); line(a[0][0],a[1][0],a[0][2],a[1][2]);

getch();

closegraph();

}

OUTPUT:

EXPERIMENT:-9

/*WAP To scale a triangle.*/

#include<iostream.h>

#include<conio.h>

#include<graphics.h>O

voidmain()

{

intgd=DETECT,gm; initgraph(&gd, &gm,""); cleardevice();

intx1,y1,x2,y2,x3,y3,x4,y4;

floatsx,sy;

cout<"Enter the first coordinates of triangle\n";

cin>x1>y1;

cout<"Enterthe second coordinates of triangle\n";

cin>x2>y2;

cout<"Enter the third coordinates of triangle\n";

cin>x3>y3;

intpoly[8]={x1,y1,x2,y2,x3,y3,x1,y1};

cleardevice(); drawpoly(4,poly); getch();

cout<"Enter the scalingfactors\n";

cin>sx>sy; x4=sx*x1-x1; y4=sy*y1-y1;

x1=sx*x1-x4; y1=sy*y1-y4; x2=sx*x2-x4;

y2=sy*y2-y4; x3=sx*x3-x4; y3=sy*y3-y4; poly[0]=x1; poly[1]=y1; poly[2]=x2; poly[3]=y2; poly[4]=x3; poly[5]=y3; poly[6]=x1; poly[7]=y1; getch(); cleardevice(); drawpoly(4,poly); getch(); closegraph();

}

OUTPUT:

EXPERIMENT:-10

/*WAP To Translate a triangle.*/

#include<iostream.h>

#include<conio.h>

#include<graphics.h>

#include<process.h>

#include<math.h>

voidmain()

{

clrscr();

intgraphdriver=DETECT,graphmode;

initgraph(&graphdriver,&graphmode,"...\\bgi");

intx,y,x1,y1,x2,y2,x3,y3;

cout<"\nEnter Ist coordinates oftriangle:";

cin>x1>y1;

cout<"\nEnter 2nd coordinates of triangle:";

cin>x2>y2;

cout<"\nEnter 3rd coordinates oftriangle:";

cin>x3>y3;

cleardevice(); line(x1,y1,x2,y2); line(x2,y2,x3,y3); line(x1,y1,x3,y3); getch(); cleardevice();

cout<"\n Enter translatio factors :\n";

cin>x>y;

x1-=x; y1-=y; x2-=x; y2-=y; x3-=x; y3-=y;

cleardevice(); line(x1,y1,x2,y2); line(x2,y2,x3,y3); line(x1,y1,x3,y3); getch(); closegraph();

}

OUTPUT: