Technical Details

Adding your own functions to the expression parser:
The file "Expression.m" contains the relevant code. Please note that I did not write this object. It was taken from the 'graph' demo app included with NeXTStep Developer. You must make 3 changes to add a function: 
1) add an entry in the function table containing name, C name, and number of parameters
2) add a prototype for your c function with the other prototypes
3) add the code for your function to the end of Expression.m (with the others)

If you do this, let me know, and I'll add your function to the next release version ...

Mapping more interesting things to the 3d surface or x/y/z labels:
When you do a surface map and/or enable labels, several useful files are written to /tmp/<username>. 'plot3d.tiff' is a square, 24bit tiff image for surface/floor maps. 'plot3dxyz.tiff' is a square 400X400 tiff image spilt into 3 regions for x,y and z axes. Each of these files also has a corresponding .tx file which is a texture for use with renderman. 'plot3d.rib' contains the renderman command used to convert a tiff image to a .tx file. 

To customize the surface or x/y/z maps:
1) generate a .rib file for your 3d plot
2) edit the .tiff files in /tmp/<username> (they MUST be square and have 24 bits!!!)
3) edit /tmp/<username>/plot3d.rib so it converts whichever image you edited.
4) /usr/prman/prman /tmp/<username>/plot3d.rib
5) Run prman on the rib file you generated.