This is Plot3DView.h in view mode; [Download] [Up]
/* Plot3dView.h Copyright 1992 Steve Ludtke */
#import <3Dkit/N3DCamera.h>
#define SS .01 /* symbol size. 1.0 would cause the symbols to be */
/* as large as the view */
#define MAXSETS 5 /* maximum number of sets, changing this number */
/* requires IB changes as well */
#define NFN 5 /* currently this is redundant. Number of active */
/* data sets */
#define TIMESTEP .1 /* Time in sec between updates */
#define MAXGRID 250 /* maximum x and y grid components */
/* 3d point structure */
typedef struct {
float x,y,z;
} Point;
#define MM_none 0
#define MM_height 1
#define MM_grad 2
#define MM_nextset 3
#define OVER_surf 1
#define OVER_base 2
#define OVER_csurf 4
#define RF_axis 1
#define RF_backs 2
#define RF_floor 4
#define RF_ticks 8
#define RF_planes 16
#define RF_labels 32
#define RF_persp 64
#define F_EQN 1
#define F_DATA 2
#define F_SDATA 3
#define F_DEM 4 /* digital elevation map */
/* data set preferences structure (incudes pointer to actual data) */
typedef struct {
char sym; /* -1 means don't plot, else 0<=sym<=7 */
Point *fileData; /* data from a file, NULL if equation mode */
Point *data; /* data to be displayed. In file mode it */
/* contains the visible subset of the data */
Point *Sdata; /* Spherical data to be displayed (mode 7) */
RtColor *color;
short *demData; /* raw DEM data */
float demx[3],demy[3],demz[2]; /* dem data limits */
int demnx,demny; /* dem mesh size */
int flag;
int nfdata; /* # points in file data */
int ndata; /* # points in data */
int nx,ny; /* grid points in x and y */
id expr; /* points to the Expression (formula eval.) */
RtColor mapcol[5];
float alpha;
unsigned char mapsel[5];
short mapmode;
} SetPref;
/* timer for spinning, etc ... */
DPSTimedEntry timer;
void itstime(DPSTimedEntry entry,double now,id call);
@interface Plot3DView:N3DCamera
{
id mode; /* mouse mode selector */
id controller; /* points to PControl */
id shape; /* shape containing 3d plot */
id ambLight;
id aLight;
id varT; /* variable text matrix */
id flagSel;
id autotick; /* flag for automatic tick spacing generation */
id tickpos; /* matrix of tick values */
id axisTitle; /* matrix of axis titles */
id aspectS;
id fontSize; /* font size selector */
float chi,theta,phi,dchi; /* viewing angles/speeds */
float lchi,ltheta; /* light angle */
float ambient; /* ambient light level */
float minX,maxX; /* current min/max values */
float minY,maxY;
float minZ,maxZ;
float aspect; /* x,y/z aspect */
RtColor flagcol[5];
RtPoint Tick0,Tick1,Tick00,Tick01; /* tick min/max for x-fer to shape */
int Rmode,Rflags,Omode;
char pscom[1000]; /* postscript buffer for DPSUserPath */
float pspath[3000]; /* increases drawing speed substantially */
float psbbox[4];
int psc; /* counter for user path */
char initflag; /* flag so timer knows the first time it's called */
SetPref pref[MAXSETS]; /* preferences for data sets */
}
-initFrame:(NXRect *)myrect;
-free;
/* rescales coord. system after size chaged */
-superviewSizeChanged:(const NXSize *)oldsize;
/* draw 3d plot */
-drawPS:(NXRect *)myrect :(int)rectCount;
/* change viewing angle */
-setAng:(float)theta :(float)chi;
/* change phi */
-setPhi:sender;
/* used to do mouse zooming and spinning */
-mouseDown:(NXEvent *)event;
/* points to controller object, usually set with IB instead */
-setcontroller:del;
/* called by timer to do one time step */
-step;
-(int)acceptsFirstMouse;
/* recalculate and display plot (and density plot, via controller) */
-zoom:sender;
/* change min/max values */
-zoomTo:(float)minx :(float)miny :(float)maxx :(float)maxy;
/* toggles dchi=0 on and off */
-togFreeze:sender;
/* Makes a surface map for a rib file*/
-makeSMap:sender;
/* dump .rib file from 3d view */
- dumpRib:sender;
/* currently does nothing */
- renderSelf:(RtToken)context;
/* sets intensity of ambient light */
- setAmbLight:sender;
/* sets intensity of distant light */
- setLight:sender;
/* sets chi of distant light */
- setLightX:sender;
/* sets theta of distant light */
- setLightY:sender;
/* sets rendering mode */
- setMode:sender;
/* prints window with white background */
- printPSCode:sender;
/* set drawing flags */
-setFlags:sender;
/* set overlay flags */
-setOverlay:sender;
-setFlagColor:sender;
-size320:sender;
-setEye:sender;
-setAsp:sender;
/* set perspective or orthographic projection */
-setProj:sender;
-tickCalc:(float)n :(float)x0 :(float)x1 :(float *)min :(float *)spa;
-(float)getTheta;
-(float)getChi;
-PRTiff:sender;
- renderTIFF:(char *)fsp;
/* reset aspect to 1:1 */
- aspect11:sender;
@end
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.