hypercube-0.3.1
[polytopiary:hypercube.git] / geometry.h
1 #ifndef GEOMETRY_H
2 #define GEOMETRY_H 1
3 /* coordinate geometry */
4
5 #include "fixed.h"
6
7 typedef fixed vector2[2];
8 typedef fixed vector3[3];
9 typedef fixed vector4[4];
10 typedef fixed matrix44[4][4];
11
12 void v2_add(vector2 *p, vector2 *q, vector2 *to);
13 void v2_sub(vector2 *p, vector2 *q, vector2 *to);
14 int v2_rturn(vector2 *p, vector2 *q, vector2 *r);
15
16 void v3_add(vector3 *p, vector3 *q, vector3 *to);
17 void v3_sub(vector3 *p, vector3 *q, vector3 *to);
18 void v3_project(vector3 *p, fixed d, vector2 *to);
19
20 void v4_add(vector4 *p, vector4 *q, vector4 *to);
21 void v4_sub(vector4 *p, vector4 *q, vector4 *to);
22 void v4_project(vector4 *p, fixed d, vector3 *to);
23
24 void m44_mul(matrix44 *p, matrix44 *q, matrix44 *to);
25 void v4m44_mul(vector4 *v, matrix44 *m, vector4 *to);
26 void m44_id(matrix44 *m);
27 void m44_rot1(matrix44 *m, int d1, int d2, int a);
28 void m44_rot6(matrix44 *m, int a01, int a02, int a03,
29                            int a12, int a13, int a23);
30
31 /* EOF */
32 #endif