Blame


1 5ba841df 2005-01-04 devnull #ifndef _GEOMETRY_H_
2 5ba841df 2005-01-04 devnull #define _GEOMETRY_H_ 1
3 5ba841df 2005-01-04 devnull #if defined(__cplusplus)
4 5ba841df 2005-01-04 devnull extern "C" {
5 5ba841df 2005-01-04 devnull #endif
6 5ba841df 2005-01-04 devnull
7 5ba841df 2005-01-04 devnull
8 5ba841df 2005-01-04 devnull AUTOLIB(geometry)
9 5ba841df 2005-01-04 devnull
10 5ba841df 2005-01-04 devnull typedef double Matrix[4][4];
11 5ba841df 2005-01-04 devnull typedef struct Point3 Point3;
12 5ba841df 2005-01-04 devnull typedef struct Quaternion Quaternion;
13 5ba841df 2005-01-04 devnull typedef struct Space Space;
14 5ba841df 2005-01-04 devnull struct Point3{
15 5ba841df 2005-01-04 devnull double x, y, z, w;
16 5ba841df 2005-01-04 devnull };
17 5ba841df 2005-01-04 devnull struct Quaternion{
18 5ba841df 2005-01-04 devnull double r, i, j, k;
19 5ba841df 2005-01-04 devnull };
20 5ba841df 2005-01-04 devnull struct Space{
21 5ba841df 2005-01-04 devnull Matrix t;
22 5ba841df 2005-01-04 devnull Matrix tinv;
23 5ba841df 2005-01-04 devnull Space *next;
24 5ba841df 2005-01-04 devnull };
25 5ba841df 2005-01-04 devnull /*
26 5ba841df 2005-01-04 devnull * 3-d point arithmetic
27 5ba841df 2005-01-04 devnull */
28 5ba841df 2005-01-04 devnull Point3 add3(Point3 a, Point3 b);
29 5ba841df 2005-01-04 devnull Point3 sub3(Point3 a, Point3 b);
30 5ba841df 2005-01-04 devnull Point3 neg3(Point3 a);
31 5ba841df 2005-01-04 devnull Point3 div3(Point3 a, double b);
32 5ba841df 2005-01-04 devnull Point3 mul3(Point3 a, double b);
33 5ba841df 2005-01-04 devnull int eqpt3(Point3 p, Point3 q);
34 5ba841df 2005-01-04 devnull int closept3(Point3 p, Point3 q, double eps);
35 5ba841df 2005-01-04 devnull double dot3(Point3 p, Point3 q);
36 5ba841df 2005-01-04 devnull Point3 cross3(Point3 p, Point3 q);
37 5ba841df 2005-01-04 devnull double len3(Point3 p);
38 5ba841df 2005-01-04 devnull double dist3(Point3 p, Point3 q);
39 5ba841df 2005-01-04 devnull Point3 unit3(Point3 p);
40 5ba841df 2005-01-04 devnull Point3 midpt3(Point3 p, Point3 q);
41 5ba841df 2005-01-04 devnull Point3 lerp3(Point3 p, Point3 q, double alpha);
42 5ba841df 2005-01-04 devnull Point3 reflect3(Point3 p, Point3 p0, Point3 p1);
43 5ba841df 2005-01-04 devnull Point3 nearseg3(Point3 p0, Point3 p1, Point3 testp);
44 5ba841df 2005-01-04 devnull double pldist3(Point3 p, Point3 p0, Point3 p1);
45 5ba841df 2005-01-04 devnull double vdiv3(Point3 a, Point3 b);
46 5ba841df 2005-01-04 devnull Point3 vrem3(Point3 a, Point3 b);
47 5ba841df 2005-01-04 devnull Point3 pn2f3(Point3 p, Point3 n);
48 5ba841df 2005-01-04 devnull Point3 ppp2f3(Point3 p0, Point3 p1, Point3 p2);
49 5ba841df 2005-01-04 devnull Point3 fff2p3(Point3 f0, Point3 f1, Point3 f2);
50 5ba841df 2005-01-04 devnull Point3 pdiv4(Point3 a);
51 5ba841df 2005-01-04 devnull Point3 add4(Point3 a, Point3 b);
52 5ba841df 2005-01-04 devnull Point3 sub4(Point3 a, Point3 b);
53 5ba841df 2005-01-04 devnull /*
54 5ba841df 2005-01-04 devnull * Quaternion arithmetic
55 5ba841df 2005-01-04 devnull */
56 5ba841df 2005-01-04 devnull void qtom(Matrix, Quaternion);
57 5ba841df 2005-01-04 devnull Quaternion mtoq(Matrix);
58 5ba841df 2005-01-04 devnull Quaternion qadd(Quaternion, Quaternion);
59 5ba841df 2005-01-04 devnull Quaternion qsub(Quaternion, Quaternion);
60 5ba841df 2005-01-04 devnull Quaternion qneg(Quaternion);
61 5ba841df 2005-01-04 devnull Quaternion qmul(Quaternion, Quaternion);
62 5ba33c04 2005-03-28 devnull Quaternion p9qdiv(Quaternion, Quaternion);
63 5ba841df 2005-01-04 devnull Quaternion qunit(Quaternion);
64 5ba841df 2005-01-04 devnull Quaternion qinv(Quaternion);
65 5ba841df 2005-01-04 devnull double qlen(Quaternion);
66 5ba841df 2005-01-04 devnull Quaternion slerp(Quaternion, Quaternion, double);
67 5ba841df 2005-01-04 devnull Quaternion qmid(Quaternion, Quaternion);
68 5ba841df 2005-01-04 devnull Quaternion qsqrt(Quaternion);
69 5ba841df 2005-01-04 devnull void qball(Rectangle, Mouse *, Quaternion *, void (*)(void), Quaternion *);
70 5ba841df 2005-01-04 devnull /*
71 5ba841df 2005-01-04 devnull * Matrix arithmetic
72 5ba841df 2005-01-04 devnull */
73 5ba841df 2005-01-04 devnull void ident(Matrix);
74 5ba841df 2005-01-04 devnull void matmul(Matrix, Matrix);
75 5ba841df 2005-01-04 devnull void matmulr(Matrix, Matrix);
76 5ba841df 2005-01-04 devnull double determinant(Matrix);
77 5ba841df 2005-01-04 devnull void adjoint(Matrix, Matrix);
78 5ba841df 2005-01-04 devnull double invertmat(Matrix, Matrix);
79 5ba841df 2005-01-04 devnull /*
80 5ba841df 2005-01-04 devnull * Space stack routines
81 5ba841df 2005-01-04 devnull */
82 5ba841df 2005-01-04 devnull Space *pushmat(Space *);
83 5ba841df 2005-01-04 devnull Space *popmat(Space *);
84 5ba841df 2005-01-04 devnull void rot(Space *, double, int);
85 5ba841df 2005-01-04 devnull void qrot(Space *, Quaternion);
86 5ba841df 2005-01-04 devnull void scale(Space *, double, double, double);
87 5ba841df 2005-01-04 devnull void move(Space *, double, double, double);
88 5ba841df 2005-01-04 devnull void xform(Space *, Matrix);
89 5ba841df 2005-01-04 devnull void ixform(Space *, Matrix, Matrix);
90 5ba841df 2005-01-04 devnull void look(Space *, Point3, Point3, Point3);
91 5ba841df 2005-01-04 devnull int persp(Space *, double, double, double);
92 5ba841df 2005-01-04 devnull void viewport(Space *, Rectangle, double);
93 5ba841df 2005-01-04 devnull Point3 xformpoint(Point3, Space *, Space *);
94 5ba841df 2005-01-04 devnull Point3 xformpointd(Point3, Space *, Space *);
95 5ba841df 2005-01-04 devnull Point3 xformplane(Point3, Space *, Space *);
96 5ba841df 2005-01-04 devnull #define radians(d) ((d)*.01745329251994329572)
97 5ba33c04 2005-03-28 devnull
98 5ba33c04 2005-03-28 devnull #ifndef NOPLAN9DEFINES
99 5ba33c04 2005-03-28 devnull #define qdiv p9qdiv /* for NetBSD */
100 5ba33c04 2005-03-28 devnull #endif
101 5ba33c04 2005-03-28 devnull
102 5ba841df 2005-01-04 devnull #if defined(__cplusplus)
103 5ba841df 2005-01-04 devnull }
104 5ba841df 2005-01-04 devnull #endif
105 5ba841df 2005-01-04 devnull #endif