int torus_classify(Prim *p, Vector3 q) { Vector3 w = v3_m4mult(q, p->ti); Real d = v3_norm(w); return (d < 1)? PRIM_IN : ((d > 1)? PRIM_OUT : PRIM_ON); }
Vector3 s4_n3xform(Stack4 *s, Vector3 nv) { return v3_m4mult(nv, m4_transpose(*s->itop)); }
Vector3 torus_gradient(Prim *p, Vector3 q) { Vector3 w = v3_m4mult(q, p->ti); return v3_m3mult(v3_scale(2., w), m4_transpose(p->ti)); }
Vector3 s4_v3xform(Stack4 *s, Vector3 v) { return v3_m4mult(v, *s->mtop); }