Re: Brushing Data in VisAD

Hi Dave,

>       I'd like to use VisAD to perform brushing of data across multiple
> graphs, similar to what is done in many statistical packages, but I am not
> sure if the RubberBandBoxRendererJ3D class is the right one to use. In the
> 2D case with different scatterplots of the same data, I would like to
> rubberband a rectangle (ideally, lasso an irregular shape around a set of
> points) in one scatterplot and highlight (e.g., change color, size, shape,
> etc.) the selected data in all of the scatterplots on mouse button release.
> In a 3D brush and spin case with a 3D scatterplot and different related 2D
> scatterplots, I'd like to rubberband a rectangle on the 3D scatterplot and
> highlight the data (that is within the projection of the rectangle) in the
> 3D and all 2D scatterplots.
>       I would appreciate any advice on how to accomplish this, and an
> example would be great, as I did not see any test cases for
> RubberBandBoxRendererJ3D. Are there any issues with changing the attributes
> of a subset of the data? Thanks much!

You can find an example of using RubberBandBoxRendererJ3D in
its own main() method, and experiment with it by:

  java visad.bom.RubberBandBoxRendererJ3D

or even try:

  java visad.bom.RubberBandBoxRendererJ3D radius

to see how you can draw a rubber band box on any 2-D
manifold embedded in 3-D.

VisAD allows you to link the same DataReference to multiple
DisplayImpls to get multiple views. However, if you want to
select values in one display via a rubber band box, you will
have to explicit code the test and compute a new Data object
that includes only selected points.

Note you can draw irregular curves (on arbitrary 2-D
manifolds) using visad.bom.CurveManipulationRendererJ3D.
Its main() method provides examples of use. You can also
use the visad.DelaunayCustom.inside() methods to determine
if a 2-D point is inside a 2-D curve drawn by a user. Note
however you need to write the code to project from 3-D
down to 2-D.

If you are very energetic, you might define a DisplayTupleType
of 3 spatial DisplayRealTypes, related to (XAxis, YAxis, ZAxis)
by a CoordinateSystem that changes dynamically depending on the
user's rotation matrix, and draw your rubber band box or curve
in these dynamic spatial DisplayRealTypes (I'm not sure if such
dynamic display CoordinateSystems will work without trying it,
but can't think of any reason why not). This would allow drawing
on a plane always parallel to the screen. Hard to program.

Cheers,
Bill
----------------------------------------------------------
Bill Hibbard, SSEC, 1225 W. Dayton St., Madison, WI  53706
hibbard@xxxxxxxxxxxxxxxxx  608-263-4427  fax: 608-263-6738
http://www.ssec.wisc.edu/~billh/vis.html


  • 2001 messages navigation, sorted by:
    1. Thread
    2. Subject
    3. Author
    4. Date
    5. ↑ Table Of Contents
  • Search the visad archives: