1
#include <stdio.h>
2
#include <stdlib.h>
3
4
#include "matrix.h"
5
6
int main(int argc, char *argv[])
7
{
8
	Matrix4 foo, a, b;
9
	Vector4 ipoints[32], opoints[32];
10
	int i;
11
	double theta, step;
12
13
	matrix4_identity(&foo);
14
printf("The Identity Matrix\n");
15
	matrix4_print(&foo);
16
17
printf("The Translate Matrix\n");
18
	matrix4_translate(&foo, 1., 2., 3.);
19
	matrix4_print(&foo);
20
21
printf("The X Rotation Matrix\n");
22
	matrix4_rotateXYZ(&foo, 3.1415927, 0, 0);
23
	matrix4_print(&foo);
24
25
26
printf("The Z Rotation Matrix\n");
27
	matrix4_rotateXYZ(&foo, 0, 0, 3.1415927);
28
	matrix4_print(&foo);
29
30
printf("The Y Rotation Matrix\n");
31
	matrix4_rotateXYZ(&foo, 0, 3.1415927, 0);
32
	matrix4_print(&foo);
33
34
printf("The Un-Rotated Circle\n");
35
	theta=0.;
36
	step=3.1415927*2./32.;
37
	for(i=0;i<32;i++)
38
	{
39
		ipoints[i].element[0]=0.;
40
		ipoints[i].element[1]=cos(theta);
41
		ipoints[i].element[2]=sin(theta);
42
		ipoints[i].element[3]= 1.;
43
		fprintf(stdout,"% 0.4f % 0.4f % 0.4f %0.4f\n", ipoints[i].element[0], ipoints[i].element[1],ipoints[i].element[2],ipoints[i].element[3]);
44
		theta += step;
45
	}
46
47
//	matrix4_identity(&foo);
48
	matrix4_rotateZ(&a, 0.78539816);
49
	matrix4_rotateX(&b, 0.0);
50
	matrix4_multiply(&a, &b, &foo);
51
printf("The Matrix A\n");
52
	matrix4_print(&a);
53
printf("The Matrix B\n");
54
	matrix4_print(&b);
55
printf("The Matrix Result\n");
56
	matrix4_print(&foo);
57
58
printf("The Rotated Circle\n");
59
	for(i=0;i<32;i++)
60
	{
61
		vector_multiply(&foo, &ipoints[i], &opoints[i]);
62
		fprintf(stdout,"% 0.4f % 0.4f % 0.4f\n", opoints[i].element[0], opoints[i].element[1],opoints[i].element[2]);
63
		theta += step;
64
	}
65
66
	exit(EXIT_SUCCESS);
67
68
}