Jonathan, I think we are in pretty good shape already with measures, bounding boxes, and axes all being able to be set up with ticks and labels and such. So probably what we want to do for a "plot3D" object is simply allow an association of those with an isosurface. I don't know that we need anything else done with the isosurface itself.

In general we probably need some setting that allows scaling to be done based on a surface. Perhaps:

zoom $isosurfaceId 0

more comments below...

On Sat, Dec 19, 2009 at 10:09 PM, Jonathan Gutow <> wrote:
I think these questions are primarily for Bob.

I'm starting to look at the plot3D class and think about what would
need to be extracted from surfaces provided as meshes/jvxl to plot and
scale them.  I haven't looked at this portion of the code in detail
before so have a few questions:

1) As we load isosurfaces do we permanently store max and min values
for each coordinate anywhere?  So far I haven't found them stored in
anything as long lived as the isosurface.  I see a couple of places
where the isosurface is read to determine these parameters.  Do we
want to do this everytime?  Seems to me that for plotting purposes
where we will be choosing scale based on this we should keep permanent
records for each dimension.

To date there hasn't been any real use for that, so it hasn't been calculated. (What you may be seeing is a report coming out of the atomDataReader for molecular surfaces and such.) But it would be easy enough to calculate from the vertex list.

But it's easy enough -- just two Point3f values.

2) Other things I am considering to have in the plot3D object are:
labels for each degree of freedom (for axes labels)

I'm starting to wonder if we need a special object or not. Are you sure all this can't be done using a bounding box? Coordinates are the property of the applet in general, not a specific model or surface. And you can position a bounding box anywhere you want. I was hoping the bounding box object would suffice here. (But, yes, it could use labels as well, which it does not have right now.)

I'm thinking something like

boundbox $isosurface1

that would instantly pop up an unscaled box that could be customized. Or maybe that would be

isosurface1 boundbox .....

x:y:z aspect ratios (default 1:1:1 or so bounding box fills window?)

This is all set for the bounding box now. Or, more generally, "measures" -- which can be positioned anywhere one wants. They can be scaled in any way you want and start at a given value as well.

So maybe a plot3D object would simply allow for three perpendicular measures to be added easily.

nticksmaj, nticksmin to specify the number of major and minor ticks
number format for axes scales

This is all set for bounding box and measures. major, minor, and subminor; string or number formats for axes scales are in.

units for each axis 

Maybe units are just part of the label? Not all plots need units.
3) This has also got me thinking about a more general plot object.
How about a generic plot object for objects of any number of
dimensions?  The basic idea is that you could specify which triple of
dimensions to use for the x,y,z triplet and use a fourth dimension to
specify a magnitude at a point (plotable as a color intensity, scaled
spheres or used to produce an isosurface at some level), a fourth and
fifth dimension to specify a complex value at a point (not sure how to
plot that...scaled spheres of different colors?), or a fourth, fifth
and sixth dimension to plot a vector field.  The key idea being that
we could choose the which triple, qradruple, pentuple or hextuple to
plot out of any n-tuple.

Yes, this is what Andy Hanson and I were working on this past summer. We haven't taken it further, but it's basically "Jmol-nD". The interesting thing to implement is 4-D rotations. :)




                         Dr. Jonathan H. Gutow
Chemistry Department                       
UW-Oshkosh                                           Office:920-424-1326
800 Algoma Boulevard                                 FAX:920-424-2042
Oshkosh, WI 54901

This SF.Net email is sponsored by the Verizon Developer Community
Take advantage of Verizon's best-in-class app development support
A streamlined, 14 day to market process makes app distribution fast and easy
Join now and get one step closer to millions of Verizon customers
Jmol-developers mailing list

Robert M. Hanson
Professor of Chemistry
St. Olaf College
1520 St. Olaf Ave.
Northfield, MN 55057
phone: 507-786-3107

If nature does not answer first what we want,
it is better to take what answer we get.

-- Josiah Willard Gibbs, Lecture XXX, Monday, February 5, 1900