NOTICE: This version of the NSF Unidata web site (archive.unidata.ucar.edu) is no longer being updated.
Current content can be found at unidata.ucar.edu.
To learn about what's going on, see About the Archive Site.
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
visad
archives: