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 Julia,
I have data sets where most values are very low with only a few but very high peaks (up to 10^10). Sometimes it happens that in the 3D display the peaks do not seem to be displayed according to their actual height but much lower. With the axes scaled according to the max value this is obvious. The red peaks in the attached screenshot should be several 1000 units high but they are displayed only as high as 10 to 15.What do I have to change for them to be displayed correctly?
I wrote a little application to test this (below), but I can't seem to duplicate your problem.
If you could send some example code to demonstrate this issue, it would be very helpful.
Thanks, Curtis -- // PeaksTest.java import java.awt.BorderLayout; import javax.swing.*; import visad.*; import visad.java3d.*; import visad.util.Util; public class PeaksTest { public static void main(String[] args) throws Exception { System.out.println("Constructing field..."); int size = 16; float[][] samples = new float[1][size * size]; for (int y=0; y<size; y++) { for (int x=0; x<size; x++) { int ndx = y * size + x; if (100 * Math.random() < 5) { // 5% are spikes samples[0][ndx] = (float) (1e5 * Math.random() + 1e5); System.out.println("Spike at " + x + "," + y + ": " + samples[0][ndx]); } else { // 95% are small samples[0][ndx] = (float) (10 * Math.random() + 1); } } } RealType x = RealType.getRealType("x"); RealType y = RealType.getRealType("y"); RealType value = RealType.getRealType("value"); RealTupleType xy = new RealTupleType(x, y); FunctionType type = new FunctionType(xy, value); Integer2DSet set = new Integer2DSet(xy, size, size); FlatField field = new FlatField(type, set); field.setSamples(samples, false); System.out.println("Building display..."); DisplayImplJ3D display = new DisplayImplJ3D("display"); DataReferenceImpl ref = new DataReferenceImpl("ref"); ref.setData(field); display.addMap(new ScalarMap(x, Display.XAxis)); display.addMap(new ScalarMap(y, Display.YAxis)); display.addMap(new ScalarMap(value, Display.RGB)); display.addMap(new ScalarMap(value, Display.ZAxis)); display.addReference(ref); display.getGraphicsModeControl().setScaleEnable(true); JFrame frame = new JFrame("Peaks Test"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); JPanel p = new JPanel(); p.setLayout(new BorderLayout()); frame.setContentPane(p); p.add(display.getComponent()); frame.pack(); Util.centerWindow(frame); frame.show(); } }
visad
archives: