15. 3D Rotation Program Using C Programming

/*3D Rotation Example Program In C*/
#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();
}