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

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

/* point_t
 *
 * A point in 3-space.
 */

typedef struct point_s
{
	real_t	x, y, z;
}
point_t;

#define PointNull	((point_t *) NULL)


#define PointGet(P, X, Y, Z)	{X = (P)->x; Y = (P)->y; Z = (P)->z;}
#define PointSet(P, X, Y, Z)	{(P)->x = X; (P)->y = Y; (P)->z = Z;}

#define PointZero	(Point(REAL_ZERO, REAL_ZERO, REAL_ZERO))


point_t		*Point PROTO((real_t, real_t, real_t)),
		*PointLet PROTO((point_t *, point_t *)),
		*PointCopy PROTO((point_t *)),
		*PointTransform PROTO((point_t *, point_t *, matrix_t *));

void		PointFree PROTO((point_t *)),
		PointPrint PROTO((FILE *, point_t *));
