Well, guess what? It really does work! I can hardly believe it.
See http://www.stolaf.edu/people/hansonr/jmol/test/proto/new.htm
http://www.stolaf.edu/people/hansonr/jmol/test/proto/ch3cl.jvxl
contains two surfaces I found in the data file directory. It is only
7486 bytes. A bit better, I think, than the 3.6 Mb original file,
http://www.stolaf.edu/people/hansonr/jmol/test/proto/ch3cl.cub.
cutoff
nBytesData
nBytesFractions
0.05 1829 2236 compressionRatio=445.87946
0.05 1238 1518 compressionRatio=657.656
Not bad for a first try, I'd say. Can you tell any difference?
When the cube file is processed we:
1) determine which vertices are inside and which outside the surface.
2) check the 12 edges of each "voxel cube" for edges that span the
surface (have one end in and one out.
3) for each such edge, an interpolation is done to estimate the
surface point along that edge. The fractional distance from "A" to
"B" is determined.
For the JVXL format, each surface is represented by two (long) lines.
A) we simply catalog how many vertices are found outside, then inside,
then outside, then inside... the surface. This forms "line 1" of the
surface information.
39562 2 52 4 50 5 50 5 51 3 2472 4 50 6 48 7 48 8 47 8 47 ...
B) we encode the fraction as an ascii character between 35 (#) and 125
(right brace). With the one exception that (92) "\" is encoded as 33
("!") so as to allow this to be part of a quoted string someday.
(double quote is ascii 34, so it's outside the range and won't be an
issue). This is the second line of the surface information.
0g);/i9p)CIr;be/INAq8/;A3N?/RY1Iu_wcdU1.4nGIpz_###+_uBH(cyIP= ...
In this way we have identified all vertices used in the isosurface
display and nearly perfectly (within 1%) nailed the position of the
surface between any two given vertices.
More testing needed, for sure, but I thought I would share this now,
jsut cause I'm so excited.
btw: I think there's something wrong with the coloring -- reloading an
isosurface changes its color for some reason. There are several issues
with the isosurface code -- I will be checking that more thoroughly
soon. (multiple model visibility comes to mind.)
Bob
Miguel wrote:
Hi Bob,
That sounds indeed interesting and promising.
I do seem to recall (it has been a while since I played with the cube
files and my memory isn't very good :-) ), that when I tried to
reduce a cube file to 0s and 1s and set the cutoff at 0.5 (to try to
keep the file size down), the generated surfaces were very angled
looking. So I think (and didn't check) that in the code some kind of
interpolation is done, i.e., the actual values are used to generate
a smoother representation of the data.
That is correct. There is a linear interpolation that takes place to
determine the point along the segment that is closest to the surface.
** 2 minutes later **
I just looked at Isosurface.getInterpolatedValue()
It looks like I was lazy and did not actually complete this. Independent
of Bob's work, that should probably be cleaned up.
It looks like you are
capturing the result of this 'pre-processing'.
Yes, it looks like that is what Bob is doing.
Miguel
-------------------------------------------------------
Using Tomcat but need to do more? Need to support web services, security?
Get stuff done quickly with pre-integrated technology to make your job easier
Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
http://sel.as-us.falkag.net/sel?cmd_______________________________________________
Jmol-developers mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/jmol-developers
--
Robert M. Hanson, [EMAIL PROTECTED], 507-646-3107
Professor of Chemistry, St. Olaf College
1520 St. Olaf Ave., Northfield, MN 55057
mailto:[EMAIL PROTECTED]
http://www.stolaf.edu/people/hansonr
"Imagination is more important than knowledge." - Albert Einstein
-------------------------------------------------------
Using Tomcat but need to do more? Need to support web services, security?
Get stuff done quickly with pre-integrated technology to make your job easier
Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
_______________________________________________
Jmol-developers mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/jmol-developers