Due to the current gap in continued funding from the U.S. National Science Foundation (NSF), the NSF Unidata Program Center has temporarily paused most operations. See NSF Unidata Pause in Most Operations for details.
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: