#define POLY_NMAX 8                     /* max #sides to a polygon */

typedef struct {                        /* A POLYGON VERTEX */
    double u, v;                        /* texture space coords */
    double sx, sy;                      /* screen space coords */
    double x, y, z;                     /* object space coords */
} poly_vert;

typedef struct {                        /* A POLYGON */
    int n;                              /* number of sides */
    poly_vert vert[POLY_NMAX];          /* vertices */
} poly;

void ERROR(char *str);
int pmap_poly(poly *p,
              double ST[3][3]);
void pmap_param(poly *g,
                double TO[3][4]);        /* texture to object transform */
int pmap_quad_rect(double u0, double v0, double u1, double v1,          /* bounds of rectangle */
                   double quad[4][2],              /* vertices of quadrilateral */
                   double QR[3][3]);
int pmap_square_quad(double quad[4][2],      /* vertices of quadrilateral */
                     double SQ[3][3]);
