/* Steven Andrews, 8/25/02 */
/* See documentation called Plot3D doc */
/* Copyright 2003 by Steven Andrews.  Permission is granted
   for non-commercial use of and modifications to the code. */

typedef struct Point3D {
	float r[3];
	float p[3];
	float o[3];
	float s[3];
	float *r2p;
	}* Pt3Dptr;

typedef struct Drawing3D {
	int max;
	int n;
	Pt3Dptr *pt;
	char *col;
	int *line;
	float *r2p;
	}* Draw3Dptr;

int Init3DPlot(int stereo,float dist,float sep);
Pt3Dptr Pt3DAlloc();
void Pt3DFree(Pt3Dptr pt);
void PlotPt3D(Pt3Dptr pt);
void PlotLine3D(Pt3Dptr pt);
void PlotStr3D(Pt3Dptr pt,char *s);
void Rotate3D(char c,float alpha);
void UpdatePt3D(Pt3Dptr pt,int internal);
Draw3Dptr Draw3DAlloc(int n,float *r2p);
void Draw3DFree(Draw3Dptr dr);
int DrawingPt3D(Draw3Dptr dr,float x,float y,float z,int rel,int line,int col);
void PlotDraw3D(Draw3Dptr dr);
void UpdateDraw3D(Draw3Dptr dr,int internal);
float *Draw3DOut(Draw3Dptr dr,char c);
int Draw3D2ps(Draw3Dptr dr,int zdiv,char *name,int append);
