C Program to implement 3-D rotation with respect to x-axis, y-axis and z-axis

C Program to implement 3-D rotation with respect to x-axis, y-axis and z-axis (wire frame model of a cube). Use appropriate data structures to manipulate the wire frame model.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
#include <stdio.h>
#include <graphics.h>
#include <math.h>
#include <stdlib.h>
#include <dos.h>
#include <conio.h>
 
#define ORG -50
 
double face1[5][2] = {
{ 250, 125 },
{ 350, 125 },
{ 350, 225 },
{ 250, 225 },
{ 250, 125 }
};
 
double face2[5][2] = {
{ 250+ORG, 125-ORG },
{ 350+ORG, 125-ORG },
{ 350+ORG, 225-ORG },
{ 250+ORG, 225-ORG },
{ 250+ORG, 125-ORG }
};
 
double angle = 5.0 * M_PI / 180;
double midx1, midy1, midx2, midy2;
 
void rotate (void)
{
int i;
for (i=0; i<5; i++)
{
double xnew, ynew;
 
xnew = midx1 + (face1[i][0] - midx1) * cos (angle) -
(face1[i][1] - midy1) * sin (angle);
ynew = midy1 + (face1[i][0] - midx1) * sin (angle) +
(face1[i][1] - midy1) * cos (angle);
 
face1[i][0] = xnew;
face1[i][1] = ynew;
 
xnew = midx2 + (face2[i][0] - midx2) * cos (angle) -
(face2[i][1] - midy2) * sin (angle);
ynew = midy2 + (face2[i][0] - midx2) * sin (angle) +
(face2[i][1] - midy2) * cos (angle);
 
face2[i][0] = xnew;
face2[i][1] = ynew;
}
 
cleardevice();
 
for (i=0; i<4; i++)
{
setcolor(7);
line (face1[i][0], face1[i][1], face1[i+1][0], face1[i+1][1]);
setcolor(8);
line (face2[i][0], face2[i][1], face2[i+1][0], face2[i+1][1]);
setcolor(9);
line (face1[i][0], face1[i][1], face2[i][0], face2[i][1]);
}
 
delay (125);
}
 
void main()
{
int gd = DETECT, gm;
 
midx1 = (face1[0][0] + face1[1][0]) / 2.0;
midy1 = (face1[1][1] + face1[2][1]) / 2.0;
midx2 = (face2[0][0] + face2[1][0]) / 2.0;
midy2 = (face2[1][1] + face2[2][1]) / 2.0;
 
initgraph (&gd, &gm, "..\\bgi");
 
while (!kbhit())
rotate();
 
closegraph();
}
Editorial Team
Editorial Team

We are a group of young techies trying to provide the best study material for all Electronic and Computer science students. We are publishing Microcontroller projects, Basic Electronics, Digital Electronics, Computer projects and also c/c++, java programs.

Leave a Reply

Your email address will not be published. Required fields are marked *

Get the latest updates on your inbox

Be the first to receive the latest updates from Codesdoc by signing up to our email subscription.

    StudentProjects.in