Thursday, 25 September 2014

Program to generate 3D Object using Polygon Surfaces and then perform 3D transformation.

#include<stdio.h>
#include<conio.h>
#include<graphics.h>
#include<math.h>         
void trans();
//void axis();
void scale();
void rotate();
int maxx,maxy,midx,midy;
/*void axis()
{
//          getch();
  //        cleardevice();
            line(midx,0,midx,maxy);
            line(0,midy,maxx,midy);
}*/
void main()
{
            int ch;
            int gd=DETECT,gm;
            detectgraph(&gd,&gm);
            initgraph(&gd,&gm,"e:\\tc\\bgi");
            printf("\n 1.Translation \n2.Scaling\n 3.Rotation \n 4.exit");
            printf("enter your choice");
            scanf("%d",&ch);
            do
            {
                        switch(ch)
                        {
                                    case 1 :             trans();
                                                            getch();
                                                      //    closegraph();
                                                            break;

                                    case 2 :             scale();
                                                            getch();
                                                      //    closegraph();
                                                            break;

                                    case 3 :             rotate();
                                                            getch();
                                                    //      closegraph();
                                                            break;

                                    case 4 :        break;
                        }
                        printf("enter your choice");
                        scanf("%d",&ch);
            } while(ch<4);
}
void trans()
{
            int x,y,z,o,x1,x2,y1,y2;
            maxx=getmaxx();
            maxy=getmaxy();
            midx=maxx/2;
            midy=maxy/2;
            //axis();
            bar3d(midx+50,midy-100,midx+60,midy-90,10,1);
            printf("Enter translation factor");
            scanf("%d%d",&x,&y);
            printf("After translation:");
            bar3d(midx+x+50,midy-(y+100),midx+x+60,midy-(y+90),10,1);
}
void scale()
{
            int x,y,z,o,x1,x2,y1,y2;
            maxx=getmaxx();
            maxy=getmaxy();
            midx=maxx/2;
            midy=maxy/2;
            //axis();
            bar3d(midx+50,midy-100,midx+60,midy-90,5,1);
            printf("before translation\n");
            printf("Enter scaling factors\n");
            scanf("%d %d %d", &x,&y,&z);
            printf("After scaling\n");
            bar3d(midx+(x*50),midy-(y*100),midx+(x*60),midy-(y*90),5*z,1);
}
void rotate()
{
            int x,y,z,o,x1,x2,y1,y2;
            maxx=getmaxx();
            maxy=getmaxy();
            midx=maxx/2;
            midy=maxy/2;
            //axis();
            bar3d(midx+50,midy-100,midx+60,midy-90,5,1);
            printf("Enter rotating angle");
            scanf("%d",&o);
            x1=50*cos(o*3.14/180)-100*sin(o*3.14/180);
            y1=50*sin(o*3.14/180)+100*cos(o*3.14/180);
            x2=60*cos(o*3.14/180)-90*sin(o*3.14/180);
            y2=60*sin(o*3.14/180)+90*cos(o*3.14/180);
   //       axis();
    //      printf("After rotation about z axis");
    //      bar3d(midx+x1,midy-y1,midx+x2,midy-y2,5,1);
            //axis();
            printf("After rotation  about x axis");
            bar3d(midx+50,midy-x1,midx+60,midy-x2,5,1);
            //axis();
            printf("After rotation about yaxis");
            bar3d(midx+x1,midy-100,midx+x2,midy-90,5,1);

}

No comments:

Post a Comment