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 Ian, > I've discovered that points of a plot are not being plotted centred around > the correct position. Instead they're plotted with the lower left corner at > that position. I'm using a DisplayImplJ2D to show a scatterplot of > (index->(x,y,z,label)). You can easily verify this by changing the point > size of a plot. I'm under pressure right now with some other stuff, so I'm > hoping someone else who knows the VisAD code better could fix it more > easily. Thanks for finding this. The fix is in the visad_src-2.0.jar and visad.jar files at: ftp://ftp.ssec.wisc.edu/pub/visad-2.0/untested/ > Also, I'm plotting both points and labels. Is it really necessary to force > only one renderer to be employed? As it is it seems I have to create a > completely separate set of types (index->(textX,textY,textLabel)) to display > my text. I'm sharing the same data values for the separate data reference, > but I would have thought it common to do something like this, and it seems a > shame to be going through all the coordinate transformations multiple times. > But that bothers me less than the fact that my app has to manage all the > separate maps and controls and axes for such a simple requirement. The approach of most visualization systems is to have lists of functions for all the most common operations, such as plotting points with labels. Those systems also generally have enumerated lists of the various types of data they handle. NCAR Graphics and McIDAS are classic examples of such systems. The VisAD approach to generality is different. It defines a few basic elements that can be combined to create arbitrary data and displays. This is ultimately much more flexible, but is not as convenient as the long list of options. We are developing Python libraries for supporting the more convenient list of options approach. Furthermore, when VisAD's reductionist approach lacks efficiency, it allows applications to define custom DataRenderers. > I'm also concerned about the order that my various data references are > rendered. Ugo's tutorial example for showing isocontours over an image > works correctly, adding the data_ref first and then the iso_data. But I'm > finding that in order to have my text on top of my points I'm having to add > the data reference for my text first, and then the data reference for my > points. So that must mean that the rendering order is actually defined by > some other means that I'm unaware of. How _is_ the rendering order defined? In a DisplayImplJ2D, depictions using points and lines are rendered after depictions using triangles and textures, so that points and lines will be in front of triangles and textures. Within these two general categories, data are rendered in the INVERSE order of their addReference() calls. In a DisplayImplJ3D, data are rendered in the order of their addReference() calls (this inconsistency with DisplayImplJ2D was caused by confusion with early versions of Java3D). In a DisplayImplJ3D with a TwoDDisplayRendererJ3D, implicit ZAxis offsets are used to put points and lines in front of triangles and textures. > And one last thing. The text control allows me to control justification, > but I'd also like to offset the text slightly by a consistent amount and I > don't see an easy way to do so. The need for this is clear if I'm drawing > both points and text and I don't want them to overlap. You can offset your text (or other data depictions) spatially by ScalarMaps and ConstantMaps to Display.XAxisOffset, Display.YAxisOffset and Display.ZAxisOffset. Good luck, Bill
visad
archives: