3. 3D Rotation Program Using C Programming

#include<stdio.h>

#include<conio.h>

#include<math.h>

#include<process.h>

#include<graphics.h>

 

int x1,x2,y1,y2,mx,my,depth;

void draw();

void rotate();

 

void main()

{

    int gd=DETECT,gm,c;

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

    printf("\n3D Transformation Rotating\n\n");

    printf("\nEnter 1st top value(x1,y1):");

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

    printf("Enter right bottom value(x2,y2):");

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

    depth=(x2-x1)/4;

    mx=(x1+x2)/2;

    my=(y1+y2)/2;

    draw();

    getch();

    cleardevice();

    rotate();

    getch();

}

 

void draw()

{

    bar3d(x1,y1,x2,y2,depth,1);

}

 

void rotate()

{

    float t;

    int a1,b1,a2,b2,dep;

    printf("Enter the angle to rotate=");

    scanf("%f",&t);

    t=t*(3.14/180);

    a1=mx+(x1-mx)*cos(t)-(y1-my)*sin(t);

    a2=mx+(x2-mx)*cos(t)-(y2-my)*sin(t);

    b1=my+(x1-mx)*sin(t)-(y1-my)*cos(t);

    b2=my+(x2-mx)*sin(t)-(y2-my)*cos(t);

    if(a2>a1)

       dep=(a2-a1)/4;

    else

      dep=(a1-a2)/4;

    bar3d(a1,b1,a2,b2,dep,1);

    setcolor(5);

    //draw();

}