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

/* hitdata.h
 *
 * Header for hitdata.c
 *
 * The hitdata structure is used to keep information on
 * a particular ray-solid intersection.  This saves them
 * being re-computed.
 */

typedef
struct hit_data_s
{
	point_t		*point;		/* Point of intersection	*/
	solid_t		*solid;		/* Solid atom hit		*/
	vector_t	*normal;	/* Surface normal at point	*/
}
hit_data_t;

#define HitDataNull	((hit_data_t *) NULL)
#define HitDataPtrNull	((hit_data_t **) NULL)

hit_data_t	*HitData PROTO((solid_t *, point_t *, vector_t *)),
		*HitDataLet PROTO((hit_data_t *, solid_t *,
				   point_t *, vector_t *)),
		*HitDataCalculate PROTO((hit_data_t *, hit_info_t *));

void		HitDataPrint PROTO((FILE *, hit_data_t *)),
		HitDataFree PROTO((hit_data_t *)),
		HitDataFreeParts PROTO((hit_data_t *));
