X-Git-Url: http://git.mutantstargoat.com/user/nuclear/?p=meshfrac;a=blobdiff_plain;f=src%2Fgeom.c;h=67c3c31d23072f3017009c2ca9a190e387faafe8;hp=4e30628fbe6a4c8328a24d04fa987f6e46ff01e7;hb=47382e57c60544c263e6822ea8d76025c758c7b2;hpb=82bf18c392447827912146ba65145500c9c25385 diff --git a/src/geom.c b/src/geom.c index 4e30628..67c3c31 100644 --- a/src/geom.c +++ b/src/geom.c @@ -32,7 +32,7 @@ void poly_normal(const struct poly *poly, cgm_vec3 *n) va = poly->verts[1].pos; cgm_vsub(&va, &poly->verts[0].pos); vb = poly->verts[2].pos; - cgm_vsub(&vb, &poly->verts[2].pos); + cgm_vsub(&vb, &poly->verts[0].pos); cgm_vcross(n, &va, &vb); cgm_vnormalize(n); @@ -138,6 +138,11 @@ int init_poly(struct poly *p) return p->verts ? 0 : -1; } +void destroy_poly(struct poly *p) +{ + dynarr_free(p->verts); +} + /* returns: * 1 -> both inside * 0 -> straddling and clipped @@ -203,7 +208,7 @@ int clip_poly(struct poly *pout, const struct poly *pin, const struct plane *pla int i, nextidx, res = 0, vnum; int edges_clipped = 0; - dynarr_clear(pout->verts); + DYNARR_CLEAR(pout->verts); vnum = dynarr_size(pin->verts); for(i=0; i