Unidata - To provide the data services, tools, and cyberinfrastructure leadership that advance Earth system science, enhance educational opportunities, and broaden participation. Unidata
         
  advanced  
 

Re: linewidth of box, docs for ScarlarType names, data point in the same pixels

m huang wrote:
> 
> I would like to know how to change the line widths of
> the 2D box (the frame around the plot, it's perhaps not
> onlt a 2D plot question) and scales. GraphicsModeControl*
> has a method to change linewidth but it is only for the
> data lines. It seems me that VisAD

In the next release, the GraphicsModeControl.setLineWidth()
method will change line widths for the box and cursor. We'll
have to think about scales.

> I know there are some restrictions as what characters
> cannot be used in a name for ScalarType (white space,
> ".", etc) is documented officially.

The illegal characters are " ", ".", "(" and ")". Note
the ScalarType.alias() method allows applications to set
arbitrary alias Strings for displays.

> If I want to draw lines to connect a lot of data points
> sequentially according to the indix. A large number
> of the data points are so close to the following points
> that they actually fall in the same pixel. Does visAD (its
> DisplayRenderers, I guess) keep an array of device coordinates
> (in pixels) for all the points to be drawn, or only for those in
> different pixes?

No, VisAD displays are geomtery based. It leaves pixels to
graphics API rendering code and doesn't know about them in
general (except VisAD itself implements a rendering loop
for DisplayImplJ2D).

Culling lines based on pixel coincidence would require
retransform of data into depictions when users panned
and zoomed, which would be an unaceptable performance
hit.

> If it keep all the coordinates, does VisAD try to draw lines
> between dots in the same pixel?

In a DisplayImplJ3D, VisAD leaves this to Java3D.
In a DisplayImplJ2D, yes for the reason described above.

> Does VisAD use
> java.awt.graphics.drawPolyLine(int[], int[], int)
> to draw these lines?

In a DisplayImplJ3D, VisAD leaves this to Java3D.
In a DisplayImplJ2D, no. For width = 1 lines it uses:

  Graphics2D.draw(new Line2D.Float(...))

> If yes, does anyone know if awt actually try
> to draw all these lines? (this last question is not a VisAD
> question). If VisAD does not keep points of the same
> device coordinates, people who can expect drawing time to
> be somewhat proportional to plot size (i.e. thumbnails can
> be cheap to have in terms of memory and time consumption)

You can make thumbnails of image data [i.e., MathType ((x, y) -> value)]
by resampling and use those. You can make thumbnails of complex
data using DisplayImpl.getImage(). But as I described above,
dynamically culling lines based on pixel coincidence would be a
terrible performance hit for panning and zooming.
 
Bill


 
 
  Contact Us     Site Map     Search     Terms and Conditions     Privacy Policy     Participation Policy
 
National Science Foundation (NSF) UCAR Community Programs   Unidata is a member of the UCAR Community Programs, is managed by the University Corporation for Atmospheric Research, and is sponsored by the National Science Foundation.
P.O. Box 3000     Boulder, CO 80307-3000 USA     Tel: 303-497-8643     Fax: 303-497-8690