annotate libs/vmath/geom.h @ 35:23e5d274b2a2
added options panel, also added the xib files to the repository as they're needed
author |
John Tsiombikas <nuclear@member.fsf.org> |
date |
Fri, 09 Sep 2011 10:03:42 +0300 |
parents |
|
children |
ff055bff6a15 |
rev |
line source |
nuclear@28
|
1 #ifndef GEOM_H_
|
nuclear@28
|
2 #define GEOM_H_
|
nuclear@28
|
3
|
nuclear@28
|
4 #include "vector.h"
|
nuclear@28
|
5 #include "ray.h"
|
nuclear@28
|
6
|
nuclear@28
|
7 typedef struct {
|
nuclear@28
|
8 vec3_t norm;
|
nuclear@28
|
9 scalar_t d;
|
nuclear@28
|
10 } plane_t;
|
nuclear@28
|
11
|
nuclear@28
|
12 typedef struct {
|
nuclear@28
|
13 vec3_t pos;
|
nuclear@28
|
14 scalar_t rad;
|
nuclear@28
|
15 } sphere_t;
|
nuclear@28
|
16
|
nuclear@28
|
17 typedef struct {
|
nuclear@28
|
18 vec3_t min, max;
|
nuclear@28
|
19 } aabox_t;
|
nuclear@28
|
20
|
nuclear@28
|
21 #ifdef __cplusplus
|
nuclear@28
|
22 extern "C" {
|
nuclear@28
|
23 #endif
|
nuclear@28
|
24
|
nuclear@28
|
25 /* planes are good... you need planes, yes you do */
|
nuclear@28
|
26 plane_t plane_cons(scalar_t nx, scalar_t ny, scalar_t nz, scalar_t d);
|
nuclear@28
|
27 plane_t plane_poly(vec3_t v0, vec3_t v1, vec3_t v2);
|
nuclear@28
|
28 plane_t plane_ptnorm(vec3_t pt, vec3_t normal);
|
nuclear@28
|
29
|
nuclear@28
|
30 plane_t plane_invert(plane_t p);
|
nuclear@28
|
31
|
nuclear@28
|
32 scalar_t plane_signed_dist(plane_t plane, vec3_t pt);
|
nuclear@28
|
33 scalar_t plane_dist(plane_t plane, vec3_t pt);
|
nuclear@28
|
34 vec3_t plane_point(plane_t plane);
|
nuclear@28
|
35
|
nuclear@28
|
36 int plane_ray_intersect(ray_t ray, plane_t plane, scalar_t *pos);
|
nuclear@28
|
37
|
nuclear@28
|
38 /* spheres always come in handy */
|
nuclear@28
|
39 sphere_t sphere_cons(scalar_t x, scalar_t y, scalar_t z, scalar_t rad);
|
nuclear@28
|
40
|
nuclear@28
|
41 int sphere_ray_intersect(ray_t ray, sphere_t sph, scalar_t *pos);
|
nuclear@28
|
42 int sphere_sphere_intersect(sphere_t sph1, sphere_t sph2, scalar_t *pos, scalar_t *rad);
|
nuclear@28
|
43
|
nuclear@28
|
44 #ifdef __cplusplus
|
nuclear@28
|
45 }
|
nuclear@28
|
46
|
nuclear@28
|
47 /* TODO
|
nuclear@28
|
48 class Plane : public plane_t {
|
nuclear@28
|
49 public:
|
nuclear@28
|
50 };
|
nuclear@28
|
51 */
|
nuclear@28
|
52
|
nuclear@28
|
53 #endif
|
nuclear@28
|
54
|
nuclear@28
|
55 #endif /* GEOM_H_ */
|