Wednesday, March 9, 2016

Polygon's Program

//                                         This Program is created by "Arunendra Kumar"//
#include<stdio.h>
#include<conio.h>
#include<graphics.h>
#include<stdlib.h>
#include<math.h>
#include<dos.h>
void main()
{
again:
int gd=DETECT,gm,n;
double a[10][10],b[10][10],c[10][10];
int i,j,k,m,x1[10],y1[10],x[10],y[10],sx,sy;
char ch;
initgraph(&gd,&gm,"c:\\tc\\bgi");
printf("\nEnter the no of sides : ");
scanf("%d",&n);
if(n<3)
{
printf("\nPolygon can not form\n");
goto exit;
getch();
}
else
{
for(i=1;i<=n;i++)
{
printf("\nEnter the co-ordinates (x%d,y%d) : ",i,i);
scanf("%d%d",&x[i],&y[i]);
}
cleardevice();
for(i=1;i<n;i++)
{
setcolor(RED);
line(320+x[i],240-y[i],320+x[i+1],240-y[i+1]);
}
setcolor(RED);
line(320+x[1],240-y[1],320+x[n],240-y[n]);
}
getch();
//again:
printf("\nWhat you want to do : \n");
printf("\n1.Scaling");
printf("\n2.Translating");
printf("\n3.Reflection");
printf("\n4.Rotation");
printf("\n5.Shearing");
printf("\n6.Exit");
printf("\nPlease enter your choice : ");
scanf("%d",&m);
switch(m)
{
case 1:
{
printf("\nEnter the scaling points : ");
scanf("%d%d",&sx,&sy);
a[1][1]=sx;
a[1][2]=0;
a[1][3]=0;
a[2][1]=0;
a[2][2]=sy;
a[2][3]=0;
a[3][1]=0;
a[3][2]=0;
a[3][3]=1;
break;
}
case 2:
{
int tx,ty;
printf("\nEnter the translation points : ");
scanf("%d%d",&tx,&ty);
a[1][1]=1;
a[1][2]=0;
a[1][3]=tx;
a[2][1]=0;
a[2][2]=1;
a[2][3]=ty;
a[3][1]=0;
a[3][2]=0;
a[3][3]=1;
break;
}
case 3:
{
int r;
printf("\nWhich direction");
printf("\n1.Reflection in x direction ");
printf("\n2.Reflection in y direction ");
printf("\n3.Reflection about origin");
printf("\nEnter choice : ");
scanf("%d",&r);
switch(r)
{
case 1:
{
a[1][1]=1;
a[1][2]=0;
a[1][3]=0;
a[2][1]=0;
a[2][2]=-1;
a[2][3]=0;
a[3][1]=0;
a[3][2]=0;
a[3][3]=1;
break;
}
case 2:
{
a[1][1]=-1;
a[1][2]=0;
a[1][3]=0;
a[2][1]=0;
a[2][2]=1;
a[2][3]=0;
a[3][1]=0;
a[3][2]=0;
a[3][3]=1;
break;
}
case 3:
{
a[1][1]=-1;
a[1][2]=0;
a[1][3]=0;
a[2][1]=0;
a[2][2]=-1;
a[2][3]=0;
a[3][1]=0;
a[3][2]=0;
a[3][3]=1;
break;
}
}
break;
}
case 4:
{
int q;
double s,o;
printf("\nEnter the angle : ");
scanf("%lf",&o);
s=(o*(3.14/180));
printf("\nWhich direction :");
printf("\n1.Clockwise direction ");
printf("\n2.Anticlockwise direction ");
printf("\nEnter choice : ");
scanf("%d",&q);
switch(q)
{
case 1:
{
a[1][1]=cos(s);
a[1][2]=sin(s);
a[1][3]=0;
a[2][1]=-sin(s);
a[2][2]=cos(s);
a[2][3]=0;
a[3][1]=0;
a[3][2]=0;
a[3][3]=1;
break;
}
case 2:
{
a[1][1]=cos(s);
a[1][2]=-sin(s);
a[1][3]=0;
a[2][1]=sin(s);
a[2][2]=cos(s);
a[2][3]=0;
a[3][1]=0;
a[3][2]=0;
a[3][3]=1;
break;
}
}
break;
}
case 5:
{
int shx,shy;
printf("\nEnter the shearing points : ");
scanf("%d%d",&shx,&shy);
a[1][1]=1;
a[1][2]=shx;
a[1][3]=0;
a[2][1]=shy;
a[2][2]=1;
a[2][3]=0;
a[3][1]=0;
a[3][2]=0;
a[3][3]=1;
break;
}
exit: case 6:
{
while(!kbhit())
{
++i;
cleardevice();
setcolor(i);
settextstyle(7,0,8);
outtextxy(i,100,"Good Bye");
delay(8);
}
getch();
exit (0);

}
default :
{
printf("\nYou are entered Wrong Keyword");
break;
}
}
for(i=1;i<=n;i++)
{
b[1][i]=x[i];
b[2][i]=y[i];
b[3][i]=1;
}
for(i=1;i<=3;i++)
{
   for(j=1;j<=n;j++)
   {
c[i][j]=0;
for(k=1;k<=3;k++)
{
     c[i][j]=c[i][j]+a[i][k]*b[k][j];
}
   }
}
for(i=1;i<=n;i++)
{
x1[i]=c[1][i];
y1[i]=c[2][i];
}
for(i=1;i<n;i++)
{
setcolor(GREEN);
line(320+x1[i],240-y1[i],320+x1[i+1],240-y1[i+1]);
}
setcolor(GREEN);
line(320+x1[1],240-y1[1],320+x1[n],240-y1[n]);
getch();
printf("\nAre you want make new graph :y/n ");
fflush(stdin);
scanf("%c",&ch);
if(ch=='Y'||ch=='y')
{
cleardevice();
goto again;
}
else
{       cleardevice();
goto exit;
}

getch();
}

No comments:

Post a Comment