Sunday, October 7, 2018

Source code for Generalized Animation program using Translation concept in C/C++ Graphics



                                      SOURCE CODE

#include<iostream.h>
#include<graphics.h>
#include<conio.h>
#include<dos.h>
#include<math.h>
void main()
{
  int gd=DETECT;
  int gm;
  initgraph(&gd,&gm,"");
  char ch1='y';
  while(ch1=='y'|| ch1=='Y')
  {
  int n;
  cout<<"\nEnter no. of edges in a polygon:";
  cin>>n;
  int pl[10][2];
  int ch;
  if(n>2)
  {
    cout<<"Enter the co-ordinates of polygon:\n";
    for(int i=0;i<n;i++)
    {
      cout<<"x"<<i<<" y"<<i<<":";
      cin>>pl[i][0]>>pl[i][1];
    }

pl[n][0]=pl[0][0];
pl[n][1]=pl[0][1];

for(i=0;i<n;i++)
{
  line(pl[i][0],pl[i][1],pl[i+1][0],pl[i+1][1]);
}

float mat[2][10];
for(i=0;i<2;i++)
   {
    for(int j=0;j<n;j++)
    {
    mat[i][j] =pl[j][i];
    }
   }

cout<<"1.Tanslation along x-axis!!";
cout<<"\n2.Tanslation along y-axis!!";
cout<<"\n3.Tanslation along both axis!!";
cout<<"\nEnter your choice:";
cin>>ch;
int xt,yt;
int ax[2][2],ay[2][2],axy[2][2];
int add[2][10];
int x,y;
int ln1[10][2];
int t,xn,yn,t1;
switch(ch)
{
  case 1:cout<<"Enter translation factor along x-axis:";
cin>>xt;
    if(xt>0)
    {
 for(x=0;x<=xt;x+=5)
  {
ax[0][0]=x;
ax[1][0]=0;
for(i=0;i<2;i++)
{
  for(int j=0;j<n;j++)
  {
  add[i][j] = mat[i][j]+ax[i][0];
  }
}

for(i=0;i<2;i++)
    {
     for(int j=0;j<n;j++)
      {
      ln1[j][i]=add[i][j];
      }
    }

ln1[n][0]=ln1[0][0];
ln1[n][1]=ln1[0][1];
//cout<<"\nPolygon after translation along x-axis!!";

for(i=0;i<n;i++)
  {
   line(ln1[i][0],ln1[i][1],ln1[i+1][0],ln1[i+1][1]);
  }
 delay(60);

    if(x>=xt)
      getch();
    else
      cleardevice();
    if(x>=xt)
       goto label1;
   }
}

else
{
t=abs(xt);
for(x=0;x<=abs(xt);x+=5)
  {

xn=xt+(t-=5);
ax[0][0]=xn;
ax[1][0]=0;
for(i=0;i<2;i++)
{
  for(int j=0;j<n;j++)
  {
  add[i][j] = mat[i][j]+ax[i][0];
  }
}

for(i=0;i<2;i++)
    {
     for(int j=0;j<n;j++)
      {
      ln1[j][i]=add[i][j];
      }
    }

ln1[n][0]=ln1[0][0];
ln1[n][1]=ln1[0][1];
//cout<<"\nPolygon after translation along x-axis!!";

for(i=0;i<n;i++)
  {
   line(ln1[i][0],ln1[i][1],ln1[i+1][0],ln1[i+1][1]);
  }
 delay(60);

    if(x>=abs(xt))
      getch();
    else
      cleardevice();
    if(x>=abs(xt))
       goto label1;
}
}
break;

case 2:  cout<<"Enter translation factor along y-axis:";
cin>>yt;
      if(yt>0)
      {
for(y=0;y<=yt;y+=5)
  {
ay[0][0]=0;
ay[1][0]=y;
for(i=0;i<2;i++)
{
  for(int j=0;j<n;j++)
  {
  add[i][j] = mat[i][j]+ay[i][0];
  }
  }

for(i=0;i<2;i++)
    {
     for(int j=0;j<n;j++)
     {
      ln1[j][i]=add[i][j];
      }
    }

ln1[n][0]=ln1[0][0];
ln1[n][1]=ln1[0][1];
//cout<<"\nPolygon after translation along y-axis!!";

for(i=0;i<n;i++)
  {
   line(ln1[i][0],ln1[i][1],ln1[i+1][0],ln1[i+1][1]);
  }

  delay(60);

    if(y>=yt)
      getch();
    else
      cleardevice();
    if(y>=yt)
      goto label1;
  }
}

else
{
t=abs(yt);
for(y=0;y<=abs(yt);y+=5)
  {
yn=yt+(t-=5);
ay[0][0]=0;
ay[1][0]=yn;
for(i=0;i<2;i++)
{
  for(int j=0;j<n;j++)
  {
  add[i][j] = mat[i][j]+ay[i][0];
  }
  }

for(i=0;i<2;i++)
    {
     for(int j=0;j<n;j++)
     {
      ln1[j][i]=add[i][j];
      }
    }

ln1[n][0]=ln1[0][0];
ln1[n][1]=ln1[0][1];
//cout<<"\nPolygon after translation along y-axis!!";

for(i=0;i<n;i++)
  {
   line(ln1[i][0],ln1[i][1],ln1[i+1][0],ln1[i+1][1]);
  }

  delay(60);

    if(y>=abs(yt))
      getch();
    else
      cleardevice();
    if(y>=abs(yt))
      goto label1;
  }
}



break;

case 3:cout<<"Enter translation factor along:\n";
cout<<"x-axis:";
cin>>xt;
cout<<"y-axis:";
cin>>yt;

if(xt>0&&yt>0)
{
for(x=0,y=0;x<=xt||y<=yt;)               //for animation
    {
axy[0][0]=x;
axy[1][0]=y;

for(i=0;i<2;i++)
{
  for(int j=0;j<n;j++)
  {
  add[i][j] = mat[i][j]+axy[i][0];
  }
  }

for(i=0;i<2;i++)
     {
     for(int j=0;j<n;j++)
      {
      ln1[j][i]=add[i][j];
      }
     }

ln1[n][0]=ln1[0][0];
ln1[n][1]=ln1[0][1];
//cout<<"\nPolygon after translation along x and y-axes!!";

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

   line(ln1[i][0],ln1[i][1],ln1[i+1][0],ln1[i+1][1]);
  }

  delay(60);

    if(x>=xt&&y>=yt)
       getch();
    else
       cleardevice();
    if(x>=xt&&y>=yt)
       goto label1;

      if(x<xt)
      x+=5;
      if(y<yt)
      y+=5;
   }
}

       else if(xt<0&&yt<0)
{
t=abs(xt);
t1=abs(yt);
for(x=0,y=0;x<=abs(xt)||y<=abs(yt);)               //for animation
    {
if(x<abs(xt))
xn=xt+(t-=5);
if(y<abs(yt))
yn=yt+(t1-=5);

axy[0][0]=xn;
axy[1][0]=yn;

for(i=0;i<2;i++)
{
  for(int j=0;j<n;j++)
  {
  add[i][j] = mat[i][j]+axy[i][0];
  }
  }

for(i=0;i<2;i++)
     {
     for(int j=0;j<n;j++)
      {
      ln1[j][i]=add[i][j];
      }
     }

ln1[n][0]=ln1[0][0];
ln1[n][1]=ln1[0][1];
//cout<<"\nPolygon after translation along x and y-axes!!";

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

   line(ln1[i][0],ln1[i][1],ln1[i+1][0],ln1[i+1][1]);
  }

  delay(60);

    if(x>=abs(xt)&&y>=abs(yt))
       getch();
    else
       cleardevice();
    if(x>=abs(xt)&&y>=abs(yt))
       goto label1;

      if(x<abs(xt))
      x+=5;
      if(y<abs(yt))
      y+=5;
   }
}

else if(xt<0&&yt>0)
{
t=abs(xt);

for(x=0,y=0;x<=abs(xt)||y<=yt;)               //for animation
    {
if(x<abs(xt))
{
xn=xt+(t-=5);
}
axy[0][0]=xn;
axy[1][0]=y;

for(i=0;i<2;i++)
{
  for(int j=0;j<n;j++)
  {
  add[i][j] = mat[i][j]+axy[i][0];
  }
  }

for(i=0;i<2;i++)
     {
     for(int j=0;j<n;j++)
      {
      ln1[j][i]=add[i][j];
      }
     }

ln1[n][0]=ln1[0][0];
ln1[n][1]=ln1[0][1];
//cout<<"\nPolygon after translation along x and y-axes!!";

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

   line(ln1[i][0],ln1[i][1],ln1[i+1][0],ln1[i+1][1]);
  }

  delay(60);

    if(x>=abs(xt)&&y>=yt)
       getch();
    else
       cleardevice();
    if(x>=abs(xt)&&y>=yt)
       goto label1;

      if(x<abs(xt))
      x+=5;
      if(y<yt)
      y+=5;
   }
}

else if(xt>0&&yt<0)
{

t1=abs(yt);
for(x=0,y=0;x<=xt||y<=abs(yt);)               //for animation
    {

if(y<abs(yt))
{
yn=yt+(t1-=5);
}
axy[0][0]=x;
axy[1][0]=yn;

for(i=0;i<2;i++)
{
  for(int j=0;j<n;j++)
  {
  add[i][j] = mat[i][j]+axy[i][0];
  }
  }

for(i=0;i<2;i++)
     {
     for(int j=0;j<n;j++)
      {
      ln1[j][i]=add[i][j];
      }
     }

ln1[n][0]=ln1[0][0];
ln1[n][1]=ln1[0][1];
//cout<<"\nPolygon after translation along x and y-axes!!";

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

   line(ln1[i][0],ln1[i][1],ln1[i+1][0],ln1[i+1][1]);
  }

  delay(60);

    if(x>=xt&&y>=abs(yt))
       getch();
    else
       cleardevice();
    if(x>=xt&&y>=abs(yt))
       goto label1;

      if(x<xt)
      x+=5;
      if(y<abs(yt))
      y+=5;
   }
}


break;

default:cout<<"Your choice is wrong!!";
}
}

 else
 {
  cout<<"\nPlease enter edges greater than 2!!";
 }
label1:
cout<<"\nDo you wanna continue(y/n)??:";
cin>>ch1;
}

closegraph();
}
                               OUTPUT

                       Click here for output

No comments:

Post a Comment

Source code for Happy Diwali Wishing program in C Graphics.

                                           SOURCE CODE #include<graphics.h> #include<stdio.h> #include<conio.h> ...