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.

Range not changing on Display.IsoContour

Hello VisAD comunnity,

I am facing a problem with the Display.IsoContour ScalarMap. In few words, when I change the values, the Range dosen´t ajusts itself like it does when I use another mapping like Display.RGB. It sounds like I am missing something, but can be a bug also.

To make thing more clear, I am sending a single test that demonstrates the problem.

Thanks already,

Cicero A. W. Zandoná



//Code starts here

import visad.*;
import visad.java2d.DisplayImplJ2D;
import java.rmi.RemoteException;
import javax.swing.JFrame;

public class NoRefresh {
private RealType longitude, latitude, sombreado;

// Para juntar lat e lon private RealTupleType domain_tuple;


   // função (domain_tuple -> sombreado )
   private FunctionType func_dom_sombreado;

   // Set para sombreado
   private Set set_sombreado;

   // FlatField dos dados da sombreado
   private FlatField ff_sombreado;

   // DataReference das sombreado
   private DataReferenceImpl ref_sombreado;

   // O display e seus mapas

   private DisplayImpl display;
   private ScalarMap latMap, lonMap, sombreadoMap;
static int NLINES = 30; /** Creates a new instance of Display */
   public NoRefresh()  throws RemoteException, VisADException {
// Create the quantities
       // Use RealType(String name);

       latitude = RealType.Latitude;
       longitude = RealType.Longitude;

       domain_tuple = new RealTupleType(latitude, longitude);

       sombreado = RealType.getRealType("sombreado");


       // Cria a função (domain_tuple -> sombreado )
       func_dom_sombreado = new FunctionType( domain_tuple, sombreado);

//Display 2D
       display = new DisplayImplJ2D("display1");
//Para Displays 2D
       latMap = new ScalarMap( RealType.Latitude, visad.Display.YAxis);
lonMap = new ScalarMap( RealType.Longitude, visad.Display.XAxis ); display.addMap( latMap );
       display.addMap( lonMap );
//Scalar Maps sombreadoMap = new ScalarMap( sombreado, visad.Display.IsoContour ); ScalarMap sombreadoMapColor = new ScalarMap( sombreado, visad.Display.RGB );

       display.addMap( sombreadoMap );
       display.addMap( sombreadoMapColor );
//Setting Contour Fill ContourControl isoControl = (ContourControl) sombreadoMap.getControl();
       isoControl.setContourFill(true);
System.out.println(sombreadoMap.isAutoScale());

       ref_sombreado = new DataReferenceImpl("ref_sombreado");

       // Adicionar ao display
       display.addReference( ref_sombreado );
} public void plotaSombreado(float[][] domain, float[][] vals)
       throws RemoteException, VisADException {
display.removeReference(ref_sombreado); sombreadoMap.resetAutoScale(); set_sombreado = new Gridded2DSet(domain_tuple, domain, NLINES, NLINES); ff_sombreado = new FlatField( func_dom_sombreado, set_sombreado); ff_sombreado.setSamples( vals ); ref_sombreado.setData( ff_sombreado ); display.addReference( ref_sombreado );
   }
public visad.DisplayImpl getDisplay() {return display;} public static void main(String[] args) throws RemoteException, VisADException { NoRefresh noR = new NoRefresh(); //Janela que mostrará o display
       JFrame jframe = new JFrame("Display do Metvis");
       jframe.getContentPane().add(noR.getDisplay().getComponent());
       jframe.setSize(610, 610);
       jframe.setVisible(true);
float[][] matrix_1 = new float[1][NLINES*NLINES]; float[][] matrix_2 = new float[1][NLINES*NLINES]; float[][] domain = new float[2][NLINES*NLINES]; //Creating Domain
       for(int c = 0; c < NLINES; c++)
         for(int r = 0; r < NLINES; r++){
           domain[0][ c * NLINES + r ] = 0f + r;
           domain[1][ c * NLINES + r ] = 0f+ c;
         }
//Creating Values
       for(int c = 0; c < NLINES; c++)
         for(int r = 0; r < NLINES; r++){
matrix_1[0][c * NLINES + r] = (float) (Math.sin(r*200)*Math.cos(c*200)); matrix_2[0][c * NLINES + r] = (float) (2*Math.sin(r*200)*Math.cos(c*200));
       }
System.out.println("Drawing Data_1");
       noR.plotaSombreado(domain, matrix_1);
//Waits some time.
       try{ Thread.sleep(5*1000); }
       catch (InterruptedException ex) {}
System.out.println("Drawing Data_2 = Data_1*2"); noR.plotaSombreado(domain, matrix_2); }
}


  • 2003 messages navigation, sorted by:
    1. Thread
    2. Subject
    3. Author
    4. Date
    5. ↑ Table Of Contents
  • Search the visad archives: