
#ifndef _math_isosurf_implicit_h
#define _math_isosurf_implicit_h

typedef struct point {		   /* a three-dimensional point */
    double x, y, z;		   /* its coordinates */
} POINT;

typedef struct vertex {		   /* surface vertex */
    POINT position, normal;	   /* position and surface normal */
} VERTEX;

typedef struct vertices {	   /* list of vertices in polygonization */
    int count, max;		   /* # vertices, max # allowed */
    VERTEX *ptr;		   /* dynamically allocated */
} VERTICES;

#define TET	0  /* use tetrahedral decomposition */
#define NOTET	1  /* no tetrahedral decomposition  */

extern "C" {
    char * polygonize(double(*function)(double,double,double),
                      double size, int bounds,
                      double x, double y, double z,
                      int(*triproc)(int,int,int,VERTICES), int mode);
};

#endif
