#include	"main.h"

tri(v0, v1, v2, v3, s)
     Vertex *v0, *v1, *v2, *v3;
{
  Vector i0, i1, i2, i3;
  Vector n0, n1, n2, n3;

  intersect(v0, v1, &i0, &n0);
  intersect(v0, v2, &i1, &n1);
  intersect(v0, v3, &i2, &n2);

  adapt_tri(i0, i1, i2, n0, n1, n2);
}


quad(v0, v1, v2, v3, s)
     Vertex *v0, *v1, *v2, *v3;
{
  Vector i0, i1, i2, i3;
  Vector n0, n1, n2, n3;

  intersect(v0, v2, &i0, &n0);
  intersect(v0, v3, &i1, &n1);
  intersect(v1, v3, &i2, &n2);
  intersect(v1, v2, &i3, &n3);

  adapt_tri(i0, i1, i2, n0, n1, n2);
  adapt_tri(i0, i2, i3, n0, n2, n3);
}


intersect(v0, v1, pi, ni)
     Vertex *v0, *v1;
     Vector *pi, *ni;
{
  double t;
  Vector p;

  t = v0->fval / (v0->fval - v1->fval);
  p = g3_lerpvec(v0->p, v1->p, t);

  *pi = project(STEP_0, p, f_ngrad(p), f_value(p), MAX_REC);
  *ni = f_ngrad(*pi);
}


output_tri(p0, p1, p2, n0, n1, n2)
	Vector p0, p1, p2;
	Vector n0, n1, n2;
{

  fprintf(stdout, "%g %g %g ", p0.x, p0.y, p0.z);
  fprintf(stdout, "%g %g %g ", p1.x, p1.y, p1.z);
  fprintf(stdout, "%g %g %g ", p2.x, p2.y, p2.z);
  fprintf(stdout, "\n");
}