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, Here's a test program I wrote up just to display a particle doing a random walk. Jar files for the example are available at http://dods.shore.mbari.org/brian/pub/. The classes are in test.jar; the source is in test_src.jar. Run it from the command line as: java -cp test.jar;visad.jar org.mbari.test.PointVis3 The PointVis3 example is fairly simple. I've taken a slightly different approach when I need to add or remove DataReferences on the fly. To do that, I subclass JPanel and add code to initialize the DisplayImpl, RealTypes and the associated ScalarMaps and add the display to the Panel. Then I pass references of the display and RealTypes to a DataHandler class that creates the gravy that visad needs (tuples, functions, fields, etc), sets the data values, creates a DataReferenceImpl, and adds the DataReference to the display. The DataHandler class implements a listener interface, which would look something like: public interface ISomeDataListener { public void update(Point point); } The DataHandler's update method then looks something like: public void update(Point point) throws RemoteException { // Pop the new point in the top of the queue and drop the lastpoint for (int i = points.length - 1; i > 0; i--) { points[i] = points[i - 1]; } points[0] = (Point) point.clone(); // Update the data on the display try { // the getXY method is illustrated below pointsFf.setSamples(getXY()); // a FlatField } catch (VisADException e) { e.printStackTrace(); } } private float[][] getXY() { float[][] tmp = new float[2][points.length]; for (int i = 0; i < points.length; i++) { if (points[i] != null) { tmp[0][i] = (float) points[i].getX(); tmp[1][i] = (float) points[i].getY(); } else { tmp[0][i] = 0F; tmp[1][i] = 0F; } } return tmp; } The nice thing about this approach is that you can add and remove DataReferences as needed and whenever you update the data in a FlatField (with setSamples()) the display is updated. Anyway, hope that helps. Cheers B ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Brian Schlining Software Application Developer Monterey Bay Aquarium Research Institute brian@xxxxxxxxx (831) 775-1855 http://www.mbari.org/~brian ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > -----Original Message----- > From: David Homiak [mailto:dhomiak@xxxxxxxxxxxx] > Sent: Wednesday, November 07, 2001 12:36 PM > To: 'Schlining, Brian' > Subject: RE: Setting Aspect Ratio while using autoscale > > Brian, > I've been interested in visualizing real-time data (time --> value) > in VisAD as well, but am unsure of the best approach to incrementally and > efficiently add data to the Gridded1DdoubleSet (time) and FlatField > (value) > so that the DisplayImpl updates properly with each addition. Would you > mind > sharing the approach you've taken to handle this? Thanks much! > > Dave Homiak > dhomiak@xxxxxxxxxxxx > > > -----Original Message----- > > From: Schlining, Brian [SMTP:brian@xxxxxxxxx] > > Sent: Wednesday, November 07, 2001 1:15 PM > > To: 'visad-list@xxxxxxxxxxxxx' > > Subject: Setting Aspect Ratio while using autoscale > > > > I've a display that's tracking the position of several objects > continually > > in real time. The display is set to autoscale (i.e > > display.setAlwaysAutoScale(true)). My question is...Is there some way to > > fix the Aspect Ratio of the display, so that 1 unit along the x-axis is > > the same length as 1 unit along the y-axis, while using auto scaling? > > > > Cheers > > B > > ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > > Brian Schlining > > Software Application Developer > > Monterey Bay Aquarium Research Institute > > brian@xxxxxxxxx > > (831) 775-1855 > > http://www.mbari.org/~brian > > > > ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
visad
archives: