/* bbox.h  (Steve Hill)  1.1  3/9/90$ */

/* bbox.h
 *
 * Header file for bbox.c
 */

/* bbox_t
 *
 * Bounding box defines the limits along each axis of a solid.
 */

typedef struct bbox_s
{
	real_t	x_min, x_max,
		y_min, y_max,
		z_min, z_max;
}
bbox_t;

#define BboxNull	((bbox_t *) NULL)

bbox_t		*Bbox PROTO((real_t, real_t, real_t, real_t, real_t, real_t)),
		*BboxCopy PROTO ((bbox_t *)),
		*BboxLet PROTO ((bbox_t *, bbox_t *));

bool_t		BboxIntersect PROTO((ray_t *, bbox_t *));

void		BboxFree PROTO((bbox_t *)),
		BboxPrint PROTO((FILE *, bbox_t *)),
		BboxJoin PROTO((bbox_t *, bbox_t *, bbox_t *)),
		BboxMeet PROTO((bbox_t *, bbox_t *, bbox_t *)),
		BboxAtom PROTO((bbox_t *, quadric_t *, quadric_sort_t)),
		BboxQuadratic PROTO((real_t *, real_t *, real_t, real_t, real_t)),
		BboxCalculate PROTO((bbox_t *, solid_t *));
