/* * CS5600 University of Utah * Charles McGarvey * mcgarvey@eng.utah.edu */ #include "tri.h" vec_t tri_barycentric(const tri_t* t, vec_t v) { vec_t c = VEC_ZERO; scal_t denom = (t->b.v.y - t->c.v.y) * (t->a.v.x - t->c.v.x) + (t->c.v.x - t->b.v.x) * (t->a.v.y - t->c.v.y); c.x = ((t->b.v.y - t->c.v.y) * (v.x - t->c.v.x) + (t->c.v.x - t->b.v.x) * (v.y - t->c.v.y)) / denom; c.y = ((t->c.v.y - t->a.v.y) * (v.x - t->c.v.x) + (t->a.v.x - t->c.v.x) * (v.y - t->c.v.y)) / denom; c.z = S(1.0) - c.x - c.y; return c; }