/*
 *	Header file containing types for 3-D vector image
 *	plotting with hidden line removal
 */

/*
 *	A point in 3-space
 */
typedef struct vertex {
	double x, y, z;
} vertex_t;

/*
 *	One element of a list of line segments to clip and plot
 */
typedef struct linelist {
	struct linelist *link;
	vertex_t P, Q;
} linelist_t;

/*
 *	One element of a list of triangular obscuring polygons
 */
typedef struct trilist {
	struct trilist *link;
	vertex_t A, B, C;
	double a, b, c, h;
} trilist_t;

/* list terminator */
#define NULLLINE ((linelist_t *) 0)

/* list terminator */
#define NULLTRI ((trilist_t *) 0)

/* The lists which everybody mangles */
extern trilist_t *trilist;
extern linelist_t *linelist;
