home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Fish 'n' More 2
/
fishmore-publicdomainlibraryvol.ii1991xetec.iso
/
fish
/
math
/
3dplot
/
src
/
data.h
< prev
next >
Wrap
Text File
|
1991-01-19
|
3KB
|
153 lines
/* Constants */
#define NOTELEN 80
#define EQLEN 80
#define NUMINDVAR 9
/* FORM and CHUNK ID's */
#define ID_3DPL MakeID('3','D','P','L')
#define ID_DRAW MakeID('D','R','A','W')
#define ID_AXES MakeID('A','X','E','S')
#define ID_TICS MakeID('T','I','C','S')
#define ID_NOTE MakeID('N','O','T','E')
#define ID_EQUN MakeID('E','Q','U','N')
#define ID_TYPE MakeID('T','Y','P','E')
/* Structure definitions */
typedef struct {
DOUBLE RotationX, RotationY,
RotationZ; /* Rotation about each axis
in degrees */
LONG OriginX, OriginY; /* Location of origin in window
by pixels */
DOUBLE ProjPlane, ViewDist, Scale; /* Location of projection plane along
the default Z-axis, viewer distance
from the projection plane in axis
units, & pixels per axis unit */
DOUBLE LineSpacingX, LineSpacingY; /* Distance between grid lines
in axis units */
DOUBLE PlotXmin, PlotXmax,
PlotYmin, PlotYmax; /* Plot region in X-Y plane in
axis units */
DOUBLE PlotPrecisionX,
PlotPrecisionY; /* Distance between each plotted point
along grid lines in axis units */
} DrawData;
typedef struct {
DOUBLE AxesXmin, AxesXmax,
AxesYmin, AxesYmax,
AxesZmin, AxesZmax; /* Axes range in 3 directions in
axis units */
DOUBLE AxesPrecision; /* Distance between each plotted point
along each axis in axis units */
} AxesData;
typedef struct {
DOUBLE TicX, TicY, TicZ; /* Distance between tic marks in
axis units */
ULONG NumTicX, NumTicY, NumTicZ; /* Number of tics between axis number
labels */
} TicData;
typedef struct {
UBYTE DependVar; /* Dependent variable */
UBYTE IndependVar[NUMINDVAR]; /* Independent variables */
TEXT Equation[EQLEN]; /* Function DependVar = "F(IndependVar)" */
} EqInfo;
typedef struct {
UBYTE Surface, AxesType,
RotationOrder, Pad0; /* Surface type, axes type, rotation
order, & pad */
} PlotInfo;
/* The NOTE can be any string variable */
/* Structure that contains all above data */
typedef struct {
DrawData dd;
AxesData ad;
TicData td;
EqInfo ei;
PlotInfo pi;
TEXT nt[NOTELEN];
} AllPlotData;
/* Macros for writing data to file */
#define PutDRAW(context,drawData) \
PutCk(ID_DRAW,sizeof(DrawData),context,(BYTE *)drawData)
#define PutAXES(context,axesData) \
PutCk(ID_AXES,sizeof(AxesData),context,(BYTE *)axesData)
#define PutTICS(context,ticData) \
PutCk(ID_TICS,sizeof(TicData),context,(BYTE *)ticData)
#define PutEQUN(context,eqInfo) \
PutCk(ID_EQUN,sizeof(EqInfo),context,(BYTE *)eqInfo)
#define PutTYPE(context,plotInfo) \
PutCk(ID_TYPE,sizeof(PlotInfo),context,(BYTE *)plotInfo)
#define PutNOTE(context,note) \
PutCk(ID_NOTE,NOTELEN,context,note)
/* Definitions for PlotInfo structure */
/* Surface */
#define XONLY 0
#define YONLY 1
#define XANDY 2
/* AxesType */
#define AXESTYPENONE 0
#define AXESTYPESTAR 1
#define AXESTYPEBOX 2
/* RotationOrder */
#define ROTATEXYZ 0
#define ROTATEXZY 1
#define ROTATEYXZ 2
#define ROTATEYZX 3
#define ROTATEZXY 4
#define ROTATEZYX 5
/* Symbolic representation */
/*
3DPL ::= "FORM" #{ "3DPL" [DRAW] [AXES] [TICS] EQUN* [TYPE] [NOTE]* }
DRAW ::= "DRAW" #{ DrawData }
AXES ::= "AXES" #{ AxesData }
TICS ::= "TICS" #{ TicData }
EQUN ::= "EQUN" #{ EqInfo }
TYPE ::= "TYPE" #{ PlotInfo }
NOTE ::= "NOTE" #{ UBYTE* }
*/