started on the fracture code
[meshfrac] / src / geom.c
1 #include "geom.h"
2
3 float plane_dist(const struct plane *p, const cgm_vec3 *pt)
4 {
5         return fabs(plane_sdist(p, pt));
6 }
7
8 float plane_sdist(const struct plane *p, const cgm_vec3 *pt)
9 {
10         cgm_vec3 v = p->pt;
11         cgm_vsub(&v, pt);
12         return cgm_vdot(&v, &p->norm);
13 }
14
15 void midplane(struct plane *p, const cgm_vec3 *a, const cgm_vec3 *b)
16 {
17         p->norm = *b;
18         cgm_vsub(&p->norm, a);
19         cgm_vnormalize(&p->norm);
20         p->pt.x = a->x + p->norm.x * 0.5f;
21         p->pt.y = a->y + p->norm.y * 0.5f;
22         p->pt.z = a->z + p->norm.z * 0.5f;
23 }