Re: Useability issues

> Thanks to VisAD and Bill and Steve I have nearly completed my textual
> data mining visualization project.  I'm now working on fine-grain
> usability issues.  In particular I have a 3-D surface that represents
> the number of documents related to a particular word stem.  As I move a
> yellow dot across the surface the corresponding stem is highlighted in
> a JFC table.  The usability problem I am having relates to trying to
> match the dot with a peak in the 3-D surface.  I can move the dot to
> what I think is the peak and if I rotate the surface I can see I've
> missed it by a mile (well not quite that far).  If I keep moving the
> dot and spinning the surface I can usually intersect the dot with a
> particular peak on the surface after about 5 or 6 tries.  This problem
> is illustrated here:
>
>   http://www.wizards.dupont.com/cristy/images/global-som.jpg
>
> One way to improve this is to show three different views of the surface
> and move the dot in one window and visualize it's movements in the
> other two.  The problem with this idea is screen real-estate.  There
> just isn't enough for three views while still having the surface large
> enough to easily distinguish detail.
>
> Another way would be to have the dot cast a shadow on the surface to
> help give visual cues as the dot moves toward a surface.  Can this be
> done?  How?
 
Yes.  You need two 'dot' objects displayed.  One is your current
RealTuple displayed with DirectManipulationRendererJ3D that you
drag, the other has the RealTupleType (X, Y, Documents) and is
displayed in some distinctive color.  In the CellImpl.doAction
method for your draggable 'dot', extract the X and Y components
of the RealTuple that implements the dot, make an (X, Y) RealTuple
out of them and pass it to the evaluate method of your FlatField
to get the corresponding Documents value.  Then construct a new
RealTuple value (X, Y, Documents) for the other dot.  With some
luck this should appear to move on the surface (you may need to
add some epsilon to the Documents value to keep it just above
the surface).
 
> Right now the surface is monochrome.  I would like to force the peaks
> to be almost pure white as if it had snow.  It sort-of does that now
> but is not dramatic enough to give the proper visual cues.
 
When you map a RealType to RGB, you can get the ColorControl
from the ScalarMap (see examples/DisplayTest.java case 12) and
set a color table to give you the color you want.  You can also
embed a LabeledRGBWidget in your GUI and use it to adjust colors
as run time, as in DisplayTest case 12.
 
> Another problem I am having is when there are just a few stems the
> surface needs smoothing.  Is there an easy operation to effect this?
> This problem is illustrated here:
>
>   http://www.wizards.dupont.com/cristy/images/local-som.jpg
 
Tom Rink is currently working on a derivative method for the
Function interface (including implementations for FieldImpl
and FlatField), and filter operations could be next.  In the
mean time, you could hack a simple low-pass filter by
resampling your FlatField to a Linear2DSet (use the resample
method), extracting the values (use the getValues method), do
a simple filter (interpreting the values as a 2-D array), and
put the values back into the FlatField (use the
'public void setSamples(float[][] range)' method).
 
> As always, thanks in advance for any help you may offer.
 
I want to set up a section of the VisAD web page that points at
cool applications.  If you have a URL that describes your work,
please let me know so I can include it.  Thanks.
 
Bill
 
----------------------------------------------------------
Bill Hibbard, SSEC, 1225 W. Dayton St., Madison, WI  53706
whibbard@xxxxxxxxxxxxx  608-263-4427  fax: 608-263-6738
http://www.ssec.wisc.edu/~billh/vis.html
 
"kill cross-platform Java by growing the polluted Java market"
   - from an internal Microsoft planning document